On 2012/10/23 2:11, agentzh wrote:
Hello!
2012/10/22 major:
冒昧给你发信,有个技术问题想向你请教:)
先说说我的生产环境吧,9G的流量,80w的req/s请求,静态或者动态内容混合。 目前的结构是6台前端nginx做upstream
proxy_pass,请求到后端一堆的cache server上。
然后。。。然后我有了一个nb的机器(32core,64G内存),和两个万兆直连(公网+内网),万兆卡直连核心。
真 NB :)
搭车看NB机器。
为什么前面不用2台或以上LVS作4层负载均衡,然后用LVS接upstream的nginx。
Nginx接Nginx效率并不高,而且你只有一 台NB的Nginx机器,如果这台机器挂了,
你所有的通路就断了。
然后。。。把流量切到了这台服务器的nginx前端代理上(七层代理模式,继续proxy_pass的),发现当连接到到30w,流量在3G左右的时候,Recv-Q开始堵塞,无法正常建立连接,大量的二次握手包堵塞。
当一台机器跑两个nginx(分别绑定到两个IP:port上)的时候,这个数据可以翻倍。
也许你的 nginx worker 启动数目不足,导致 accept 队列溢出。可以考虑适当增加 worker 的数目,同时调大
backlog 设置。如果你启用了 proxy_buffering(默认开启)或者 proxy_cache,那么你的 worker
可能阻塞在了磁盘操作上,所以来不及处理网卡事件。
你的 nginx 错误日志里有没有什么信息?
你机器上的各种系统资源的使用情况是怎样的?
看到你最近的 《ngx_openresty: an Nginx ecosystem glued by
Lua》幻灯,想把upstream改造成socket同步非阻塞模式,看看能不能解决我所遇到的问题。
我觉得首先应当定位真正的问题 :)
另:同时抄送给 openresty 中文邮件列表:https://groups.google.com/group/openresty
(国内访问可能需要翻墙) 欢迎你加入此列表并在那里和我们交流这样的问题,谢谢 :)
Best regards,
-agentzh
--
Thanks
-YWB