BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 22 июн 2024, 16:54

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Ошибка Cannot find session for update
СообщениеДобавлено: 26 окт 2015, 04:24 
Не в сети
Клиент

Зарегистрирован: 03 авг 2010, 15:18
Сообщения: 357
Откуда: Камчатка
Карма: 8
После одного из обновлений, стали постоянно сыпаться такие ошибки:
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 есть.
Из-за чего такое может быть?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ошибка Cannot find session for update
СообщениеДобавлено: 27 окт 2015, 15:14 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
этой сессии нет в inet_session и в inet_session_log ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ошибка Cannot find session for update
СообщениеДобавлено: 30 окт 2015, 04:45 
Не в сети
Клиент

Зарегистрирован: 03 авг 2010, 15:18
Сообщения: 357
Откуда: Камчатка
Карма: 8
сессии в БД нет.
какая-то проблема с БД или с коннектом к БД.
в начале суток ошибки появляются
Код:
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?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ошибка Cannot find session for update
СообщениеДобавлено: 03 ноя 2015, 11:19 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
там еще после завершения сессии она удаляется из inet_session и кладется inet_session_log . Вроде бы это в одной транзакции должно быть.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ошибка Cannot find session for update
СообщениеДобавлено: 06 ноя 2015, 08:18 
Не в сети
Клиент

Зарегистрирован: 03 авг 2010, 15:18
Сообщения: 357
Откуда: Камчатка
Карма: 8
Там её тоже нет.
Похоже проблема была из-за массового разрыва сессий на границе суток.
Сейчас у части подключений поставил sa.radius.connection.withoutBreak=1 и ушли сообщения lock wait и ошибки о потере коннекта с БД.
Хотя у меня всего 1000 онлайн (из них около половина ISG) на этом биллинге и очень странно, что он так тупил на переподключении.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ошибка Cannot find session for update
СообщениеДобавлено: 10 ноя 2015, 04:10 
Не в сети
Клиент

Зарегистрирован: 03 авг 2010, 15:18
Сообщения: 357
Откуда: Камчатка
Карма: 8
Скажите, ошибка вида
Код:
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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ошибка Cannot find session for update
СообщениеДобавлено: 10 ноя 2015, 15:30 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Попробуйте поменять в 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%";

Сколько активных сессий?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ошибка Cannot find session for update
СообщениеДобавлено: 10 ноя 2015, 15:48 
Не в сети
Клиент

Зарегистрирован: 03 авг 2010, 15:18
Сообщения: 357
Откуда: Камчатка
Карма: 8
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, таких проблем нет.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.328s | 34 Queries | GZIP : On ]