我从头开始写了一个网站CMS,现在网站开始慢慢地获得流量(30-40k/天),我看到服务器的负载比它应该的要高得多。在内存为8 8gb的四核机器上,它一直在6-9之间徘徊。我写的脚本在400-500k/天的网站上表现得很好,所以我想我不是完全无能的。
我已经通过组合查询,完全消除了一些mysql调用,并用静态TXT文件替换网站的某些部分,在必要时用php更新,从而将每个页面上执行的查询数量减少了近60%。所有这些更改都会影响页面执行时间(索引加载时间为0.3秒,而不是以前的1.7秒)。
实际上没有IOwait,mysql只有30mb。该网站运行lighttpd,php 5.2.9,mysql 5.0.77
我可以做些什么来弄清楚到底是什么导致了高负载?我真的想本地化这个问题,因为"top“只是告诉我它的mysql,它总是在50-95%的CPU使用率之间徘徊。
发布于 2009-06-23 18:37:38
你能做的最好的事情就是分析你的应用程序代码。找出哪些调用占用了您的大量资源。下面是一些选项(谷歌搜索"php profiler“的前三个关键词):
您可能有一些SQL查询非常慢,但是如果它们不经常运行,它们可能不是性能问题的主要原因。您可能拥有速度更快的SQL查询,但它们的运行频率太高,因此对性能的净影响也更大。分析应用程序将有助于识别这些应用程序。
就数据库使用而言,提高应用程序性能的最通用建议是识别不经常更改的数据,并将该数据放在缓存中以加快检索速度。这取决于您确定哪些数据将从中获益最多,因为它非常依赖于您的应用程序使用模式。
就缓存技术而言,APC和memcached在PHP中都有很好的支持。
您还可以仔细阅读MySQL optimization chapter,以确定与您的应用程序相关的任何改进。
其他不错的资源是MySQL Performance Blog和“High Performance MySQL”这本书。如果你真的想运行一个基于MySQL的网站,你应该经常查阅这些资源。
发布于 2009-06-23 18:39:34
使用EXPLAIN帮助您优化查询/排除查询故障。它将向您显示表是如何被引用的,以及正在读取多少行。它非常有用。
另外,如果你对你的MySQL configuration做了任何修改,你可能想要重新访问它。
发布于 2009-06-23 18:26:19
mytop是一个很好的起点。它基本上是MySQL的首选,并将为您提供一个窗口,了解数据库到底在做什么:
http://jeremy.zawodny.com/mysql/mytop/
诺亚
https://stackoverflow.com/questions/1034268
复制相似问题