我有一个运行Apache并托pipeWordpress博客的m1.medium Amazon EC2实例。 反过来,Wordpress在不同的EC2实例上使用MySQL数据库。 该Wordpress网站设置了W3总caching,运行良好,网站上的大部分静态内容都来自CDN。 该网站定期运行less量的stream量,然后偶尔会得到一些巨大的stream量高峰……当发生这些尖峰(超过150人访问该网站),网站下降。 每次使用一些负载testing工具,我也可以做到这一点。
这是主服务器空闲时的“顶”
top - 23:21:23 up 103 days, 19:40, 3 users, load average: 0.91, 0.60, 0.62 Tasks: 93 total, 1 running, 92 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0%us, 0.9%sy, 0.0%ni, 99.1%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 3844856k total, 1756268k used, 2088588k free, 150132k buffers Swap: 0k total, 0k used, 0k free, 833740k cached
但是,如果我做一些负载testing来模拟数百个用户访问一个静态graphics文件(这显然不会触发Wordpress,PHP或数据库),一切都很好:服务器负载保持低,graphics文件服务很快,等等
我的Apache设置(服务器内存3.1G /〜每个httpd实例8100k =〜400 MaxClients):
StartServers 5 MinSpareServers 5 MaxSpareServers 10 ServerLimit 400 MaxClients 400 MaxRequestsPerChild 0
所以基于这一切,似乎问题与使用PHP或MySQL的时候有关。
在MySQL服务器上,无论我做什么,负载保持在0,并且慢查询日志保持空白…所以我觉得事情是健康的。 这里是我的SQL服务器的“顶部”:
top - 23:20:21 up 103 days, 19:12, 5 users, load average: 0.08, 0.03, 0.05 Tasks: 115 total, 1 running, 114 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 3844856k total, 1076912k used, 2767944k free, 158412k buffers Swap: 0k total, 0k used, 0k free, 638092k cached
这一切都让我认为,这些不太可能发生的情况之一正在发生:
我觉得我已经检查了一切,但仍然没有运气。 我还应该检查什么? 我还有什么可以尝试?
在这种情况下,m1.medium的“马力”相当于一个cpu,在显示最高时为0.91。 .91的加载意味着“现在,一个CPU的91%的工作正在被进程请求”。 总之,有些东西似乎在空闲的时候会让你的CPU挨饿。
假设是这个问题,我会减less任何服务正在吃你的CPU。 如果这不是您的主服务器上的选项,我会做你现有的机器ami,然后旋转另外两台主机,实例typest1.micro,并确保只有最低限度的服务运行在它(在这种情况下的Apache。 )然后轮循DNS您的网站地址。 这将有效地使您的突发CPU容量增加三倍,同时提供两倍cpu基准。
我们通过EC2上的一个较小的实例来服务更多的用户(并且已经使用了apache基准testing,最多可以有1000个并发会话)。
好消息是你可以重现它。
有很多东西可以检查:
在两台服务器上放置一个类似新文件的工具(使用免费版本logging初学者的cpu /内存历史logging)。 无论如何,这是很好的趋势。
从两台服务器之间的通信开始。 做一些文件传输并检查速度。
我们遇到了一个问题,wp-cron.php不时地查杀wordpress服务器。 尝试禁用每隔几分钟将其移动到一个cron调用。
回报你find的东西,我可以提出更多的想法。