Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Таймаут на чтение
Форумы портала PHP.SU » Серверное администрирование » Администрирование БД » Таймаут на чтение

Страниц (1): [1]
 

1. Viraban009 - 01 Марта, 2011 - 13:23:30 - перейти к сообщению
Север MySQL
Здравствуйте, есть проблема, при поиске иногда запрос "зависает" собирая при этом все запросы в таблице до события "too many coonections".

Можно как то ограничить время, скажем если через 15 секунд сервер не обработал запрос, прекратить его?

PS просьба не рекомендовать оптимизацию запросов, в данный момент интересует именно таймауты.
2. ALEN - 01 Марта, 2011 - 19:42:54 - перейти к сообщению
Можно вообще убить работу скрипта set_time_limit
3. Viraban009 - 02 Марта, 2011 - 12:40:54 - перейти к сообщению
ALEN пишет:
Можно вообще убить работу скрипта set_time_limit

Это уже думается как один из вариантов. Но подводный камень именно в mysql, все перерыл, но подобного нечего нет (есть только лимиты на момент коннекта).

Реально ли такое - создать отдельный процесс на подключение и на родительском отследить время? Или это уже писать на высоких языках?
4. ALEN - 02 Марта, 2011 - 13:10:09 - перейти к сообщению
Viraban009
Почитай еще про MYSQL_OPT_CONNECT_TIMEOUT
5. Viraban009 - 02 Марта, 2011 - 13:12:00 - перейти к сообщению
Насчет set_time_limit():
Примечание: функция set_time_limit() и директива конфигурации max_execution_time влияют только на время выполнения самого скрипта.Любое время, затраченное на деятельность вне выполнения скрипта, такую как системные вызовы с помощью system(), функция sleep(), запросы к БД etc. не включается при подсчёте максимального времени работы скрипта.
6. JustUserR - 02 Марта, 2011 - 16:08:46 - перейти к сообщению
Viraban009 пишет:
Собирая при этом все запросы в таблице до события "too many coonections"
Возможной причиной осуществления возникновения предполагаемой ошибки SQL-сервера, является использование постоянных соединений на стороне сервера приложений, при условии обеспечения создания выделенного процесса обработки пользовательского запроса в соответствии с оригинальной спецификацией CGI-интерфейса
7. Viraban009 - 02 Марта, 2011 - 16:13:29 - перейти к сообщению
ALEN пишет:
Почитай еще про MYSQL_OPT_CONNECT_TIMEOUT


Это таймаут на установление соединения.
8. Viraban009 - 03 Марта, 2011 - 01:34:35 - перейти к сообщению
JustUserR
Не понял мысль. Постоянных соединение mysql_pconnect() нет.
Вообще выглядит так что при использование поиска LIKE, сервер долго выполняет поиск в той таблице, которая сильно востребована. Иногда это быстро 0,5 сек, иногда до минуты и более. Я так понимаю проблема "дележки" кэша. Но странно для меня то, что при использование поиска LIKE, блокирует таблица на чтение (в MyISAM), и происходит эффект сбора коннектов.
9. EuGen - 04 Марта, 2011 - 10:00:39 - перейти к сообщению
cron -> SHOW FULL PROCESSLIST -> смотрим на те запросы, время исполнения которых слишком велико (колонка time в результате выборки) -> KILL запроса (id получен на предыдущем шаге)
Повторять с нужной периодичностью в cron

 

Powered by ExBB FM 1.0 RC1