我的linux服务器网站一次又一次地停止运行但是SSH,FTP等还活着。所以我通过SSH查看了服务器,并使用了top命令列出了所有进程。它表明,当执行某些PHP页面时,mysql的CPU使用率达到100%。那么有没有任何命令/日志可以用来找出哪些PHP页面占用了大量的mysql用法?谢谢......
答案 0 :(得分:1)
您可能需要查看Apache日志格式,看它是否包含%D参数,因为这表示以微秒为单位提供请求所需的时间。
如果排除除PHP脚本请求之外的任何内容,您应该知道哪些脚本花费的时间最长,这表明执行时间很长。显然,这也可能意味着一个非常大的响应有效载荷...
答案 1 :(得分:1)
资源消耗有多个方面。
正如mobius所提到的,您可以在MySQL中使用SHOW FULL PROCESSLIST来查看当前正在运行的内容。查看处理时间超过预期,查看查询以查找有关应用程序源自何处的提示。
问题可能与应用程序无关。它可能只是调整MySQL的问题,这将是关于在大多数时间添加或更改索引的问题。 EXPLAIN是一个命令,可以帮助您分析MySQL决定使用的执行计划。阅读EXPLAIN需要一些练习。我最好的参考是High Performance MySQL。
您还可以使用MySQL慢查询日志来获取有关当您不在服务器前时发生的慢查询的信息。
如果MySQL以100%运行,您可能会从那里发现问题。如果您真的想跟踪PHP的使用情况,可以设置XHProf,这是Facebook创建的高性能分析器,可以在生产站点上运行。您可以将其设置为从100个样本中抽取一个请求,并更全面地了解您网站的效果。有一些文章解释了如何设置它。
最后,可以在开发中使用XDebug和KCacheGrind来一次分析一个请求。
答案 2 :(得分:0)
mytop - http://jeremy.zawodny.com/mysql/mytop/(在mySQL上显示完整的进程列表) Xdebug Profiler - http://xdebug.org/docs/profiler
答案 3 :(得分:0)
如果MySQL陷入100%的困境,那么你可能在你的一个PHP应用程序中得到了一些调整错误的MySQL查询。这一次将在MySQL守护进程中计时,因此不会显示在%D值中。这可能是过时的索引。
如果您可以通过SSH在命令提示符下访问D / B,那么您可以尝试在任何大型表上执行ANALYZE TABLE和OPTIMIZE TABLE。另请参阅"慢查询日志"在MySQL文档中。
不幸的是,修复此问题可能需要您进入Application内部。