Чому Apache працює так багато процесів? Тут надмірна оперативна пам’ять?


17

Я помічаю, що Apache працює на декількох процесах на моєму сервері LAMP (ubuntu 10.10). Я просто запускаю сайт Wordpress з MySQL як база даних. Схоже, що в www-data працює apache2 більше, ніж слід (використовуючи занадто багато пам'яті), я правильно:

ID      Owner       Size        Command   
31200   www-data    251236 kB   /usr/sbin/apache2 -k start
20678   www-data    250948 kB   /usr/sbin/apache2 -k start
25781   www-data    248888 kB   /usr/sbin/apache2 -k start
31045   www-data    248844 kB   /usr/sbin/apache2 -k start
19926   www-data    246480 kB   /usr/sbin/apache2 -k start
20749   www-data    239380 kB   /usr/sbin/apache2 -k start
32616   www-data    238632 kB   /usr/sbin/apache2 -k start
8846    mysql   238128 kB   /usr/sbin/mysqld
24178   www-data    234228 kB   /usr/sbin/apache2 -k start
32618   www-data    232344 kB   /usr/sbin/apache2 -k start
32615   www-data    232204 kB   /usr/sbin/apache2 -k start
19805   root    208156 kB   /usr/sbin/apache2 -k start

Так само було і в моїй попередній роботі (CentOS). Я тільки припустив, що це всі дочірні процеси, починається апаш для кожного запиту. Ми ніколи не стикалися з проблемами продуктивності / пам'яті через це, хоча ...
Nandhini Anand,

Хм. Я просто переживаю, що в цій системі не вистачить пам'яті, оскільки це VPS.
Трент Скотт

Відповіді:


19

Apache запускає декілька процесів, щоб вони були готові, коли надходить запит клієнта. Нерестування серверного процесу відбувається повільно, тому краще чекати на клієнта.

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

Чому ви вважаєте, що у вас занадто багато процесів apache2, використовуючи занадто багато пам'яті? Що ти очікуєш? Чому ви так очікуєте?


Це на зображенні на основі хмар. Просто здається, що він використовує більше пам'яті, ніж потрібно для такого невеликого сайту. Справжня пам’ять: 496,36 Мб / 92,02 МБ вільного місця обміну: 1024 МБ / 975,93 МБ безкоштовно
Трент Скотт

1
@Trenton: З відповіддю Pawel, що звучить прекрасно. Якщо ви насправді не зіткнулися з аварією mysql або з-за чогось через брак пам’яті, вам слід добре. Якщо це відбувається, то слід шукати конфігурації apache, щоб обмежити ці породжені процеси.
Нандіні Ананд

2
Linux намагатиметься зберегти більшу частину використовуваної пам'яті. Якщо в нього нічого більше не вводити, він використовуватиме оперативну пам’ять для кешу та дискових буферів. Порожня пам'ять втрачає пам'ять (якщо у вас не вистачає оперативної пам’яті).
Paweł Brodacki

3

Як пояснює відповідь Пауеля, apache використовує модель на процес запиту з пулом процесів (або потоком на запит з mpm_worker).

Можливо, ви зможете зменшити використання пам'яті за допомогою веб-сервера на основі неблокуючого вводу-виводу, наприклад nginx. Таким чином серверу не потрібно виділяти процес / потік на з'єднання.


2

Apache запустить стільки процесів, скільки ви їх налаштуєте. У конфігурації відрізняється , якщо ви використовуєте PreFork або працівник багатопроцесорної обробки модулів.

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