PHP脚本随机变得非常慢响应 – 数据库locking?

我不知道是否发布这里或在stackoverflow,所以道歉,如果它在错误的地方。

我有大约7个PHP脚本运行在一个centOS VPS上。 这些脚本中的每一个都会联系游戏服务器并处理这些日志,而日志则会执行一些数据库查询或将信息发送回游戏服务器。

我有一个问题,其中一些脚本会随机变得很慢,我不知道从哪里开始进行debugging。 每个脚本连接到自己的数据库模式,但在同一个MySQL服务器上。 每个脚本将每秒执行大约4次插入,并在其各自的数据库上执行大约两次的select语句。 我认为数据库locking可能会导致问题,但是从数据库中读取的某些控制台消息每隔30秒发送到游戏服务器控制台,即使脚本响应其他命令的速度较慢。

非脚本正在使用大量的内存或CPU的能力。 每个约0.1%。

我知道这个信息是非常模糊的,但我根本不知道linux(事实上,top是关于我的限制),我真的不知道从哪里开始debugging。

谢谢。

有几件事你可以尝试:

  • 检查系统和应用程序日志中是否有任何相关消息。 有时会出现问题/超时logging。 这包括DerfK提到的MySQL慢速查询日志。
  • 在服务器上的某种监控系统将是很好的。 这将告诉你,如果有任何明显的瓶颈(CPU,内存,IO等)。 或者,如果问题发生在特定时间,您可以使用各种命令行工具top,vmstat,iostat等来检查系统状态。 确保首先消除显而易见的/常见原因(高CPU,低RAM,交换使用,IO锁/问题/高负载)。
  • 如果您可以testing脚本的基准/压力testing,则可能有助于确定问题的根源。 能够可靠地复制问题是解决问题的一大步。
  • 考虑在脚本中添加一些基本的日志logging。 我将首先对脚本运行时间进行基本检查,并仅在运行超过X秒的时间才输出。
  • 你提到脚本parsing日志。 如果可能的话,尝试在同一组日志上多次运行脚本,看看问题是在同一个地方发生,还是在不同的地方随机发生。 您也可以尝试禁用写入,以查看问题是由读取/parsing还是写入(或两者)引起的。
  • 如果您发现运行缓慢的特定查询,请尝试通过命令行客户端在数据库上手动运行/testing它们。 这会告诉你,如果查询本身很慢,或者只是由于某种原因从PHP远程执行它们。