PHP / mySQL: como depurar um erro de 'muitas conexões'?

8

Estou trabalhando agora com o site PHP no servidor dedicado do meu cliente e recebo periodicamente um erro, too many connectionsmas ~ 5 usuários estão navegando nesta página.

Em phpMyAdminposso ver que a max connectionsvariável está definida como 400.

Em nosso servidor MySQL local em minha empresa, max connectionsdefinimos o uso 200e outros parceiros ao mesmo tempo em que este servidor.

Ouvi dizer que em seu servidor alguma outra web está usando o mesmo MySQL com grande tráfego.

Aqui estão as minhas perguntas:

  • Como depurar esse problema?
  • Posso examinar uma lista de consultas SQL que foram executadas nos últimos 10 minutos para verificar se é um problema nosso ou deles?
hsz
fonte

Respostas:

2

Os sintomas que você descreve apontam para conexões persistentes. Em algumas configurações, o PHP não lida com conexões persistentes muito bem: ele tende a abrir novas conexões em vez de reutilizar as existentes. Sugiro que você desative esse recurso e verifique se o problema persiste:

Se você notar uma melhoria, tente ajustar as chamadas persistentes ou se livrar delas permanentemente.

Álvaro González
fonte
Eu também tiro esse caso. Não consigo modificar a configuração da web / servidor para fazer essas alterações (minha web não usa em persistent connectionslugar nenhum). Amanhã vou conhecer o homem deles e pedirei que façam isso.
precisa saber é
Isso não requer modificação de nenhuma configuração do servidor. Você só precisa atualizar os scripts PHP para o aplicativo.
Michael Mior
Claro, mas não tenho acesso à segunda página da Web que também está usando o mesmo servidor MySql - portanto, não posso atualizar o script PHP que pode ser usado mysql_pconnect. phpinfo()mostra que `mysql.allow_persistent` é On. Alterar esse sinalizador para Offnão dará nenhum resultado - ele deve ser um trocador em sua máquina.
Hsz 18/01/10
Eles mudaram mysql.allow_persistentpara Offe nosso CMS acelerou e agora não há problemas com conexões. Obrigado! Mas ainda estou pensando em como verificar quais scripts estavam se conectando ao servidor MySql?
HSZ
SHOW PROCESSLIST informa o usuário, host, banco de dados e (se você tiver sorte) a consulta.
Álvaro González