我有一个基于Linode 1024 VPS的networking服务器
还有一些基于WordPress 3.3.1的博客。 其中之一是一个普通的博客,用默认的configuration,主题,只是“Hello World”的post,来testing服务器。 另一个是从其他服务器克隆的博客,有近10k的post和超过10k的评论。 这个博客每天有5K个独特的。
服务器在testing博客的abtesting中给出了很好的数字,但是对克隆的博客进行相同的testing是不可能的:abtesting加载服务器太多了,我必须停止这个进程,而ab进程这真的很差的结果 。
在正常操作时,htop也显示“正常”负载,但在abtesting期间正常负载较大 。
还有一件奇怪的事情发生了(对我来说最重要): 第一个字节的时间非常长 ,但之后等待网站载入速度非常快。 这可以通过tools.pingdom.com等服务轻松testing, 从而得到这个结果 。 请注意那个意思是“等待时间”的黄色区域。
为什么发生这种情况? 可能的想法:
如果有人需要更多的信息,
首先,这不是一个答案,而是一种诊断方法。
这绝不是全面的 – 甚至任何接近的,这只是一个起点。
时间第一字节
第一个字节的时间(TTFB)有多个组件:
当您查看ApacheBench输出时,您还会看到:
比较以消除组件
除了less数例外,你的问题将在后端处理,通常归结为过度复杂/低效的代码,或configuration不佳的MySQL。
解决这个问题的一个好方法是通过一系列的比较来消除你的设置的各个方面。 一个好的比较应该保持尽可能的恒定,以帮助缩小问题。 目前,您已经提供了以下比较:
理想的testing会让你复制完整的网站,但是删除除了一篇文章和相关评论以外的所有内容。 这个testing的关键是要确定是否大量的内容是问题,或者如果你的设置(wordpress插件,主题等)的其他方面是原因。 你将基本上在相同的(新的)服务器上比较相同的站点的性能 – 加载相同的页面(相同的长度等) – 唯一的区别是总站点内容(例如有一个很好的机会,一些插件不随着内容的增加而顺利扩展)。
没有改变任何东西,你可以做一些其他的比较:
调整你的后端
在这一点上,您应该已经发现问题或者得出结论说它存在于您的后端。 这让你Nginx,PHP或MySQL。
(我在这里应该提到的是,知道你的瓶颈是CPU,RAM还是I / O – 在sar , top , iostat , vmstat , free等之间,你应该能够得出一些结论总是很方便的。 )
Nginx的
Nginx正在接受请求,要么提供静态内容,要么将请求转移到PHP-FPM–通常Nginx并没有太多的优化。
理想情况下,您的testing博客和克隆博客具有相同的configuration,在这种情况下,您已经有效地消除了Nginx的问题。
应用
在你试图识别代码中的问题的情况下(例如,一个缓慢的插件等),慢日志是开始的地方。
MySQL的
PHP
PHP-FPM
值得注意的是,你的htop结果显示php-fpm消耗了CPU的大部分 – 而你的问题似乎与这个直接相关。
高速caching
一旦你优化了每个可能的瓶颈,开始caching。
有时候,考虑到应用程序和硬件的限制,您可能无法提高后端性能 – 但是,这是caching的重点 – 尽量减less后端的使用。
进一步阅读