ОШИБКА JDBC: 08S01 иногда случается - PullRequest
1 голос
/ 26 июня 2011

Соотношение SQLState: 08S01, поток: 0

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: сбой канала связи

Последний пакет, успешно отправленный на сервер, был0 миллисекунд назад.Драйвер не получил никаких пакетов с сервера.... подробнее

Причина: java.net.SocketException: Нет доступного буферного пространства (достигнуто максимальное количество подключений?): подключиться по адресу java.net.PlainSocketImpl.socketConnect (собственный метод) по адресу java.net.PlainSocketImpl.doConnect (PlainSocketImpl.java:351) в java.net.PlainSocketImpl.connectToAddress (PlainSocketImpl.java:213) в java.net.PlainSocketImpl.connect (PlainSocketImpl.java:200) в java.net.Ilcks.jl: 366) на java.net.Socket.connect (Socket.java:529) на java.net.Socket.connect (Socket.java:478) на java.net.Socket. (Socket.java:375) на java.net.Socket. (Socket.java:218) на com.mysql.jdbc.StandardSocketFactory.connect (StandardSocketFactory.java:257) на com.mysql.jdbc.MysqlIO. (MysqlIO.java:294) ... еще 20

Я работаю с N потоками, и иногда это происходит не в определенное время (X минут)

Я пытаюсь использовать другой драйвер, но не могу решить проблему.

Ответы [ 2 ]

2 голосов
/ 26 июня 2011

Скорее всего, вы либо

  1. Открываем розетки и не закрываем их. Со временем количество открытых сокетов становится слишком большим, и приложение вылетает.
  2. Вы открываете слишком много сокетов одновременно. Может быть, потому что у вас тонна нитей.

Я собираюсь догадаться, что это # ​​1. Дважды проверьте код и убедитесь, что вы закрыли все свои объекты Connection и ResultSet.

Если вы работаете в # 2, то вы можете рассмотреть возможность использования меньшего количества потоков (после того, как определенное количество слишком большого количества потоков приносит больше вреда, чем пользы) или использования пула соединений, например c3p0 , который будет Создайте только определенное количество соединений и разрешите вашим потокам обмениваться ими. Использование c3p0 в целом является хорошей идеей и должно также позволить вам быстрее обнаружить # 1.

Третий вариант - использовать абстракцию более высокого уровня, такую ​​как JPA или JDO, которая позаботится об управлении соединениями.

0 голосов
/ 31 октября 2016

В моем случае мы используем сервер MsSQL и приложение на сервере JBoss на основе инфраструктуры JbossSeam.Эта ошибка связана с несовпадением версий hibernate и hsqldb.Попытка обновления последней версии обеих библиотек и ошибка пропадут.например, ниже maven, hibernate 4.3.6. Final полностью совместим с hsqldb версии 2.2.9.Этот путь помог нам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...