Forum Webscript.Ru
Общие => Базы данных => Тема начата: ash от 29 Марта 2002, 08:26:58
-
Вот такая зараза вываливается переодически, надоело, а как исправить не нашел =(
Вот сейчас оно выползо при следующий обстоятельствах:
ошибка появилась и я ради интереса полез посмотреть сколько соединений образовалось (SHOW STATUS) и увидел такую вот цифрь Connections 322 при этом не открывались новые соединения, а старые функционировали.
Глянул я и SHOW PROCESSLIST, в нем отображались процессы запущенные недели две назад (судя по 7ми значиным числам).
Вот что с этим делать? =(((( перегружать сервис нехорошо...
Да, самое важное: Win2000+MySQL3.23.49
Я несколько в замешательстве, у меня под FreeBSD MySQL уже
Uptime 5081062 =(((((
Вот кусок из php.ini
[MySQL]
mysql.allow_persistent = On
mysql.max_persistent = -1
mysql.max_links = -1
mysql.default_port =
mysql.default_socket =
mysql.default_host =
mysql.default_user =
mysql.default_password =
Идентичная конфигарация и под фрёй.
P.S. Когда первый раз такое проявилось я решил немного поэксперементировать и следал параметр mysql.max_persistent = 100. Ожидания не подтвердились соединения как плодились так и продолжали в том же духе, за пол часа перевалили за 100 =((( и продолжали это делать.
Каким образом заставить MySQL отстреливать старые соединения? Ведь юниковая версия это делает без напоминания...
-
такая фигня происходит, если ты используешь mysql_pconnect() , который не закрывает соединение с базой после загрузки
-
Да, действительно там используется pconnect, но и на юникс машине то же есть сайты использующие такую функцию. Проблем не возникает.
Есть ли иной выход, вместо переписывания кода?
-
Есть ли иной выход, вместо переписывания кода?
сравни параметр для mysql серверов:
wait_timeout
он идентичный или там разное время установлено?
Возможно для юниксового сервера меньшее время установлено и он раньше закрывает соединение..
по умолчанию там кажется 8 часов установлено ...
-
wait_timeout 28800
На обоих машинах =(
-
ash
Есть ли иной выход, вместо переписывания кода?
А пишешь на чем?
Если на ПХП и есть файл, который инклюдится во все скрипты (например настройки или файл с функциями) то можно такое сделать:
function My_ShutDown()
{
mysql_close();
}
register_shutdown_function("my_shutdown");
и вставляешь это в этот файл
-
mysql_close();
может я и ошибаюсь, но mysql_close() кажется не закрывает соединение открытое mysql_pconnect()
-
Да, действительно, ступил малость. Признаю свою ашипку. Плохо доку прочел.