我在ubuntu 12.04上的hiphop vm中运行wordpress。我的服务器工作正常大约一个小时,然后它停止服务请求,只是超时。我可以看到,当我执行ps -aux | grep "hhvm"
时,hhvm进程仍在运行,但它只是没有响应任何请求。无论如何我可以调试这个吗?我的日志文件中没有出现错误,所以我不知道从哪里开始。在hhvm中运行时有没有办法调试你的PHP代码?
更新
我将线程从50增加到300,服务器持续24小时,现在再次发生同样的事情。
管理页面/ check-health的输出是
{
"load":240
, "queued":0
, "hhbc-roarena-capac":0
, "tc-size":17473376
, "tc-stubsize":12588591
, "targetcache":37280
, "units":223
}
和/stats.html是
{
"stats": {
"pages": [
]
}
}
答案 0 :(得分:0)
听起来您正在使用的HHVM版本中可能存在一个错误,即线程会逐渐挂起,直到没有更多工作线程可用于服务传入请求。
您可以通过使用gdb附加到进程来收集一些详细信息(通过键入“gdb -p $ PID”,其中$ PID是hhvm的进程ID)然后键入“thread apply all bt”以获取所有的堆栈跟踪线程。如果您在https://github.com/facebook/hiphop-php/issues打开github问题并提供所有线程的堆栈跟踪,HHVM团队的人员应该响应并帮助深入研究该问题。您提供的有关如何重现问题的详细信息(例如,提供一个可以重现问题的小型完整代码示例),可以更有可能识别并修复错误。
此外,如果您使用的是较旧版本的HHVM,您可能会尝试升级到较新版本,因为在过去几个月中已经有许多错误修复。如果线程卡住有任何错误修复,我不知道如何,但升级可能会解决您的问题。