BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 25 апр 2024, 20:53

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




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: [7.0] Prepared_stmt_count
СообщениеДобавлено: 08 июн 2016, 13:47 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Доброго дня, господа.

Я чесс сказать не знаю как это правильно расписать, и что вам предоставить.
Начну по порядку. Вы обращайтесь если что :)

Периодически (каждые 6-8 часов виснет монитор модуля Inet на вкладке ошибки).
Помогает ребут процесса BGBillingServer.
По этому поводу создано обращение "[6222] [7.0] Проблема со входом в монитор модуля Inet"

Общались с Амиром, к общему знаменателю не пришли, поступило предложение проверить обновление MySQL'а т.к. стоит старая версия, и в момент зависания те же запросы которые обрабатывались быстро - начинают думать очень долго.

Были подозрения на query cache и т.д. и т.п.
Выгрузил из базы все что возможно, с тем чтобы она начала помещаться в памяти.
Поставил sync_binlog = 0, т.к. Амир за него спрашивал и я подумал что это имеет какое-то отношение к проблеме.

В момент зависания снял show status; и снял его сразу после рестарта процесса сервера биллинга.

Обнаружил высокие показатели Prepared_stmt_count.
Вывел в заббикс.
Получил следующую картиночку
Изображение

Падение в 7:30 это как раз таки рестарт сервера. Резкое возрастание в 00:15 было не понятно с чем связано, т.к. в 00:15 нет заданий. В 00:10 есть начисление Npay абонплат.

Окей. Проблема начинает выявляться. Виснуть начинает когда достигает значения max_prepared_stmt_count, которое по умолчанию составляет 16382.
Погуглил по форуму нашел похожую проблему. Рекомендуют выключить кеширование запросов в db.url (cachePrepStmts=false).

Логично, что подобное закрытие глаз на проблему - не наши методы :) И я даже не стал это проверять.

Решил проверить начисление NPAY абонплат. Запустил задачу начисления абонплат. И вуаля.
Изображение
Упало соответственно после ребута.

Следующее что пришло в голову из-за чего в течении дня могут так вырасти запросы - приход платежей. Значит будем плясать от этого и модуля NPAY.
Поднимаем тестовый сервер 7.0.
Голый, только с установленным модулем NPay.
Конфиг сервера - из доки.
Конфиг NPay - из рабочего сервера, с настроенным дебетовым режимом.

Дальше лень писать - смотрите видео.

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [7.0] Prepared_stmt_count
СообщениеДобавлено: 08 июн 2016, 14:41 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Проверил на 6.1.
Такое же поведение так же растет кол-во, но растет +1 за каждый платеж а не +3 как в 7.0

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [7.0] Prepared_stmt_count
СообщениеДобавлено: 08 июн 2016, 16:35 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Там вроде бы все-таки проблема в кэшировании этих самых prepared statement.
Есть понятие клиентский prepared statement и серверный prepared statement.
Соответственно есть понятие кэширования prepared statement.
В разных версиях mysql это дело менялось - сначала они включили серверные prepared statement, потом выключили, потом снова включили.

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

Когда кэширование включено и мы закрываем PS - он на самом деле остается "открытым" для этого соединения.
Когда мы закрываем соединение - "физическое" соединение на самом деле остается открытым - потому что это пул.
А если включены серверные PS, то получается они остаются открытыми на сервере вместе с этими соединениями.

Можно конечно все эти места искать и исправлять, но мы и так стараемся использовать один и тот же PS по возможности.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [7.0] Prepared_stmt_count
СообщениеДобавлено: 08 июн 2016, 17:12 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Они кешируются только при наличии модуля NPay на договоре?
Мне то что делать в таком случае?

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [7.0] Prepared_stmt_count
СообщениеДобавлено: 08 июн 2016, 17:15 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
Рекомендуют выключить кеширование запросов в db.url (cachePrepStmts=false)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [7.0] Prepared_stmt_count
СообщениеДобавлено: 08 июн 2016, 18:37 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
skn писал(а):
Рекомендуют выключить кеширование запросов в db.url (cachePrepStmts=false)

Но я правильно понимаю что в таком случае пострадает производительность?
На 6.1 такой проблемы не было :) Ну по крайней мере модуль Inet не вис

Я как старая бабка. Раньше было лучше, солнце светило ярче, и мороженое было дешевле

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [7.0] Prepared_stmt_count
СообщениеДобавлено: 08 июн 2016, 18:40 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
Phricker писал(а):
skn писал(а):
Рекомендуют выключить кеширование запросов в db.url (cachePrepStmts=false)

Но я правильно понимаю что в таком случае пострадает производительность?


не должна, все, что нужно кешировать мы и так дополнительно кешируем в коде....

в биллинге используется пул соединений, т.е. если мы взяли соединение из пула, выполнили запрос, он кешируется на сервере для ЭТОГО соединения, затем соединение возращается в пул, если мы после этого через некоторое время делаем такой же запрос, не факт, что мы его будем делать на том же соединении, и соответственно кеширование не сработает...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [7.0] Prepared_stmt_count
СообщениеДобавлено: 08 июн 2016, 18:53 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Поставил false. Пока так
Изображение

Буду ждать зависнет ли Inet или все же проблема именно в этом и была.

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [7.0] Prepared_stmt_count
СообщениеДобавлено: 08 июн 2016, 19:03 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Там же в графике где то и начисление абонплат планировщиком :)
На нем тоже не поднялось.

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


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

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


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

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


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

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