2011-12-09 145 views
1

我有一个服务器(VPS),它承载了大量的PHP/MySQL网站。大多数都非常相似,它们都是手动编码的网站,提供来自MySQL数据库的文本和图像。分析和优化PHP/MySQL网站

最近服务器流量增加了相当数量,服务器正在经历一些减速。因此,我想尝试在服务器中识别瓶颈,以便提高服务器的速度。

有没有人有关于如何做到这一点的任何提示?我在一些较大的网站上设置了时间脚本,以查看创建网页需要多长时间,但其数据总是非常低。根据服务器统计,主要问题似乎是CPU/MySQL的使用情况。无论如何要确定需要很长时间的查询吗?

感谢 克里斯

+0

流量增加通常会导致服务器负载,那么是什么问题?并解释**公平数额** – ajreal

+0

每个月超过100万次展示。没问题,它很好,但我想优化我的网站,而不是仅仅购买更大的服务器。 – Chris

回答

3

开始从Firebug的Net选项卡,看看有什么资源具有最慢的响应。从MySQL数据库

是原因至少一个

但我可以告诉你,即使没有任何分析认为

服务...图像。

+0

嘿,谢谢,但网站的实际HTML结构是快速的,一切都是手工编码,非常精益。我相信这个问题是在后端脚本中,我不知道如何配置:) – Chris

+0

这些“后端”脚本是什么?你没有提到它们。此外,“一切都是手工编码,非常精益”听起来不像一个分析技术。 –

+0

通过后端脚本我的意思是PHP/MySQL。 HTML,CSS和JavaScript非常精简。问题出在服务器性能上,而不是网页内容本身。 – Chris

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 />'; 
} 

输出示例:

enter image description here

+0

我能从中得到什么样的结果?它可以用于多个查询或只有一个? – Chris

+0

多重查询:在脚本的顶部对星标进行星号分析,并将结果打印在脚本的底部。 –

+0

非常有趣!谢谢。 – Chris