我们公司有三台专用服务器,一台运行Nginx,作为web服务器(php),另一台处理MySQL和Memcached,另一台用于服务静态文件:css,js和images。
所有的服务器都在New Relic上performance出色,尤其是静态文件服务器:
问题是,在高峰时期,显然这些图片(大小可以是100kb-200kb)需要很长时间才能加载一些用户(有时候很多秒,有时甚至是一分钟),通常只需要几个几秒钟)。
任何想法我们可以做什么? 理想情况下,如果CPU,RAM或带宽都没有达到任何限制,则不会发生这种情况。
任何关键的Nginx的configuration参数,我们应该看(可能会改变)?
我可以想到两种可能性。
我们可以坐在这里,猜测你的瓶颈在哪里,但是一些更一般的build议可以帮助你更快地find自己的瓶颈。
jeffatrackaid 昨天写了这个答案 ,这是我刚刚写的一个更简洁的版本。 我build议先阅读这些内容,以帮助了解性能debugging是如何完成的。
在你的情况下,我会首先使用Firebug来确定在高峰时间哪个位的请求进行缓慢。 如果带宽不是真正的问题,这应该排除带宽。 查看Firebug的“Net”部分,看看哪个部分请求在快速时间和慢速时间之间变化。
接下来,在这些缓慢的时刻之一,我会在nginx的一个工作人员身上运行-t
和-T
选项。 分析的输出应该告诉你究竟在哪里nginx进展缓慢。 将strace输出写入文件非常有用,然后使用less
或grep
来识别花费很长时间的系统调用。
您可以使用-c
选项进行strace。
一旦确定了缓慢的系统调用,确定哪个nginx参数需要更改仍然是一些工作,但是您应该顺利完成。 如果你需要这方面的帮助,请回来问一些更具体的问题。
如果事实certificate是一个基于文件的系统调用,一定要往回查找跟踪,直到find正在等待的文件。 这将是一个很大的暗示。