我必须pipe理一个我没有开发的网站。 它是在PHP中使用一个MySQL数据库,它位于Web服务器。 该网站,有时(当访问者增加太多)停止响应,或响应太慢。
我已经开发了一些PHP的网站,但从来没有照顾过pipe理,所以真的不知道从哪里开始。 服务器(硬盘)似乎很好,当networking停止响应CPU使用率约55%,并有很多的内存。
我不是要求别人解决这个问题。 我只希望有人能给我一些关于我在哪里可以find日志的提示,我应该如何阅读和解释它们。 那么,那样我就能够知道它的净stream量,数据库(哪个查询),或者什么。
谢谢!
更新:忘了说:这是一个Windows Server 2003。
注意:我用Jet Profilerlogging了大概一天的时间。 我并不完全了解它提供的所有信息,但有一个查询标记为非常慢。 这是有道理的,因为它是一个具有三个条件的where子句的select。 最初我没有在我的问题中包含这个,因为当我从MySQL查询浏览器运行查询时,不需要太长的时间。 这是在0.01秒以内。
通常数据库会降低网站的速度。 很可能你有一些写得不好的/没有编入索引的查询,是什么导致了放缓。 在MySQL中,您可以通过打开慢速查询日志来查找花费太长时间进行响应的查询 。
通常这包括以下步骤:1.在MySQL日志文件夹(通常为/var/log/mysql/创build一个名为slowqueries.log的文件。 使用chmod将其权限更改为用户mysql(假设您在Linux上)。 2.以root身份login到我的sql并发出以下查询: set GLOBAL slow_query_log_file='/var/log/mysql/slowqueries.log'; -- sets the log file set GLOBAL slow_query_log_file='/var/log/mysql/slowqueries.log'; -- sets the log file SET GLOBAL slow_query_log=1; -- turns on slow query logging SET GLOBAL slow_query_log=1; -- turns on slow query logging
一旦确定执行时间过长的查询,您可以使用EXPLAIN或EXPLAIN EXTENDED来进一步分析它们,并通过添加索引/改进连接来查看它们如何进行优化。
我用一个运行mysql的独立服务器用PHP编写的网站遇到类似的问题。 我能够使用Jmeter和一个方便的插件,它会给你一个基于graphics的服务器健康状况分类:code.google.com/p/jmeter-plugins/wiki/PerfMon#Installation
这可以真正帮助您诊断问题,因为您将能够模拟不同数量的用户。 在一个侧面说明,我能够使用PHP的APC插件优化代码。 只是一个想法 :-)
检查MySQL查询,如果你有权访问服务器面板,看看发生了什么。 非优化的SQL查询可以把你的服务器closures(发生在我身上)。 你应该从那开始,必须有一些不够优化的东西,放慢速度,或者你的服务器工作不正常。