Наблюдение вызова accept () от вашего процесса Apache вовсе не является необычным - это веб-сервер, ожидающий новый запрос.
Прежде всего, вы хотите установить параметры загрузки. Что-то вроде
vmstat 1
покажет вам, что ваша система. Посмотрите на столбцы «swap» и «io». Если вы видите что-то кроме «0» в столбцах «si» и «so», ваша система перезагружается из-за нехватки памяти. Подумайте о том, чтобы уменьшить количество работающих дочерних элементов Apache или выделить больше оперативной памяти на вашем сервере.
Если оперативная память не является проблемой, посмотрите на столбцы cpu. Вы заинтересованы в столбцах «мы» и «sy». Они показывают процент времени, затраченного процессором на пользовательские процессы или систему. Большое число «нас» указывает пальцем на Apache или ваши скрипты - или, возможно, что-то еще на сервере.
Запуск
top
покажет вам, какие процессы наиболее активны.
Вы исключили свою базу данных? Наиболее распространенная причина неожиданно высокой нагрузки, которую я видел в производственных стеках LAMP, сводится к запросам к базе данных. Возможно, вы развернули новый код с дорогим запросом; или дошло до того, что в вашем наборе данных достаточно строк, чтобы ранее дешевые запросы становились дорогими.
В периоды высокой нагрузки делать
echo "show full processlist" | mysql | grep -v Sleep
чтобы увидеть, есть ли либо длительные запросы, либо огромное количество одинаковых запросов, работающих одновременно. Другие инструменты mysql помогут вам оптимизировать их.
Может оказаться полезным настроить и использовать mod_status для Apache, который позволит вам увидеть, какой запрос обслуживает каждый дочерний элемент Apache и как долго он это делает.
Наконец, настройте долгосрочный статистический мониторинг. Что-то вроде zabbix легко настроить, и оно позволит вам отслеживать использование ресурсов с течением времени, так что если дела пойдут медленно, у вас есть исторические базовые показатели для сравнения, а также лучше понять, когда начались проблемы.