PHP / mySQL: come eseguire il debug di un errore "troppe connessioni"?


8

Sto lavorando ora con il sito Web PHP sul server dedicato del mio cliente e ricevo periodicamente un errore too many connectionsma ~ 5 utenti stanno visitando questa pagina.

In phpMyAdminposso vedere che la max connectionsvariabile è impostata su 400.

Sul nostro server MySQL locale nella mia azienda abbiamo max connectionsimpostato 200e altri utenti utilizzano contemporaneamente questo server.

Ho sentito che sul loro server qualche altro web sta usando lo stesso MySQL con un grande traffico.

Ecco le mie domande:

  • Come eseguire il debug di questo problema?
  • Posso esaminare un elenco di query SQL eseguite negli ultimi 10 minuti per verificare se si tratta del nostro problema o del loro?

Risposte:


2

I sintomi che descrivi indicano connessioni persistenti. In alcune configurazioni PHP non gestisce molto bene le connessioni permanenti: tende ad aprire nuove connessioni piuttosto che a riutilizzare quelle esistenti. Ti suggerisco di disabilitare questa funzione e vedere se il problema persiste:

Se noti un miglioramento, puoi provare a ottimizzare le chiamate persistenti o a eliminarle definitivamente.


Ho anche sparato a quel caso. Non riesco affatto a modificare la loro configurazione web / server per apportare tali modifiche (il mio web non utilizza da persistent connectionsnessuna parte). Domani incontrerò il loro uomo e chiederò loro di farlo.
hsz,

Ciò non richiede la modifica di alcuna configurazione del server. Avresti solo bisogno di aggiornare gli script PHP per l'applicazione.
Michael Mior,

Certo, ma non ho accesso alla seconda pagina Web che utilizza anche lo stesso server MySql, quindi non posso aggiornare il loro script PHP che potrebbe utilizzare mysql_pconnect. phpinfo()mi mostra che `mysql.allow_persistent` è On. Cambiare quella bandiera in Offnon darà alcun risultato - dovrebbe essere cambiata sulla loro macchina.
hsz,

Sono cambiati mysql.allow_persistentin Offe il nostro CMS ha accelerato e ora non ci sono problemi con le connessioni. Grazie! Ma mi chiedo ancora come verificare quali script si collegano al server MySql?
hsz,

SHOW PROCESSLIST ti dice l'utente, l'host, il DB e (se sei fortunato) la query.
Álvaro González,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.