[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Зависшие mysql процессы
alexyem
Привет. smile.gif

есть сайт на моем самописном движке. при каждой загрузке страницы в браузере, в базе данных зависает несколько запросов
http://clip2net.com/page/m0/1922221

со временем они не изчезают и накапливаются и база ложится - Too many connection blink.gif

при подключ. к базе данных использую
$dbcnx = mysql_pconnect($dblocation,$dbuser,$dbpasswd);
@mysql_select_db($dbname,$dbcnx);

в конце главной сайта (через нее идет подключение всех запросов)

mysql_close($dbcnx);


как отследить зависающие запросы? или как убрать это зависание? что может вызвать такие команды? (то что у меня нет ни одной команды sleep я знаю точно) wacko.gif
Nikitian
Постоянное соединение на то и нужно, чтобы его не инициировать при каждой загрузке страницы, а вы его пытаетесь рвать. Но! В мануале по mysql_close() чётко написано:
Цитата
mysql_close() closes the non-persistent connection to the MySQL server that's associated with the specified link identifier. If link_identifier  isn't specified, the last opened link is used.
Т.е. для постоянных соединений оно не канает. Их вообще не надо рвать, ведь они постоянные: сами рвутся когда надо.
По поводу множества повисших соединений: увеличьте количество одновременных соединений max_connections до примерно тысячи и установите таймаут для соединений:
wait_timeout = 60
interactive_timeout = 60
Т.е. через минуту все соединения будут закрываться принудительно. Мне это помогло и работает всё замечательно, чего и вам желаю.
alexyem
Цитата (Nikitian @ 19.09.2009 - 18:59)
По поводу множества повисших соединений: увеличьте количество одновременных соединений max_connections до примерно тысячи и установите таймаут для соединений:
wait_timeout = 60
interactive_timeout = 60
Т.е. через минуту все соединения будут закрываться принудительно. Мне это помогло и работает всё замечательно, чего и вам желаю.


как установить эти параметры, если нет доступа к конфигурационному файлу my.cnf ?
Guest
никак,
поставте mysql_connect вместо mysql_pconnect
PandoraBox2007
если так уж надо mysql_pconnect при нагрузке, кешируйте сессии юзера на 3600 и храните их в memcache, apc или создайте контейнер SQLite или пряму в файлах
Nikitian
Цитата (alexyem @ 19.09.2009 - 19:42)
как установить эти параметры, если нет доступа к конфигурационному файлу my.cnf ?

Можно так попробовать. Либо попросить хостера установить эти параметры (хотя наверно он попросит вас за это перейти на выделенный сервер или вдс).

Ещё раз напоминаю про mysql_close()Э, котрый вы используете неправильно. Если вам надо закрывать соединение каждый раз, то используйте вместо mysql_pconnect() обычный mysql_connect(). Его впринципе даже закрывать не надо - он сам закроется при завершении скрипта.
alexyem
всем спасибо. проблема решилась простой заменой mysql_pconnect на mysql_connect
alexyem
проблема не решилась. она просто стала появляться не постоянно а с какой то периодичностью


подскажите как разрулить эту проблему ?
Guest
Цитата (Nikitian @ 19.09.2009 - 22:59)
Постоянное соединение на то и нужно, чтобы его не инициировать при каждой загрузке страницы, а вы его пытаетесь рвать. Но! В мануале по mysql_close() чётко написано:
Цитата
mysql_close() closes the non-persistent connection to the MySQL server that's associated with the specified link identifier. If link_identifier  isn't specified, the last opened link is used.
Т.е. для постоянных соединений оно не канает. Их вообще не надо рвать, ведь они постоянные: сами рвутся когда надо.
По поводу множества повисших соединений: увеличьте количество одновременных соединений max_connections до примерно тысячи и установите таймаут для соединений:
wait_timeout = 60
interactive_timeout = 60
Т.е. через минуту все соединения будут закрываться принудительно. Мне это помогло и работает всё замечательно, чего и вам желаю.

реально помогло! спас!
Гость_REDS
Была похожая проблема, не знаю как мускул использует DNS, но из-за косяка с ними висли процессы. Так что flushdns))))
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.