Я получаю эту ошибку или мою jsp страницу каждый день:
java.net.SocketException
СООБЩЕНИЕ: Поврежденный канал
STACKTRACE:
java.net.SocketException: Broken pipe
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)
at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2637)
....
После перезапуска сервиса кота это хорошо работает. (Я использую, в спящем режиме для соединения с mysql базой данных),
Похоже, вы (частично) потеряете соединение с базой данных. MySQL пытается что-то отправить, но соединение потеряно.
Другой пользователь mysql / tomcat, сообщивший о похожей проблеме, посоветовал использовать пул соединений, например c3p0 . Пользователь ответил, что хочет сначала использовать пул соединений Mysql / tomcat, как описано в справочном руководстве mysqls .
Я получаю эту ошибку или мою страницу JSP каждый день (...)
Я собираюсь немного порассуждать, но если это происходит каждое утро (то есть после ночи бездействия) , то это может быть связано с тем, что MySQL по умолчанию закрывает неактивные соединения через 8 часов ( wait_timeout
).
Если это так, либо:
настройте tomcat для проверки соединений при заимствовании, используя validationQuery
в конфигурации источника данных:
<параметр>
validationQuery
выберите 1
увеличьте MySQL wait_timeout
через my.cnf / my.ini
или подключившись с помощью SQL-клиента командной строки и введя SET GLOBAL wait_timeout = 86400
, или другое подходящее количество секунд.
Я не осведомлен обо всех последствиях второго варианта и не рекомендую его, по крайней мере, без получения дополнительных отзывов от экспертов MySQL.