2
我们的web服务器出现问题,其中越来越多的Apache进程被卡住等待文件锁定(由PHP flock()导致)以某种方式解决,但从来没有。最终,网站变得越来越慢,最终完全停止,直到Apache重新启动。如何判断当WCHAN = flock_lock_file_wait时,Apache正在等待哪个文件
我正在理论上,不知何故,坏代码是在这背后,也许在我们自己的磁盘缓存机制。但我无法追查到它。 (我们在Ubuntu上运行。)
我的问题是,我怎么知道它卡住了哪些文件?如果我能看到挂断的位置,我可以更容易地找出错误代码的位置。当我做这个命令:
ps -o pid,tt,user,fname,wchan -C apache2
我得到这个:
730 ? www-data apache2 flock_lock_file_wait
3085 ? www-data apache2 flock_lock_file_wait
5393 ? www-data apache2 flock_lock_file_wait
5397 ? www-data apache2 flock_lock_file_wait
11181 ? www-data apache2 flock_lock_file_wait
30280 ? www-data apache2 flock_lock_file_wait
有什么办法,我从这里到其确切的文件Apache是锁定/等候眼见?
哇,非常感谢你。对我来说是好事,lsof工具已经安装好了。不幸的是,我得到的东西对于其中一个进程来说相当长 - 包括大约六个不同的日志文件,其中一个(我相当确定)是我的锁定文件。我不认为通过查看lsof输出可以看出哪些文件可能处于“卡住”或“锁定”位置? – dvanhook
http://www.netadmintools.com/html/lsof.man.html去OUTPUT,然后看看FD的NnRrWwUuXx含义,不同类型的锁 – regilero
如果你认为答案是有用的,投票支持它,请提问者检查绿色标记以接受它。 – regilero