Un nginx/1.0.12 eseguito come proxy su Debian 6.0.1 inizia a generare il seguente errore dopo l'esecuzione per un breve periodo:proxy nginx: connect() a ip: 80 non riuscito (99: impossibile assegnare l'indirizzo richiesto)
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"
Non tutte le richieste producono questo errore, quindi sospetto che abbia a che fare con il carico del server e qualche tipo di limite.
Ho provato alzando ulimit -n a 50k e 50k worker_rlimit_nofile a pure, ma che non sembra aiutare. lsof -n mostra un totale di 1200 linee per nginx. Esiste un limite di sistema sulle connessioni in uscita che potrebbe impedire a nginx di aprire più connessioni al suo server upstream?
io non sono sicuro se questo avrebbe aiutato perché il problema non è stato un attacco DOS con conseguente in un sacco di TIME_WAIT, ma solo un numero enorme di traffico regolare che avrebbe dovuto passare attraverso e non essere ucciso con un timeout più veloce TIME_WAIT . – mariow
@mariow, sul mio server, ci sono enormi quantità di richieste in uscita (crawler), quindi il riutilizzo TIME_WAIT è veloce. – diyism
net.ipv4.tcp_tw_recycle è rotto ed è stato rimosso da Linux 4.12: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4396e46187ca5070219b81773c4e65088dac50cc il riutilizzo è pericoloso: https://vincent.bernat.im/en/blog/2014-tcp-time-wait-state-linux Meglio non usare queste opzioni. – pva