Мы запускаем Apache в системе FreeBSD, в нем есть несколько веб-приложений (Wordpress, Magento, собственный PHP). По мере увеличения трафика мы видим все больше и больше процессов httpd в статусе «lockf» (с использованием «top»). Нагрузка на сервер увеличивается, пока нам не придется перезапускать Apache.
Насколько я понимаю, в этом состоянии Apache ждет блокировки файла. Но как узнать, какой файл (ы) нужно заблокировать / вызвать узкое место? Без этой информации решить проблему будет очень сложно.
Это старый вопрос, но я попробую;)
Эта ситуация звучит как «у вас медленная поездка» - но это просто ощущение, когда вы ничего не знаете.
Чтобы ответить на прямой вопрос (поиск используемых файлов), сделайте следующее: Проверьте, установлен ли у вас lsof. which lsof
, если не установлен, установите его с помощью pkg (_install) (не знаю, какая у вас версия FreeBSD).
Затем найдите свои http-процессы по top или ps и используйте lsof, чтобы увидеть, какие файлы используются с lsof -p PROCNUMBER
Это дает вам таблицу ВСЕХ файлов / каталогов / каналов и т.д., используемых в этом процессе.
Теперь это можно проверить. Посмотри на man lsof
, он очень длинный и имеет большую мощность.
Не зная результата того, что вы обнаружите, попробуйте уменьшить или даже отключить ведение журнала и посмотрите, поможет ли это. Использование неправильной настройки ведения журнала и большого трафика может убить даже большие машины. И последнее замечание: если у вас есть хорошая машина, на которой выполняется описанная вами установка, САМАЯ БОЛЬШАЯ проблема - это во многих случаях ввод-вывод диска. Dual Xeon Superbig-CPU не имеет смысла, если у вас все еще есть диск IDE;)
И последний ресурс, который может быть интересен: http://httpd.apache.org/docs/2.2/caching.html