Apache httpd 进程处于 lockf 状态

Apache httpd 进程处于 lockf 状态

我们在 FreeBSD 系统上运行 Apache,它上面有多个 Web 应用程序(Wordpress、Magento、自定义 PHP)。随着流量的增加,我们看到越来越多的 httpd 进程处于状态“lockf”(使用“top”)。服务器负载不断增加,直到我们必须重新启动 Apache。

据我了解,此状态表示 Apache 正在等待文件锁定。但我们如何才能找出哪些文件被锁定/导致瓶颈?如果没有这些信息,似乎很难解决这个问题。

答案1

这是一个老问题,但我会尝试一下;)

这种情况听起来就像‘你开车很慢’——但这只是一种感觉,无需了解更多信息。

要回答直接问题(查找使用的文件),请执行以下操作:检查您是否安装了 lsof which lsof,如果尚未安装,请通过 pkg(_install) 安装它(不知道您使用的是哪个 FreeBSD 版本)。

然后通过 top 或 ps 搜索您的 http 进程并使用 lsof 查看使用了哪些文件,lsof -p PROCNUMBER 这将为您提供此进程使用的所有文件/目录/管道等的表。

现在可以检查一下了。看看man lsof,它很长,而且威力很大。

在不知道结果的情况下,尝试减少甚至禁用日志记录,看看这是否有帮助。使用错误的日志记录设置和大量流量甚至可能会杀死大型机器。最后要注意的是:如果您有一台运行您描述的此类设置的良好机器,那么在许多情况下,最大的问题是驱动器 I/O。如果您仍然有 IDE 驱动器,双 Xeon Superbig-CPU 毫无意义 ;)

最后一个可能有趣的资源:http://httpd.apache.org/docs/2.2/caching.html

相关内容