Процесс Apache использует слишком много ЦП

На клиентском мы даем людям доступ VPN к их сетям, таким образом, они могут использовать Outlook из своих домов/ноутбуков.

На серверной стороне мы настроили "внешний" сервер, который является надлежащим smtp-сервером (OpenBSD/sendmail), который является MX для их домена. Exchange использует его в качестве smarthost для отправки. Для получения старый добрый fetchmail работает вполне прилично.

3
задан 15 October 2012 в 18:28
4 ответа

Святой Махони! Ваш Apache, кажется, потребляет слишком много памяти. Какого черта он работает? Загружены ли тонны модулей Apache? У вас есть mod_security с не очень дружественными к памяти правилами? На вашем сайте работает что-то чертовски похожее на Magenta? Кроме того, что-то действительно заставляет ваш PHP-скрипт интересоваться текущим временем. : D

В любом случае, для профилирования PHP вы можете использовать XDebug , а для анализа результатов, например, KCacheGrind , который показывает результаты в удобной для чтения графической форме.

Для анализа производительности в реальном времени в современных дистрибутивах Linux есть команда perf , она похожа на традиционную top , но вы можете перейти к отдельным процессам и, если хотите, вы можете видеть на уровне сборки, что происходит.

Какого черта он работает? Загружены ли тонны модулей Apache? У вас есть mod_security с не очень дружественными к памяти правилами? На вашем сайте работает что-то чертовски похожее на Magenta? Кроме того, что-то действительно заставляет ваш PHP-скрипт интересоваться текущим временем. : D

В любом случае, для профилирования PHP вы можете использовать XDebug , а для анализа результатов, например, KCacheGrind , который показывает результаты в удобной для чтения графической форме.

Для анализа производительности в реальном времени в современных дистрибутивах Linux есть команда perf , она похожа на традиционную top , но вы можете перейти к отдельным процессам и, если хотите, вы можете видеть на уровне сборки, что происходит.

Какого черта он работает? Загружены ли тонны модулей Apache? У вас есть mod_security с не очень дружественными к памяти правилами? На вашем сайте работает что-то чертовски похожее на Magenta? Кроме того, что-то действительно заставляет ваш PHP-скрипт интересоваться текущим временем. : D

В любом случае, для профилирования PHP вы можете использовать XDebug , а для анализа результатов, например, KCacheGrind , который показывает результаты в удобной для чтения графической форме.

Для анализа производительности в реальном времени в современных дистрибутивах Linux есть команда perf , она похожа на традиционную top , но вы можете перейти к отдельным процессам и, если хотите, вы можете видеть на уровне сборки, что происходит.

1
ответ дан 3 December 2019 в 05:30

Вы должны использовать отладчик, например xdebug , чтобы пройтись по вашей программе и найти бесконечный цикл.

0
ответ дан 3 December 2019 в 05:30

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

Очевидно, вы хотите проверить свои журналы и определить, есть ли какие-либо проблемы, о которых сообщается.

/var/log/access_log 
/var/log/php_error
/var/log/error_log

Нажатие C во время работы top также предоставит вам дополнительные данные о процессах, которые работают с таким высоким процентом

Как упоминалось в dialtOne, вы также можете установить mod_status, чтобы получить дополнительную информацию.

Я не уверен, как вы используете php, но установка memcache и APC на машинах обеспечит дополнительную экономию ресурсов. С помощью memcache вам нужно будет настроить свой код так, чтобы сначала он обращался к его кешам для поиска в базе данных. Это может сэкономить массу накладных расходов на сайтах с интенсивным доступом с множеством повторяющихся поисков в базе данных.

Регулировка настроек памяти на php и на том, что использует ваша база данных, также может помочь в управлении нагрузками.

Это находится в вашем php.ini и в любом файле конфигурации вашей базы данных.

Если вы используете вызовы базы данных, вы можете искать медленные запросы.

Другие варианты расширяют ваши дочерние процессы и количество процессов на child это можно настроить в httpd.conf.

Загрузка 5 - не худший вариант, в зависимости от того, сколько у вас процессоров. На некоторых из наших более крупных веб-серверов я видел очень высокие нагрузки и раньше, и сайт по-прежнему работает нормально. Это действительно то, сколько энергии вы хотите потратить на настройку сайта.

Удачи!

Другие параметры расширяют ваши дочерние процессы, и количество процессов на одного ребенка можно настроить в httpd.conf.

Загрузка 5 - не худший вариант, в зависимости от того, сколько у вас процессоров. На некоторых из наших более крупных веб-серверов я видел очень высокие нагрузки и раньше, и сайт по-прежнему работает нормально. Это действительно то, сколько энергии вы хотите потратить на настройку сайта.

Удачи!

Другие параметры расширяют ваши дочерние процессы, и количество процессов на одного ребенка можно настроить в httpd.conf.

Загрузка 5 - не худший вариант, в зависимости от того, сколько у вас процессоров. На некоторых из наших более крупных веб-серверов я видел очень высокие нагрузки и раньше, и сайт по-прежнему работает нормально. Это действительно то, сколько энергии вы хотите потратить на настройку сайта.

Удачи!

0
ответ дан 3 December 2019 в 05:30

Я бы рекомендовал включить Apache mod_status и включить ExtendedStatus. У Slicehost есть отличная статья о том, как этого добиться (я бы использовал пакет «elinks» вместо «lynx», но это личное предпочтение). Когда вы просматриваете URL-адрес состояния сервера Apache, там будет PID, Столбцы VHost и Request - они должны пройти долгий путь к точному определению вызываемого URI, который можно использовать для отслеживания конкретного выполняемого кода.

Вот настроенная версия статьи Slicehost для включения mod_status :

sudo apt-get install elinks
sudo /usr/sbin/a2enmod status
sudo sh -c "echo 'ExtendedStatus On' > /etc/apache2/conf.d/extendedstatus"
sudo vi /etc/apache2/sites-available/server-status

<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from localhost
</Location>

sudo /usr/sbin/a2ensite server-status
sudo apachectl configtest
sudo service apache2 reload

Затем, чтобы просмотреть состояние сервера:

elinks -dump -dump-width 256 http://localhost/server-status
5
ответ дан 3 December 2019 в 05:30

Теги

Похожие вопросы