The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Процесы Apache"
Вариант для распечатки  
Пред. тема | След. тема 
Форум WEB технологии (Apache, http-серверы)
Изначальное сообщение [ Отслеживать ]

"Процесы Apache"  +/
Сообщение от dmitry_sairus (ok) on 02-Июл-11, 15:18 
Приветствую!

В top постоянно висят:

22241 apache    15   0 22032  10m 3416 S  0.0  4.1   0:00.05 httpd              
24491 apache    15   0 21636   9m 3312 S  0.0  3.9   0:00.01 httpd              
24492 apache    15   0 21636 9.9m 3304 S  0.0  3.8   0:00.01 httpd              
19557 root      15   0 21088 9.8m 3608 S  0.0  3.8   0:13.38 httpd              
18398 mysql     15   0 49568 9944 4284 S  0.0  3.8  12:07.11 mysqld            
24423 apache    15   0 21636 9888 3076 S  0.0  3.8   0:00.01 httpd              
24489 apache    15   0 21088 8744 2248 S  0.0  3.3   0:00.00 httpd              
9690 named     22   0 39092 3768 2108 S  0.0  1.4   0:13.19 named              


Понятное дело, что количество процессов я задаю в StartServers. Интересно, апач освобождает память из под этих процессов? (как видно с примера - 10М + 9М +9.9М...) - я постоянно вижу эти цифры. Если Апач длительное время не используется эти показатели должны уменьшаться? (т.е. освобождение памяти происходит по идее?)

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Процесы Apache"  +/
Сообщение от DeadLoco (ok) on 02-Июл-11, 21:52 
> Если Апач длительное время не используется эти показатели должны уменьшаться?

Читайте секцию mpm_prefork_module из экстра-конфига httpd-mpm.conf

<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

Общая идея такова: сначала форкается StartServers серверов. Если их начнут использовать клиентские запросы, апач начнет превентивно форкать SpareServers - чтобы MinSpareServers висели на подхвате.
Если вдруг количество запросов начнет уменьшаться, апач начнет прибивать лишние сервера так, чтобы их было не больше MaxSpareServers. Разница между мин и макс нужна для того, чтобы оперативно отрабатывать волны посетителей.
MaxClients - количество серверов, которые вообще разрешено одновременно нафоркать апачу.
Для того, чтобы предотвратить крупную утечку памяти, можно задать MaxRequestsPerChild. После обработки этого количества запросов, сервер сдохнет, а вместо него форкнется новый, чистый, без мусора в куче.

Ваш апач работает на дефолтных значениях. После запуска он создает 5 форков, под нагрузкой форчит еще и еще, когда нагрузка спадает - лишние форки прибиваются, остается 10. Их вы и видите. Если смущает расход ОЗУ - поставьте лимит жизней для форка.  

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Процесы Apache"  +/
Сообщение от dmitry_sairus (ok) on 02-Июл-11, 22:04 
>> Если Апач длительное время не используется эти показатели должны уменьшаться?
> Читайте секцию mpm_prefork_module из экстра-конфига httpd-mpm.conf

Спасибо, потестирую

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

4. "Процесы Apache"  +/
Сообщение от DeadLoco (ok) on 03-Июл-11, 00:28 
> Почему Апач не освобождает память из под процессов

Потому что апач не умеет этого делать. Он умеет прибить сервер вообще, и запустить новый.

> память занимаемая процессами постоянно увеличивается, хотя сервер используется редко.

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

Чтобы освобождать использованную память, нужно прибивать сервера. Поставьте им MaxRequestsPerChild = 10, и после 10 запросов сервер сдохнет и будет запущен новый с чистой (и малой) памятью.
Если нагрузка на сервер невелика, уменьшите мин-макс. Поставьте оба значения =2. При этом ровно два сервера будут всегда наготове. И ни один сервер не будет обслуживать больше 10 запросов.


Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

3. "Процесы Apache"  +/
Сообщение от dmitry_sairus (ok) on 02-Июл-11, 22:16 

> Если вдруг количество запросов начнет уменьшаться, апач начнет прибивать лишние сервера

Вот на счет этого момента я и спрашивал. Ситуация такая, что захожу, скажем в 10.00 - пишет процес занимает 10Мб, загружаю страничку где-то через час, проверяю - процес занимает уже 13 Мб.

Такое впечатления, что процес за час неактивнос не освободил память.


>поставьте лимит жизней для форка

Имеете в виду MaxRequestsPerChil ?


Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

5. "Процесы Apache"  +/
Сообщение от dmitry_sairus (ok) on 03-Июл-11, 01:33 
Спасибо, очень внятно и информативно!
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру