MySQL no Windows - como configuro o wait_timeout para conexões usando pipes nomeados?

1

Eu uso um banco de dados MySQL em execução em uma caixa do Windows e, por motivos de desempenho, estou conectando a ele usando pipes nomeados.

O aplicativo (Java) que usa o banco de dados (por meio do Hibernate) pode deixar a conexão inativa por um longo tempo, o que faz com que a conexão falhe com a seguinte mensagem:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 33 558 297 milliseconds ago. The last packet sent successfully to the server was 33 558 297 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.

autoReconnect infelizmente não tem efeito (e nem autoReconnectForPools ), mas o wait_timeout docs declara que wait_timeout se aplica apenas" a conexões de arquivo de soquete TCP / IP e Unix, e não a conexões feitas por meio de pipes nomeados ou memória compartilhada ".

Como posso alterar o wait_timeout para pipes nomeados?

    
por gustafc 10.05.2010 / 11:11

1 resposta

1

Dependendo de como você está configurando sua fonte de dados, você pode especificar uma configuração como idle-timeout-minutes . Se wait_timeout foi definido para 5 minutos, defina idle-timeout-minutes para 4.

Os dois únicos valores de tempo limite que podem ser especificados para as conexões do MySQL são wait_timeout e interactive_timeout . interactive_timeout poderia potencialmente se aplicar a pipes nomeados também, se conectado como um cliente faria.

Se bem me lembro se nem wait_timeout nem interactive_timeout forem especificados, o padrão é 28800.

    
por 10.05.2010 / 15:25