У меня возникли проблемы с загрузкой ЦП памяти с помощью веб-сервера Apache.
Мы ведем Сервер Ubuntu 12.04 LTS на виртуальной машине. Наш сервер имеет следующие характеристики:
Мы настроили сервер для запуска Сайт на основе Drupal (7.23). Итак, мы установили Apache, PHP, MySQL ... Версии ниже:
Я бегаю модули apache слишком. Взглянуть (apachectl -M
):
На apache2.conf, у нас такой конфиг:
Timeout 90
KeepAlive On
MaxKeepAliveRequests 80
KeepAliveTimeout 5
HostnameLookups Off
LogLevel warn
<IfModule mpm_prefork_module>
StartServers 10
MinSpareServers 10
MaxSpareServers 30
MaxClients 120
MaxRequestsPerChild 1000
</IfModule>
В Виртуальный хост моего сайта:
<VirtualHost *:80>
ServerName blabla.bla.bla
ServerAdmin bla@bla.com
DocumentRoot /l/disk0/site/public_html
<Directory />
AllowOverride None
</Directory>
<Directory /l/disk0/site/public_html>
Options MultiViews Indexes Includes FollowSymLinks ExecCGI
AllowOverride All
Order allow,deny
allow from all
</Directory>
LogLevel warn
ErrorLog "/l/disk0/site/logs/apache/site/error.log"
CustomLog "/l/disk0/site/logs/apache/sit/access.log" combined
SSLProxyEngine on
RewriteEngine on
RewriteLog logs/rewrite_www_log
RewriteLogLevel 0
Include rewrites-www.conf
</VirtualHost>
Модули Drupal:
Мой сайт прост и не имеет большого количества посетителей. Я говорю о 500 посетителях в день. Drupal может вызвать такую большую загрузку процессора? Или модуль?
Другая проблема - использование памяти. При создании процесса для apache2 выделяется 80 МБ. Думаю, это уже перебор.
Моя проблема в том, что у процессора (всех ядер) высокая нагрузка. В большинстве случаев при нагрузке от 90% до 100%! Оскорбительный процесс - это apache2. Память тоже расходуется без жалости. Из 8 ГБ потребляемая память составляет около От 6,5 до 7,5 ГБ. Я не знаю, неверна ли моя конфигурация apache или мне действительно нужно больше оборудования (думаю, нет). Drupal может вызвать высокую загрузку процессора?
Когда загрузка процессора достигает 100%, сайт отключается, и нам приходится перезапускать apache. Я нашел обходное решение с помощью Drupal, используя APC и установив Boost. имел некоторую эффективность, но загрузка процессора оставалась высокой. Очень высоко.
Если вам нужна дополнительная информация, например о модулях Drupal и расширениях PHP. Пожалуйста, дайте мне знать.
Другая проблема - использование памяти. При создании процесса для apache2 выделяется 80 МБ. Думаю, это уже перебор.
Это реальная или виртуальная память? Честно говоря, не очень; Более того, вы должны сосредоточиться на исправлении вещей, которые вызывают проблемы, а не только на том, что, по вашему мнению, должно быть другим.
Если вы хотите, чтобы процессы Apache занимали меньше памяти, вам следует отключить модули (поскольку каждый из них - это больше кода, который должен находиться в памяти). Но если вам нужны все включенные модули, ну что ж.
Один из подходов, который я использовал при администрировании машины с ограниченным объемом памяти, заключался в перемещении определенных задач из Apache на другие серверы, чтобы я мог настраивать их отдельно.
Но гораздо проще изменить
MaxClients 120
на что-то более разумное для вашей рабочей нагрузки:
Если учесть обращения перезаписи и основной трафик сайта, у нас будет около 70 запросов в минуту. Сейчас у нас 33 входящих соединения.
Я вернусь к этому на мгновение, но если вы имеете дело только с 33 параллельными запросами, вам не нужно 120 рабочих мест!
MaxClients 40
И вам, вероятно, следует отключиться MinSpareServers
и MaxSpareServer
примерно до 5 и 10 соответственно. Нет необходимости, чтобы 30 рабочих сидели и ничего не делали.
Теперь вернемся к
Если учесть обращения перезаписи и основной трафик сайта, у нас около 70 запросов в минуту. Сейчас у нас 33 входящих соединения.
Если у вас 33 одновременных запроса, но вы выполняете только 70 в минуту, есть несколько возможностей:
Если дело №1, я действительно не знаю, как помочь - что-то невероятно неправильно, так неправильно, я даже не знаю, где тебе начать искать.
Если это номер 2, я предполагаю, что вы обслуживаете все свои статические ресурсы (изображения, js, css, шрифты) со своего сервера. Лучше всего разместить их на CDN, но если вы действительно не можете этого сделать, вы можете установить для них сверхдлительное время кеширования и снова включить Varnish. Если вы используете процессы Apache с PHP и множеством других вещей только для обслуживания статических файлов, вы тратите ресурсы впустую - сделайте это чем-нибудь попроще!
Моя проблема в том, что у процессора (всех ядер) высокая нагрузка. В большинстве случаев при нагрузке от 90% до 100%! Оскорбительный процесс - это apache2.
Это постоянное число или только при обслуживании запросов?
Как выглядит дисковый ввод-вывод (iostat -mhx 2
)? Что делает MySQL (show processlist;
)?
Ваш сервер значительно превосходит то, что вы описали. Это хорошие новости, потому что это означает, что вы сможете решить эту проблему.
Я столкнулся с той же проблемой. Загрузите свой веб-контент на локальный компьютер и просканируйте его с помощью обновленного антивируса. В моем случае виноват троянский вирус. После удаления вируса в моем веб-контенте моя проблема была решена.