Как апач заставить убивать старые соединения? - Форум успешных вебмастеров - GoFuckBiz.com - Страница 2
 
 
Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Хостинг и железо
Дата
USD/RUB90.2486
BTC/USD69283.0007
Хостинг и железо Обсуждаем вопросы хостинга и железа.

Закрытая тема
Опции темы Опции просмотра
Старый 24.02.2010, 10:39
Start Post: Как апач заставить убивать старые соединения? 
  #11
Bill
Member
 
Регистрация: 16.12.2008
Сообщений: 89
Бабло: $30500
Отправить сообщение для Bill с помощью ICQ
По умолчанию

У меня прога вызывает пхп скрипты на апаче, и часа за 3 апач падает. Вроде и потоков не много, да и скрипты простые.

Через модуль статистики апача (через /server-status) увидел, что есть много запросов, которые просто не закрываются.

SS Seconds since beginning of most recent request -- вот по этой колонке, как я понял, можно увидеть, что процесс аццки долго уже висит.

В конфиге апача прописал директиву Timeout 60. Да и в пхп скриптах установлен лимит на 30 секунд.

Но судя по этой /server-status есть много процессов, которые SS имеют существенно больше значение, чем 60.

Почему не убивается процесс, как настроить апач, чтобы после 60 секунд любой вызов прекращал свою работу?
Bill вне форума  
Старый 24.02.2010, 12:09   #12
Bill
Member
 
Регистрация: 16.12.2008
Сообщений: 89
Бабло: $30500
ТС -->
Отправить сообщение для Bill с помощью ICQ
автор темы ТС По умолчанию

префорк у меня уже был настроен, единственно не было
# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
KeepAliveTimeout 15

Поставил эту директиву, все равно ничего не меняется.

Fatal error: Maximum execution time of 5 seconds exceeded in /home/g/test.php on line 3 -- вот это у меня в браузере так же работает
Bill вне форума  
Старый 24.02.2010, 12:10   #13
gcc
Ебланнед
 
Регистрация: 22.11.2007
Сообщений: 2,984
Бабло: $48575
По умолчанию

а еще max_execution_time считает только время, проведенное в самом скрипте, то есть ожидание ответа от бд например или чего угодно не считается

set_time_limit считается относительно всего времени работы с учетом ожиданий


посмотрел, везде пишут что ограничивать работу скриптов нужно непосредственно в скриптах, или php.ini
__________________
Protecting the future

Последний раз редактировалось gcc; 24.02.2010 в 12:13. Причина: add
gcc вне форума  
Старый 24.02.2010, 12:18   #14
Bill
Member
 
Регистрация: 16.12.2008
Сообщений: 89
Бабло: $30500
ТС -->
Отправить сообщение для Bill с помощью ICQ
автор темы ТС По умолчанию

Цитата:
Сообщение от gcc Посмотреть сообщение
скрипт прекрасно выполняется, видимо таймаут работает по другому, пойду читать доки
Тут хочу дать пояснение, подозреваю, что неоднозначно я выразился

Fatal error: Maximum execution time of 5 seconds exceeded in /home/g/test.php on line 3 -- вот это у меня в браузере так же работает

-- под этим я подразумевал, что при вызове такого скрипта у меня в браузере появился фатал еррор, как и должно было быть. + в /server-status этого скрипта не было, т.е. он завершился.
Bill вне форума  
Старый 24.02.2010, 12:26   #15
gcc
Ебланнед
 
Регистрация: 22.11.2007
Сообщений: 2,984
Бабло: $48575
По умолчанию

max_execution_time 60 в php.ini все таки работает или нет?
апач рестартни после изменения

у меня какие то чудеса, но если в php.ini править этот параметр - не работает
если в самом скрипте - то работает
__________________
Protecting the future
gcc вне форума  
Старый 24.02.2010, 12:32   #16
Bill
Member
 
Регистрация: 16.12.2008
Сообщений: 89
Бабло: $30500
ТС -->
Отправить сообщение для Bill с помощью ICQ
автор темы ТС По умолчанию

max_execution_time 60 в php.ini все таки работает или нет?

-- вот это работает только если скрипт взять и вызвать в браузере, то он через заданное время прекратит работать.

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

И да, полагаться на max_execution_time в моем случае не приходится, так как проблемные подвисающие скрипты работают с сетью, т.е. там ожидание ответа может быть большое (хотя в curl я тоже везде ограничение в 30 секунд ставлю).

Вот я и хочу от апача, чтобы он по истечении 60 секунд отрубил процесс, чтобы с ним там не происходило.
Bill вне форума  
Старый 24.02.2010, 12:46   #17
gcc
Ебланнед
 
Регистрация: 22.11.2007
Сообщений: 2,984
Бабло: $48575
По умолчанию

апачем не отрубишь
set_time_limit юзай тогда
__________________
Protecting the future
gcc вне форума  
Старый 24.02.2010, 12:49   #18
gcc
Ебланнед
 
Регистрация: 22.11.2007
Сообщений: 2,984
Бабло: $48575
По умолчанию

или можешь простой баш скрипт написать который будет грепать список процессов, парсить пид зависших соединений и килять их
и засунуть в крон
__________________
Protecting the future
gcc вне форума  
Старый 24.02.2010, 12:50   #19
dady
Senior Medved
 
Аватар для dady
 
Регистрация: 15.06.2008
Сообщений: 4,146
Бабло: $22479945
По умолчанию

Offtopic
__________________
Аппрув США >91% и Европа >90% Сливай фарму на Pharmcash - получай хрустящий кэш! / Спонсор! Докажи, что твоя партнерка №1 / 2019
dady вне форума  
Старый 24.02.2010, 13:26   #20
seocoder
хуйнанэ
 
Аватар для seocoder
 
Регистрация: 03.04.2007
Сообщений: 1,294
Бабло: $126446
Отправить сообщение для seocoder с помощью Skype™
По умолчанию

если стоит suhosin то он клал на такие настройки
__________________
webparadox
seocoder вне форума  
Старый 24.02.2010, 14:19   #21
Bill
Member
 
Регистрация: 16.12.2008
Сообщений: 89
Бабло: $30500
ТС -->
Отправить сообщение для Bill с помощью ICQ
автор темы ТС По умолчанию

Цитата:
Сообщение от gcc Посмотреть сообщение
апачем не отрубишь
set_time_limit юзай тогда
set_time_limit это тоже в скриптах стоит, пофиг.

Да, можно запускать отдельный скрипт башем и килять подвисших уродов. Но вообще странная ситуация, почему такое вообще происходит. Почему апач игнорит директивы по таймуту.

Аццки логично было бы именно апачу убивать эти подвисшие запросы.
Bill вне форума  
Закрытая тема