我有一台托管众多PHP / MySQL网站的服务器(VPS)。大多数都非常相似,因为它们都是手工编码的网站,提供来自MySQL数据库的文本和图像。
最近服务器流量增加了相当多,服务器正在经历一些减速。因此,我想尝试识别服务器中的瓶颈,以便提高服务器的速度。
有没有人有关于如何做到这一点的任何提示?我在一些较大的网站上设置了计时脚本,看看网页创建需要多长时间,但它总是很低的数字。根据服务器统计数据,主要问题似乎是CPU / MySQL的使用情况。无论如何都要识别需要很长时间的查询吗?
由于 克里斯
答案 0 :(得分:7)
如果您使用的是mysql> = 5.1,则可以在脚本中使用mysql_query("set profiling=1");
,如下所示:
mysql_query("set profiling_history_size=100");
mysql_query("set profiling=1");
....
....
any mysql query
....
....
$rs = mysql_query("show profiles");
while($rd = mysql_fetch_object($rs))
{
echo $rd->Query_ID.' - '.round($rd->Duration,4) * 1000 .' ms - '.$rd->Query.'<br />';
}
示例输出:
答案 1 :(得分:4)
从firebug的Net选项卡开始,查看哪些资源的响应速度最慢。
但即使没有任何剖析,我也可以告诉你
从MySQL数据库提供......图像
至少是其中一个原因。
答案 2 :(得分:2)
是的,有办法! MySQL具有内置功能。 You can set up a log file to log slow queries
其他一般建议当然是对常见查询使用EXPLAIN
并检查是否所有内容都已正确编入索引。
答案 3 :(得分:1)
XDebug有一个分析工具,可以为您提供有关代码瓶颈的大量信息。查看http://xdebug.org/docs/profiler。