powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Почему программа перестает подключаться к MySQL?
19 сообщений из 19, страница 1 из 1
Почему программа перестает подключаться к MySQL?
    #39033235
VaneS Ri_lax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, написал простую программку, которая открывает сервер сокет и ждет подключения клиента, после подключения клиента создает новый поток и в новом потоке подключается к СУБД MySQL, делает выборку данных и отправляет их клиенту. Все работает ок, но почему то через некоторого X времени работы программы, при подключении к серверу MySQL выбрасывается исключение:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
Aug 20, 2015 2:46:33 PM Main mysqlconnect
SEVERE: null
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:389)
        at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1038)
        at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:338)
        at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2237)
        at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2270)
        at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2069)
        at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:794)
        at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:389)
        at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399)
        at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325)
        at java.sql.DriverManager.getConnection(DriverManager.java:664)
        at java.sql.DriverManager.getConnection(DriverManager.java:247)
        at Main.mysqlconnect(Main.java:43)
        at Main.list(Main.java:126)
        at Main.run(Main.java:210)
Caused by: java.net.ConnectException: Connection timed out
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
        at java.net.Socket.connect(Socket.java:589)
        at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:213)
        at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:297)
        ... 17 more

Exception in thread "Thread-0" java.lang.NullPointerException
        at Main.list(Main.java:128)
        at Main.run(Main.java:210)


Перезапуск программы или самого сервера MySQL не решают проблему. Однако если ребутнуть машину полностью, все снова хорошо начинает работать... В чем может быть проблема?
серверная часть работает на CentOS 6.5
Заранее большое спасибо!
...
Рейтинг: 0 / 0
Почему программа перестает подключаться к MySQL?
    #39033465
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попингуй и по-телнеть сервер в момент когда в логах будет возникать java.net.ConnectException: Connection timed out.
И с новыми симптомами можно наверное топик переносить в обсуждение Linux/MySQL.
...
Рейтинг: 0 / 0
Почему программа перестает подключаться к MySQL?
    #39033610
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VaneS Ri_lax,

Если есть возможность, то используйте вместо MySQL PostgreSQL.
Он ведет себя более предсказуемо.
И работать с ним приятнее.
Хотя и раздражает своей излишней "строгостью".
...
Рейтинг: 0 / 0
Почему программа перестает подключаться к MySQL?
    #39033615
Partisan M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulЕсли есть возможность, то используйте вместо MySQL PostgreSQL.

С тем же основанием можно было рекомендовать использовать PostgreSQL вместо Oracle. У меня программа должна была работать с Oracle продолжительное время, но соединение само собой закрывалось через 15 минут. Я естественно разобрался и устранил.
...
Рейтинг: 0 / 0
Почему программа перестает подключаться к MySQL?
    #39033668
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulVaneS Ri_lax,

Если есть возможность, то используйте вместо MySQL PostgreSQL.


Это просто капец какой-то. Рука-лицо. У автора нет проблем в выбором DBMS. У него проблема
в стеке взаимодействия.

Это как фокусника позвать если грустно.
...
Рейтинг: 0 / 0
Почему программа перестает подключаться к MySQL?
    #39033794
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonmad_nazgulVaneS Ri_lax,

Если есть возможность, то используйте вместо MySQL PostgreSQL.


Это просто капец какой-то. Рука-лицо. У автора нет проблем в выбором DBMS. У него проблема
в стеке взаимодействия.

Это как фокусника позвать если грустно.

Это вариант! ;-)

А так. Зачем иметь проблемы "в стеке взаимодействия", когда можно их просто не иметь, взяв другой инструмент.
Просто у меня с MySQL постоянные проблемы "в стеке взаимодействия", когда с PostgreSQL таких проблем нет. ;-)
...
Рейтинг: 0 / 0
Почему программа перестает подключаться к MySQL?
    #39033870
VaneS Ri_lax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне интересно другое, почему перезагрузка MySQL и моей программы не помогают. Лечится только перезагрузкой самой машины.
Почему если запустить эту же программу на windows то все ок работает.
В какую сторону копать? Переход на другую СУБД не возможен...
...
Рейтинг: 0 / 0
Почему программа перестает подключаться к MySQL?
    #39034008
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VaneS Ri_laxМне интересно другое, почему перезагрузка MySQL и моей программы не помогают. Лечится только перезагрузкой самой машины.
Почему если запустить эту же программу на windows то все ок работает.
В какую сторону копать? Переход на другую СУБД не возможен...

Проблема в машине может быть ? Драйвер глючит, сетка тоже может быть.
Как минимум нужно убедиться что с машиной и сетью все в порядке.
Поставить БД и приложение на другую машину и погонять.

Вполне реально может быть глючит изернет карта, или драйвер
Можно на машину дополнительно повесить отдельную изернет карту.
...
Рейтинг: 0 / 0
Почему программа перестает подключаться к MySQL?
    #39034081
morewind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VaneS Ri_lax,

На сервере/клиенте нет настроек firewall вида "количество_соединений/период"?
http://www.cyberciti.biz/faq/iptables-connection-limits-howto/
Иногда настраивают "не больше 10 соединений с одного IP в минуту", потом забывают про это и мучаются.
...
Рейтинг: 0 / 0
Почему программа перестает подключаться к MySQL?
    #39034684
VaneS Ri_lax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lleming,

Да вроде с машиной и с сеткой все в порядке, пытаюсь подключиться к БД на том сервере со своего компа все ок работает.
Установил СУБД на другой выделенный сервер и пытаюсь чтобы он конектился не к локальной базе, а к удаленной, тоже не работает...
У меня есть такое предположение:
Сервер принимает запросы от клиента, создает новый поток и в новом потоке я регистрирую драйвер вот так:
Код: java
1.
DriverManager.registerDriver(new com.mysql.jdbc.Driver());


далее он делает запрос к бд, отдает клиенту ответ и поток завершает свою работу...
Код: java
1.
[SRC JAVA]DriverManager.registerDriver(new com.mysql.jdbc.Driver());

[/SRC]
Я так понимаю это статический метод, может ли это как то повлиять на такое поведение?
Хотя думаю после завершения работы приложения все должно уничтожаться.

Раньше приложение работало примерно 12 - 15 часов, потом 3-5, а сейчас перезагрузка машины вовсе не помогает, хотя работает та же программа.
Ума не приложу что это может быть...
...
Рейтинг: 0 / 0
Почему программа перестает подключаться к MySQL?
    #39034686
VaneS Ri_lax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
morewind,

Нет, никаких подобных настроек у нас нет.
...
Рейтинг: 0 / 0
Почему программа перестает подключаться к MySQL?
    #39034787
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VaneS Ri_lax,

Раньше приложение работало примерно 12 - 15 часов, потом 3-5, а сейчас перезагрузка машины вовсе не помогает, хотя работает та же программа.

вот это поведение странное.

Чистый jdbc ? Никаких пулов ?
Как вариант может быть такое.

Неверная работа с БД.
JDBC соединение к БД не закрывается правильно или не закрывается совсем.
Открывается новое соединение с БД при каждой транзакции.

Тогда такое вполне допустимо.
Сначала был одни пользователь и хватало соединений а теперь с десяток и лимит соединений быстро исчерпывается.

Хотя этот вариант не объясняет "а сейчас перезагрузка машины вовсе не помогает"
...
Рейтинг: 0 / 0
Почему программа перестает подключаться к MySQL?
    #39034793
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Да вроде с машиной и с сеткой все в порядке, пытаюсь подключиться к БД на том сервере со своего компа все ок работает"
Долго ли все работает ОК?
Может просто не успевает проявиться проблема.

еще можно посмотреть (в этот момент соединения с БД)
https://msdn.microsoft.com/en-us/library/aa560610(v=bts.20).aspx

или взять какой ниудь сниффер и посмотреть траффик, или запустить через прокси и смотреть что происходит.
...
Рейтинг: 0 / 0
Почему программа перестает подключаться к MySQL?
    #39034800
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здесь тоже целый интересный тред

http://stackoverflow.com/questions/2983248/com-mysql-jdbc-exceptions-jdbc4-communicationsexception-communications-link-fai

оказывает если JVM out of heap тоже может быть такое, у когото версия jdbc драйвера неподходящая была.

там кстати туча вариантов.
...
Рейтинг: 0 / 0
Почему программа перестает подключаться к MySQL?
    #39035276
VaneS Ri_lax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем решил проблему гениально. Правда не знаю почему было раньше такое поведение, но сейчас все работает)))
В общем раньше моя программа подключалась к MySQL по localhost, пытался писать и 127.0.0.1 Были такие же глюки.
Потом прописал белый внешний IP машины и о чудо, все нормально начало работать... Почему так, объяснить не могу... Но вот вторые сутки вроде как полет нормальный.
...
Рейтинг: 0 / 0
Почему программа перестает подключаться к MySQL?
    #39035429
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот чудик! На коротком стеке работало нестабильно - ты стек удлинил и радуешся.
Лучше-б нашёл где хомут висит. Может ты в Java Security "грязными руками" полез и потом забыл.
...
Рейтинг: 0 / 0
Почему программа перестает подключаться к MySQL?
    #39035645
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если под белым внешним IP имеется ввиду IP доступный снаружи из Интернета, то как то не мудро выставлять БД наружу.
...
Рейтинг: 0 / 0
Почему программа перестает подключаться к MySQL?
    #39035745
VaneS Ri_lax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я не радуюсь, я уже 2-ю неделю пытаюсь разобраться... Как оказалось дело было в настройках MySQL. Доступ был доступен только с внешнего адреса.
Сейчас все стабильно все работает на локальном хосте.
Но почему раньше работало ответа пока нет...
...
Рейтинг: 0 / 0
Почему программа перестает подключаться к MySQL?
    #39038907
morewind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VaneS Ri_laxЯ не радуюсь, я уже 2-ю неделю пытаюсь разобраться... Как оказалось дело было в настройках MySQL. Доступ был доступен только с внешнего адреса.
Сейчас все стабильно все работает на локальном хосте.
Но почему раньше работало ответа пока нет...

В настройках пользователя mysql есть поля "host, user, max_connections, max_user_connections", возможно для пары localhost:username установлено ограничение, а для внешнего подключения этого же пользователя - нет (или оно пока не превышено - раз все работает).

Соответствующий раздел документации.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Почему программа перестает подключаться к MySQL?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]