MySQL клиент не может прочитать результат запроса?

Итак, у меня есть этот компьютер, на котором запущен сервер XMPP, который подключается к своей базе данных MySQL. Когда я начинаю нагрузочное тестирование, все идет хорошо до примерно 500 секунд, когда я замечаю:

Caused by: com.mysql.jdbc.exceptions.MySQLTimeoutException: Statement cancelled due to timeout or client request

начинает появляться. Как они делают, команда:

mysql> show processlist;

показывает, как MySQL получает следующие запросы, отвечает на них (состояние = отправка данных была перехвачена на ленту), а затем просто бездействует в состоянии = спит в течение 20, 40 или даже более. За все это время вызов метода PreparedStatement.execute() не возвращается. top Команда показывает не более 800% загрузки процессора (16 ядер - половина из них используется в пике).

Я проверил /var/log/messages и несколько других мест в / var / log на наличие ошибок на компьютере сервера XMPP без какой-либо подсказки. Я также попробовал другой соединитель JDBC, другой сервер MySQL, обновленный JRE, без улучшения. Где я должен искать дальше?

Что дальше? Спасибо!

РЕДАКТИРОВАТЬ: еще несколько проверено, и это не связано ни с количеством потоков, перекачивающих и выдвигающих запросы из их очередей, ни с запросами в секунду, ни с конкретной машиной, ни с видом выполняемых запросов SQL или числом соединений с MySQL. Я также проверил tcpdump захватывает, и сервер отвечает на запросы в течение нескольких миллисекунд. В остальное время... Просто клиент как-то не извлекает, что приводит к пространству пользователя TCP.

Но во всех тестах есть показатель, который остается неизменным - когда он достигает чуть более 30 тысяч одновременно подключенных пользователей (пользователей серверов XMPP) - именно тогда начинается проблема.

0 ответов

Другие вопросы по тегам