Обмежте використання пам'яті Apache 2


9

Я запускаю веб-сервер хобі від старовинного синьо-білого G3 / 300 під керуванням Debian PPC Squeeze 2.6.30. Після перезавантаження ця робота на час добре, але вона з часом все більше і більше забуває. Наразі це час на 76 днів, і головним винуватцем цього є використання пам'яті 10+ процесів apache2.

Я думаю, що мені потрібно знизити значення для StartServers, MinSpareServersта / або MaxSpareServers, але я не впевнений, який слід відрегулювати, і є три розділи для кожного залежно від того, який модуль mpm використовується.

Як я можу сказати, який із наступних розділів мені потрібно змінити, і які є розумні значення, враховуючи, що в коробці є фізична пам'ять 448 Мб (дивна історія оновлення однієї кожні 64, 128 та 256 палиць)?

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

<IfModule mpm_worker_module>
    StartServers          2
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadLimit          64
    ThreadsPerChild      25
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

<IfModule mpm_event_module>
    StartServers          2
    MaxClients          150
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadLimit          64
    ThreadsPerChild      25
    MaxRequestsPerChild   0
</IfModule>

У моєму апашє.конфі немає інших примірників StartServers, але жоден з цих модулів mpm не з'являється в mods-availableабо mods-enabled. Ідеї?

Дякую!


Я продовжував припускати, що у вашої скриньки не вистачає пам’яті (а ваші вразливі показники йдуть від значного обміну). Якщо ви не
обміняєтесь, я попрошу

Відповіді:


6

400 МБ не дуже багато для веб-сервера в наші дні - можливо, ви захочете подумати про заміну коробки :)

Це означає, що якщо ваше використання пам’яті відбувається на повітряній кулі, ви, мабуть, десь просочились пам’яттю - для швидкого тестування подивіться на розмір процесів httpd зараз, тоді зупиніться / запустіть Apache і подивіться, чи їх набагато менше. Якщо вони спостерігають їх кілька днів і бачать, чи ростуть вони.

Якщо це витік пам'яті, справжнє рішення для цього - знайти та виправити витік пам’яті, але оскільки це зазвичай біль у попці, ви також можете налаштувати MaxRequestsPerChildна щось інше, ніж 0 (необмежено). Це знищить працівників Apache, коли вони обслуговуватимуть фіксовану кількість запитів (змушуючи їх відмовитись від просоченої пам’яті в процесі.

Почніть з більших значень (у тисячах і так) і проробіть свій шлях у сотні. Якщо ви отримаєте менше 100 запитів на дитину, витік пам’яті є достатньо великим, щоб гарантувати фактичне її усунення, оскільки показник ефективності від постійного вбивства та повторного нересту працівників апашу буде значним.


Re: який mpm для налаштування, відповідь майже напевно prefork.
Ви можете бігти httpd -Vі шукати Server MPM:лінію, яка вам точно скаже.


1
-V дав мені інформацію про префорк, яка мені потрібна (хоча в моєму випадку це apache2 -V). Дякую!
UltraNurd

Здається, зробили трюк. Я думаю, що проблема полягала в тому, що у мене не вистачало фізичної пам'яті та обміну, тому що занадто багато дочірніх серверів (кожен захоплював приблизно 80 МБ). І так, я знаю, сервер старий. Але це ледве обробка будь-яких запитів: oD.
UltraNurd

1
Якщо ви не обробляєте багато запитів, ви також можете обрізати кількість серверів Start & Spare, як ви згадували у своєму початковому дописі (в системах розробки я встановив їх на щось від 2 до 5 для зменшення використання оперативної пам’яті)
voretaq7,

Я закінчив скидати мінімум та максимум запчастин до 3 та 6 від 5 та 10, і це, здається, залишає достатньо залишків оперативної пам’яті, щоб утримати речі не міняти місцями. Дякую!
UltraNurd

1

Для зменшення використання пам'яті процесу apache вам потрібно буде відрегулювати MaxClients.

Загальне правило: (Максимум потрібної пам'яті) / (Використання пам'яті 1 Apache Process) = # Макс. Клієнтів

Врешті-решт, вам також потрібно налаштувати, щоб він був MaxSpareServers <= Макс. Клієнтів .

Використання пам’яті одного процесу сильно залежить від завантажених модулів (php тощо), тому ви можете встановити Max Clients трохи нижче.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.