Forum Webscript.Ru

Общие => Базы данных => Тема начата: ash от 29 Марта 2002, 08:26:58

Название: 1040 Too many connections
Отправлено: 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 отстреливать старые соединения? Ведь юниковая версия это делает без напоминания...
Название: 1040 Too many connections
Отправлено: fidget от 29 Марта 2002, 11:59:55
такая фигня происходит, если ты используешь mysql_pconnect() , который не закрывает соединение с базой после загрузки
Название: 1040 Too many connections
Отправлено: ash от 29 Марта 2002, 16:59:24
Да, действительно там используется pconnect, но и на юникс машине то же есть сайты использующие такую функцию. Проблем не возникает.

Есть ли иной выход, вместо переписывания кода?
Название: 1040 Too many connections
Отправлено: fidget от 29 Марта 2002, 17:08:47
Цитировать
Есть ли иной выход, вместо переписывания кода?


сравни параметр для mysql серверов:
wait_timeout
он идентичный или там разное время установлено?

Возможно для юниксового сервера меньшее время установлено и он раньше закрывает соединение..
по умолчанию там кажется 8 часов установлено ...
Название: 1040 Too many connections
Отправлено: ash от 29 Марта 2002, 17:12:58
wait_timeout 28800
На обоих машинах =(
Название: 1040 Too many connections
Отправлено: Макс от 29 Марта 2002, 18:49:50
ash
Цитировать
Есть ли иной выход, вместо переписывания кода?

А пишешь на чем?
Если на ПХП и есть файл, который инклюдится во все скрипты (например настройки или файл с функциями) то можно такое сделать:

function My_ShutDown()
{
 mysql_close();
}
register_shutdown_function("my_shutdown");

и вставляешь это в этот файл
Название: 1040 Too many connections
Отправлено: fidget от 29 Марта 2002, 19:04:43
Цитировать
mysql_close();

может я и ошибаюсь, но mysql_close() кажется не закрывает соединение открытое mysql_pconnect()
Название: 1040 Too many connections
Отправлено: Макс от 29 Марта 2002, 21:52:48
Да, действительно, ступил малость. Признаю свою ашипку. Плохо доку прочел.