Nginx上/ 1.0.12作爲運行在Debian 6.0.1的代理開始短時間運行後拋出以下錯誤:nginx的代理:connect()以IP:80失敗(99:無法分配請求的地址)
connect() to upstreamip:80 failed (99: Cannot assign requested address) while connecting to upstream, client: xxx.xxx.xxx.xxx, server: localhost, request: "GET/HTTP/1.1", upstream: "http://upstreamip:80/", host: "requesteddomain.com"
並非所有的請求產生這個錯誤,所以我懷疑它與服務器的負載和某種限制它打的事情。
我曾嘗試將ulimit -n升至50k,並將worker_rlimit_nofile升至50k,但這似乎沒有幫助。 lsof -n顯示nginx共有1200行。 傳出連接是否有系統限制,可能會阻止nginx打開更多連接到其上游服務器?
我不確定這是否會有所幫助,因爲問題不是DOS攻擊導致大量TIME_WAIT,而只是大量的本來應該經過的正常流量,而不是因爲更快的TIME_WAIT超時而被殺死。 – mariow
@mariow,在我的服務器上,有大量的傳出請求(抓取程序),所以TIME_WAIT快速重用是非常重要的。 – diyism
net.ipv4.tcp_tw_recycle的破裂和Linux的4.12移除: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4396e46187ca5070219b81773c4e65088dac50cc 重複使用也很危險: https://vincent.bernat.im/en/blog/2014-tcp-time-wait-state-linux 最好不要使用這些選項。 – pva