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()
- 
				Да, действительно, ступил малость. Признаю свою ашипку. Плохо доку прочел.