Evite as conexões TIME_WAIT [duplicate]

3

Quando eu uso o comando netstat ele mostra ..

tcp 0 0 localhost: 18056 localhost: mysql TIME_WAIT
tcp 0 0 localhost: 16683 localhost: mysql TIME_WAIT
tcp 0 0 localhost: 16701 localhost: mysql TIME_WAIT
tcp 0 0 localhost: 16888 localhost: mysql TIME_WAIT
tcp 0 0 localhost: 16832 localhost: mysql TIME_WAIT
tcp 0 0 localhost: 17725 localhost: mysql TIME_WAIT
tcp 0 0 localhost: 17682 localhost: mysql TIME_WAIT
tcp 0 0 localhost: 17414 localhost: mysql TIME_WAIT
tcp 0 0 localhost: 17606 localhost: mysql TIME_WAIT
tcp 0 0 localhost: 17737 localhost: mysql TIME_WAIT
tcp 0 0 localhost: 16632 localhost: mysql TIME_WAIT
tcp 0 0 localhost: 16825 localhost: mysql TIME_WAIT
tcp 0 0 localhost: 17807 localhost: mysql TIME_WAIT
tcp 0 0 localhost: 17715 localhost: mysql TIME_WAIT
tcp 0 0 localhost: 17304 localhost: mysql TIME_WAIT
tcp 0 0 localhost: 17217 localhost: mysql TIME_WAIT
tcp 0 0 localhost: 18098 localhost: mysql TIME_WAIT
tcp 0 0 localhost: 17624 localhost: mysql TIME_WAIT
tcp 0 0 localhost: 17734 localhost: mysql TIME_WAIT

A conexão de time_wait é de cerca de 2000.

Para evitar isso eu adicionei o net.ipv4.tcp_fin_timeout = 30 ao /etc/sysctl.conf

Mas ainda tenho algum problema, como evitá-lo?

    
por Himanshu Matta 14.02.2013 / 08:08

1 resposta

14

TIME_WAIT existe por um motivo e a razão é que os pacotes TCP podem ser atrasados e chegar fora de ordem. Mexer com ele causará conexões quebradas extras quando elas tiverem sucesso. Há uma explicação excelente de tudo isso aqui .

Seu problema é que você não está reutilizando suas conexões do MySQL dentro do seu aplicativo, mas em vez disso está criando uma nova conexão toda vez que deseja executar uma consulta SQL. Isso envolve não apenas a configuração de uma conexão TCP, mas também a passagem de credenciais de autenticação. E isso está acontecendo para todas as consultas (ou pelo menos para todas as solicitações da Web de front-end) e é um desperdício e consome tempo.

Se você não sabe como habilitar o pooling de conexões do MySQL persistente em qualquer idioma que esteja usando, o StackOverflow seria um bom lugar para perguntar.

    
por 14.02.2013 / 08:47