Apache 2.2 mpm_worker: більше тем або більше процесів?


17

Використовуючи Worker MPM в Apache, ви можете поспілкуватися з кількістю дочірніх процесів та кількістю потоків сервера на дочірній процес.

Які переваги та недоліки кожного? За яких обставин ви б збільшили те чи інше?

Відповіді:


25

Поки що це були мої головні міркування при визначенні потоків проти процесів:

  1. Нитки будуть використовувати набагато менше пам'яті жителів, ніж процеси. Так, у динамічно пов'язаних бібліотеках багато пам’яті обмінюється між процесом управління Apache та його дочірніми процесами, проте кожен новий Процес повинен інстанціювати всі включені модулі.

    Це легко перевірити, порівнявши використання пам'яті кожного Процесу, де у вас є, наприклад, 5 процесів і 1 нитка кожен, або 5 процесів і 25 ниток кожен. У моєму випадку тут кожен дочірній процес займає близько 7 Мб незалежно від кількості потоків.

    + Для ниток

  2. Для завантаження нового Процесу потрібно тривати більше часу, ніж цикли процесора, ніж це робить нитка. Це можна перевірити, перевіривши середню кількість сторінок, що подаються через "ab".

    + Для ниток

  3. Нитки процесів все залежать від процесу. Найбільше тут хвилює, що якщо щось трапиться з процесом, це вплине на всі теми, пов'язані з ним. Якщо ви працюєте з одним процесом з купою ниток, тоді, коли процес помре, так будуть і нитки. Тому більше процесів призведе до кращого розмежування, і, отже, до більшої толерантності до помилок.

    + Для процесів

  4. Зв'язано з (3), для модулів, таких як PHP, їх пам'ять завантажується процесом і ділиться по всіх потоках. Це означає, що якщо у вас php з memory_limit встановлено на 100Mbs з 25 нитками нижче, то при максимальному навантаженні технічно кожна нитка зможе виділити максимум 4 Мб кожна (звичайно, це не відбудеться таким чином, дехто зависне, хтось буде голодувати).

Отже, зрештою, це дійсно залежить від вашої справи використання. Враховуючи це, ви захочете максимально використати кількість потоків, щоб зменшити використання пам'яті та підвищити швидкість реагування. Однак вам доведеться врівноважити це з належною кількістю процесів для кращої відмовостійкості.

Звичайно, я тут не експерт, тому що мені лише нещодавно довелося цим займатися, тому я з нетерпінням чекаю, які ще відповіді можуть з’явитися тут!


1
+1 за гарною загальною інформацією. Я хотів би побачити більше деталей / глибини, якщо можливо, якщо це можливо.
sh-beta
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.