Hi agentzh:
在 2013年1月8日星期二UTC+8下午12时19分18秒,agentzh写道:
Hello!2013/1/7 Demon:
> 现在遇到了这样一个麻烦,curl调这个接口的时候,偶尔会有starttransfer_time刚刚好为3秒多一点点,这对调用的性能造成了严重的影响,我找了很久也没有找到原因。是否有人遇到过这个问题?而且这个问题会随着并发量的增加而随之增加。
> I need help... :))
>
一个常见的原因是因为 TCP 连接在建立过程中因为 SYN 包丢失而发生重传。
至于更一步的可能原因,一是网络丢包,一是因为 nginx 一侧的系统 accept 队列溢出而导致 SYN 包被系统主动丢弃(可以考虑调大
backlog 参数 [1] 或者适当增加 worker 进程的个数来缓减此问题)。第二种情况一般是因为 nginx 过载或者 nginx
被过度阻塞而导致的。
我的worker数量一直是8,而且backlog为4096,如何监测backlog队列里的数量?还有就是我希望nginx获得最大的传输速度应该设置哪些参数?
因为单次请求数据量很大,所以work的传输会阻塞而导致性能大幅下降。
thx :)
究竟是何种原因,你需要进行更进一步的追踪。
Best regards,
-agentzh
[1] 见 http://wiki.nginx.org/HttpCoreModule#listen