0

我在 ubuntu 12.04 的 hiphop vm 中运行 wordpress。我的服务器正常工作了大约一个小时,然后它停止服务请求并且只是超时。我可以看到当我执行时 hhvm 进程仍在运行,ps -aux | grep "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": [
    ]
  }
}
4

1 回答 1

0

听起来您正在使用的 HHVM 版本中可能存在一个错误,其中线程会随着时间的推移逐渐挂起,直到没有更多的工作线程可用于处理传入请求。

您可以通过使用 gdb 附加到进程来收集一些详细信息(通过键入“gdb -p $PID”,其中 $PID 是 hhvm 的进程 ID),然后键入“thread apply all bt”以获取所有线程的堆栈跟踪。如果您在https://github.com/facebook/hiphop-php/issues打开一个 github 问题并提供所有线程的堆栈跟踪,HHVM 团队的某个人应该响应并帮助深入研究该问题。您提供的有关如何重现问题的详细信息(例如,提供重现问题的小而完整的代码示例),就越有可能识别和修复错误。

此外,如果您使用的是旧版本的 HHVM,您可能会尝试升级到新版本,因为在过去几个月中已经修复了许多错误。我不知道是否有针对线程卡住的错误修复,但升级可能会解决您的问题。

于 2013-09-12T10:21:05.667 回答