经调整client_body_buffer_size,目前性能有显著提升
从400ms的平均值到了11ms
多谢大家!
On Thursday, October 18, 2012 2:05:36 AM UTC+8, agentzh wrote:
Hello!2012/10/17 Freeman Zhang:
>
> 我们可以观察到, B机处理POST请求平均每个Request比A机慢了180ms!!
>
proxy cache 是写磁盘的,而写磁盘是阻塞 I/O 操作,会影响 nginx worker 进程及时处理那些 POST
请求的处理。所以很可能是因为你配置了 proxy cache 的 B 机因为 nginx worker 经常长时间阻塞,而导致处理 POST
等其他请求的延时增加。
> B机 IO STAT
> Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz
> avgqu-sz await svctm %util
> sda 0.00 423.00 1.60 627.00 12.00 4197.60 13.39
iostat 的输出证明了 B 机的磁盘写厉害得多。
>
> 感觉这两台机器都未达Load瓶颈,且都配置的是SSD硬盘。
> 如果要使得增加Cache后的POST性能赶上未增加Cache的机器,应该如何做?
>
SSD 的性能优势体现在随机读写上,而 proxy cache 在缓存大响应体时以顺序读写为主,且无论如何都会阻塞 Nginx worker 进程。
建议适当增加 Nginx worker 进程的数目。
另外,FlameGraph 有助于准确分析生产系统中的瓶颈分布,可以得到整个全景图。更多细节可以参见:
http://dtrace.org/blogs/brendan/2011/12/16/flame-graphs/
http://groups.google.com/group/openresty/browse_thread/thread/bbea6e29658e34c9
Best regards,
-agentzh