O serviço da web Apache reinicia as conexões existentes do MySQL?

1

No caso de erro 'too many connections', se eu fizer um service httpd restart/reload , liberaria as conexões existentes do MySQL?

É possível que, ao reiniciar o Apache, o Apache feche as Conexões de BD, mas não informe o mysqld.

Nota: o mysqld tem wait_timeout = 8 horas.

    
por starchx 21.03.2017 / 06:47

1 resposta

3

A resposta curta é sim, mas não diretamente. De qualquer forma, eu consideraria reduzir seu MySQL wait_timeout para algo mais realista como 30 segundos.

O Apache é um servidor web, aceita solicitações de conexão HTTP e retorna conteúdo para o cliente - ele não pode conectar-se nativamente a um banco de dados MySQL.

A fonte mais provável de suas conexões é um aplicativo que gera respostas a essas solicitações, ou seja, PHP, Java, Python, etc - você marcou sua pergunta com php , então assumirei o PHP aqui.

Agora, supondo que você use o mod_php do Apache em vez do PHP-FPM, então os processos PHP são bifurcados pelo Apache, e assim quando você reinicia o Apache, esses processos são mortos e recuperados. Se você estivesse executando o PHP-FPM, reiniciar o Apache não eliminaria nenhum processo do PHP, já que o FPM é executado como seu próprio daemon.

No caso de um processo PHP ser eliminado via mod_php, ele não chama mysql_close() para fechar a conexão diretamente, e assim a conexão será mantida aberta por wait_timeout segundos.

Você pode dizer ao Apache para fazer uma reinicialização "normal" e permitir que os threads existentes saiam antes da finalização, usando service httpd graceful ou apachectl -k graceful .

No entanto, se o seu código PHP não estiver fechando a conexão via mysql_close() , então essa será a fonte final do seu problema e reiniciar o Apache através de qualquer método não resolverá o problema.

Além disso, uma distinção importante a ser feita com restart vs reload - o primeiro termina os processos, o último simplesmente recarrega a configuração. Se você realmente deseja encerrar processos, use restart .

    
por 21.03.2017 / 09:51