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

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

Закрытая тема
Опции темы Опции просмотра
Старый 24.02.2010, 10:39   #1
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, 11:05   #2
gcc
Ебланнед
 
Регистрация: 22.11.2007
Сообщений: 2,984
Бабло: $48575
По умолчанию

.htaccess
php_value max_execution_time 60

если именно
Цитата:
чтобы после 60 секунд любой вызов прекращал свою работу?
__________________
Protecting the future
gcc вне форума  
Старый 24.02.2010, 11:11   #3
gcc
Ебланнед
 
Регистрация: 22.11.2007
Сообщений: 2,984
Бабло: $48575
По умолчанию

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

Цитата:
Сообщение от gcc Посмотреть сообщение
.htaccess
php_value max_execution_time 60

если именно
у меня в php.ini было 30 секунд установлено

Но попробовал и в .htaccess прописать эти 60 секунд, рестартанул сервер, все равно в /server-status вижу что есть запросы с большим SS.

К примеру есть запросы с SS в 3000секунд.
Bill вне форума  
Старый 24.02.2010, 11:21   #5
gcc
Ебланнед
 
Регистрация: 22.11.2007
Сообщений: 2,984
Бабло: $48575
По умолчанию

так после рестарта апача пхп скрипты остаются висеть?
и логи хорошо бы посмотреть перед падением
__________________
Protecting the future
gcc вне форума  
Старый 24.02.2010, 11:31   #6
Bill
Member
 
Регистрация: 16.12.2008
Сообщений: 89
Бабло: $30500
ТС -->
Отправить сообщение для Bill с помощью ICQ
автор темы ТС По умолчанию

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

Прога со временем точно не увеличивает кол-во новых обращений, все одинаково остается.

И проблема в том, что _апач_ не закрывает какие-то старые соединения, и их все нарастает.

Вот я и хочу узнать, как мне заставить убить все процессы по таймауту. Директива Timeout нихрена не работает.
Bill вне форума  
Старый 24.02.2010, 11:36   #7
Bill
Member
 
Регистрация: 16.12.2008
Сообщений: 89
Бабло: $30500
ТС -->
Отправить сообщение для Bill с помощью ICQ
автор темы ТС По умолчанию

вот к примеру строка из статистики
Srv PID Acc M CPU SS Req Conn Child Slot Client VHost Request
0-0 9300 0/0/0 W 0.00 1440 0 0.0 0.00 0.00 11.11.11.11 xxxx GET /script.php?login=qwe&password=asd&action=checkNewM e

Видно, что этот запрос висит уже 1440 секунд. Хотя я его директивой Timeout 60 вежливо прошу умереть

Может какая другая директива для апача есть?
Bill вне форума  
Старый 24.02.2010, 11:42   #8
gcc
Ебланнед
 
Регистрация: 22.11.2007
Сообщений: 2,984
Бабло: $48575
По умолчанию

на ум приходит пока только префорк покрутить, поможет думаю от падений
www.salex.ru/book/book.php?httpd_prefork

раз timeout не работает, полагаю что твой скрипт периодически отдает кусок инфы и поэтому не убивается
__________________
Protecting the future
gcc вне форума  
Старый 24.02.2010, 11:56   #9
gcc
Ебланнед
 
Регистрация: 22.11.2007
Сообщений: 2,984
Бабло: $48575
По умолчанию

PHP код:
g@g-desktop:~$ cat test.php 
<?php
ini_set
("max_execution_time"5);
while(
== 1) {  }
?>
g@g-desktop:~$ time php test.php 

Fatal error: Maximum execution time of 5 seconds exceeded in /home/g/test.php on line 3

real    0m5.136s
user    0m5.060s
sys    0m0.028s
+ если открыть браузером отдает
Цитата:
Fatal error: Maximum execution time of 5 seconds exceeded in /var/www/test.php on line 3
__________________
Protecting the future
gcc вне форума  
Старый 24.02.2010, 12:07   #10
gcc
Ебланнед
 
Регистрация: 22.11.2007
Сообщений: 2,984
Бабло: $48575
По умолчанию

Цитата:
g@g-desktop:~$ cat /var/www/test.php
<?php sleep(35); echo "hi"; ?>
g@g-desktop:~$ cat /etc/apache2/apache2.conf |grep Timeout
# Timeout: The number of seconds before receives and sends time out.
Timeout 10
# KeepAliveTimeout: Number of seconds to wait for the next request from the
KeepAliveTimeout 15
скрипт прекрасно выполняется, видимо таймаут работает по другому, пойду читать доки
__________________
Protecting the future
gcc вне форума