Você pode brincar com essas variáveis sysctl:
/etc/sysctl.conf
net.inet.tcp.keepinittime = 150
net.inet.tcp.keepidle = 14400
net.inet.tcp.keepintvl = 150
Estou rodando http_load
no OpenBSD 5.2, para testar o quão boa é a minha nginx
configuração, e notei que as execuções a frio são muito mais rápidas que as quentes, e a cada execução o desempenho cai drasticamente (por exemplo, de 3735 respostas por segundo em uma corrida fria, para 2288, 1804, 1553 em corridas subseqüentes).
Eu observei com netstat -n | wc -l
que há vários milhares de conexões após a execução de http_load
, a maioria das quais estão no (state)
de TIME_WAIT
.
Pode parecer que set timeout tcp.finwait 8
para pf.conf
reduziria algum valor de tempo limite de 45s para 8s, mas parece não afetar essas conexões TIME_WAIT, que ainda permanecem em netstat -n
por exatamente 60s do tempo eles são criados através de http_load
/ nginx
.
Existe uma maneira de expirar essas conexões TIME_WAIT bem antes dos 60s?
Você pode brincar com essas variáveis sysctl:
/etc/sysctl.conf
net.inet.tcp.keepinittime = 150
net.inet.tcp.keepidle = 14400
net.inet.tcp.keepintvl = 150