forum.bitel.ru http://forum.bitel.ru/ |
|
Ошибка Cannot find session for update http://forum.bitel.ru/viewtopic.php?f=44&t=11029 |
Страница 1 из 1 |
Автор: | Bazhutyan [ 26 окт 2015, 04:24 ] |
Заголовок сообщения: | Ошибка Cannot find session for update |
После одного из обновлений, стали постоянно сыпаться такие ошибки: SessionFlushingManager - Cannot find session for update with id=4612538, connectionId=3657906, sessionStart=2015-10-26 00:00:00.0 in DB! В базе действительно нет сессии с id=4612538, но connection с id=3657906 есть. Из-за чего такое может быть? |
Автор: | stark [ 27 окт 2015, 15:14 ] |
Заголовок сообщения: | Re: Ошибка Cannot find session for update |
этой сессии нет в inet_session и в inet_session_log ? |
Автор: | Bazhutyan [ 30 окт 2015, 04:45 ] |
Заголовок сообщения: | Re: Ошибка Cannot find session for update |
сессии в БД нет. какая-то проблема с БД или с коннектом к БД. в начале суток ошибки появляются Код: radius 10-30/00:00:10 ERROR [rdsLstnr-p-7-t-1121] DefaultServerSetup - 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. com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure Хотя в мускульном query.log я вижу записи с insert'ом данных сессий, например: Код: 169248 Query INSERT INTO inet_session_1 (id, parentId, splittedId, connectionId, sessionStart, sessionStop, lastActive, sessionTime, sessionCost, deviceState, status) VALUES (4699605,4699109,4693668,3735936,'2015-10-30 00:00:00',null,'2015-10-30 00:00: 00',0,0,0,1) И через пару секунд, после Communications link failure начинается: Код: accounting 10-30/00:00:18 ERROR [accwrkr-2-p-14-t-10] SessionFlushingManager - Cannot find session for update with id=4699605, connectionId=3735936, sessionStart=2015-10-30 00:00:00.0 in DB! Сама база в это время доступна, бэкапов в это время не производится. Почему появляется Communications link failure, пока не понимаю. Есть какой-нибудь параметр таймаута, прежде чем соединение перейдет в fail? |
Автор: | stark [ 03 ноя 2015, 11:19 ] |
Заголовок сообщения: | Re: Ошибка Cannot find session for update |
там еще после завершения сессии она удаляется из inet_session и кладется inet_session_log . Вроде бы это в одной транзакции должно быть. |
Автор: | Bazhutyan [ 06 ноя 2015, 08:18 ] |
Заголовок сообщения: | Re: Ошибка Cannot find session for update |
Там её тоже нет. Похоже проблема была из-за массового разрыва сессий на границе суток. Сейчас у части подключений поставил sa.radius.connection.withoutBreak=1 и ушли сообщения lock wait и ошибки о потере коннекта с БД. Хотя у меня всего 1000 онлайн (из них около половина ISG) на этом биллинге и очень странно, что он так тупил на переподключении. |
Автор: | Bazhutyan [ 10 ноя 2015, 04:10 ] |
Заголовок сообщения: | Re: Ошибка Cannot find session for update |
Скажите, ошибка вида Код: The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure это проблема с соединением существующим или с попыткой нового соединения? У меня получается, что на границе суток mysql лагает, сначала сыпятся куча ошибок "RadiusListenerWorker - Lock wait timeout for ContractRuntime", потом прилетает "Communications link failure" и после того, как mysql входит в нормальный режим, БГ из-за этих проблем шлёт ему rollback и получается, что часть сессий теряется. Вот query.log от mysql: Код: 195954 Query INSERT INTO inet_session_1_seq (id) VALUES (NULL)
195954 Query INSERT INTO inet_session_1 (id, parentId, splittedId, connectionId, sessionStart, sessionStop, lastActive, sessionTime, sessionCost, deviceState, status) VALUES (4917412,4916693,4901704,3897832,'2015-11-10 00:00:00',null,'2015-11-10 00:00:00',0,0,0,1) 195954 Query UPDATE inet_connection_1 SET type=2 WHERE id=3897832 195954 Query INSERT INTO inet_session_detail_1 (sessionId, day, hour, trafficTypeId, amount) VALUES (4917412,0,0,0,79272) 195954 Query INSERT INTO inet_session_detail_1 (sessionId, day, hour, trafficTypeId, amount) VALUES (4917412,0,0,3,4529380) 195954 Query INSERT INTO inet_session_detail_1 (sessionId, day, hour, trafficTypeId, amount) VALUES (4917412,0,0,4,5042308) 195954 Query UPDATE inet_session_1 SET status=3, sessionStop='2015-11-09 23:59:59' WHERE id=4901707 AND status!=3 195954 Query SELECT 1 195954 Query rollback |
Автор: | Amir [ 10 ноя 2015, 15:30 ] |
Заголовок сообщения: | Re: Ошибка Cannot find session for update |
Попробуйте поменять в inet-accounting.xml db.url connectTimeout=1000 на connectTimeout=10000. Покажите что выдает Код: show variables like "%timeout%"; show variables like "%buffer%"; show variables like "%innodb_flush_log_at_trx_commit%"; show variables like "%concurr%"; Сколько активных сессий? |
Автор: | Bazhutyan [ 10 ноя 2015, 15:48 ] |
Заголовок сообщения: | Re: Ошибка Cannot find session for update |
connectTimeout был 5000, увеличил до 10000 Код: mysql> show variables like "%timeout%"; +----------------------------+----------+ | Variable_name | Value | +----------------------------+----------+ | connect_timeout | 10 | | delayed_insert_timeout | 300 | | innodb_lock_wait_timeout | 120 | | innodb_rollback_on_timeout | OFF | | interactive_timeout | 28800 | | lock_wait_timeout | 31536000 | | net_read_timeout | 60 | | net_write_timeout | 60 | | slave_net_timeout | 3600 | | wait_timeout | 28800 | +----------------------------+----------+ 10 rows in set (0.00 sec) mysql> show variables like "%buffer%"; +------------------------------+------------+ | Variable_name | Value | +------------------------------+------------+ | bulk_insert_buffer_size | 8388608 | | innodb_buffer_pool_instances | 1 | | innodb_buffer_pool_size | 2147483648 | | innodb_change_buffering | all | | innodb_log_buffer_size | 8388608 | | join_buffer_size | 131072 | | key_buffer_size | 8388608 | | myisam_sort_buffer_size | 8388608 | | net_buffer_length | 16384 | | preload_buffer_size | 32768 | | read_buffer_size | 131072 | | read_rnd_buffer_size | 262144 | | sort_buffer_size | 2097152 | | sql_buffer_result | OFF | +------------------------------+------------+ 14 rows in set (0.00 sec) mysql> show variables like "%innodb_flush_log_at_trx_commit%"; +--------------------------------+-------+ | Variable_name | Value | +--------------------------------+-------+ | innodb_flush_log_at_trx_commit | 2 | +--------------------------------+-------+ 1 row in set (0.00 sec) mysql> show variables like "%concurr%"; +----------------------------+-------+ | Variable_name | Value | +----------------------------+-------+ | concurrent_insert | AUTO | | innodb_commit_concurrency | 0 | | innodb_concurrency_tickets | 500 | | innodb_thread_concurrency | 2 | | thread_concurrency | 48 | +----------------------------+-------+ 5 rows in set (0.00 sec) 800 активных соединений ISG. У каждого соединения в среднем 4-е сервисных сессии. Еще около 20 обычных PPPoE соединений и немногим более 100 обычных IPoE. Это очень мало. В соседнем БГ, 6.2, порядка 4000 PPPoE, таких проблем нет. |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |