java.net.SocketException: сломанная труба - PullRequest
9 голосов
/ 22 июля 2010

Я получаю эту ошибку или мою страницу 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)
        ....

После перезапуска службы tomcat все работает нормально. (Я использую hibernate для подключения к базе данных mysql)

Ответы [ 2 ]

17 голосов
/ 23 июля 2010

Я получаю эту ошибку или мою страницу JSP каждый день (...)

Я собираюсь немного поразмышлять, но случится ли это каждое утро (то есть после ночинеактивность), то это может быть связано с тем, что MySQL по умолчанию закрывает незанятые соединения через 8 часов (wait_timeout).

В этом случае либо:

  • сконфигурируйте tomcat для тестирования соединений по заимствованию, используя validationQuery в конфигурации источника данных:

    <parameter>
      <name>validationQuery</name>
      <value>select 1</value>
    </parameter>
    
  • увеличить MySQL wait_timeout с помощью my.cnf/my.ini, либо путем соединения с клиентом командной строки SQL и ввода SET GLOBAL wait_timeout=86400, либо другого подходящего количества секунд.

Мне не известны все последствия второго варианта, и я не очень рекомендую его, по крайней мере, без получения дополнительных отзывов от экспертов MySQL.

1 голос
/ 22 июля 2010

Похоже, вы (частично) потеряли связь с вашей базой данных.MySQL пытается что-то отправить, но соединение теряется.

Другому пользователю mysql / tomcat, который сообщил о похожей проблеме, посоветовали использовать пул соединений, например c3p0 .Пользователь ответил, что сначала он хотел бы использовать пул соединений Mysql / tomcat, как описано в mysqls справочное руководство .

Это оригинальный пост (немецкий язык) .

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