Ubuntu Server 10.04.1 x86
Ho una macchina con un servizio HTTP FCGI dietro nginx, che serve molte piccole richieste HTTP a molti client diversi. (Circa 230 richieste al secondo nelle ore di punta, la dimensione media della risposta con le intestazioni è di 650 byte, diversi milioni di client diversi al giorno).
Di conseguenza, ho molti socket, sospesi in TIME_WAIT (il grafico viene catturato con le impostazioni TCP di seguito):
Vorrei ridurre il numero di socket.
Cosa posso fare oltre a questo?
$ cat / proc / sys / net / ipv4 / tcp_fin_timeout 1 $ cat / proc / sys / net / ipv4 / tcp_tw_recycle 1 $ cat / proc / sys / net / ipv4 / tcp_tw_reuse 1
Aggiornamento: alcuni dettagli sul layout di servizio effettivo sulla macchina:
client ----- TCP-socket -> nginx (proxy inverso del bilanciamento del carico) ----- TCP-socket -> nginx (worker) --domain-socket -> software fcgi --single-persistent-TCP-socket -> Redis --single-persistent-TCP-socket -> MySQL (altra macchina)
Probabilmente dovrei cambiare il bilanciamento del carico -> connessione del lavoratore anche ai socket di dominio, ma il problema relativo ai socket TIME_WAIT rimarrebbe - ho intenzione di aggiungere presto un secondo lavoratore su una macchina separata. In questo caso non sarà possibile utilizzare socket di dominio.