GNU/Linux >> Linux Esercitazione >  >> Linux

Come indagare su una perdita di memoria con Apache e PHP?

Soluzione 1:

Sappiamo che il problema di memoria deriva da apache/PHP perché ogni volta che emettiamo un /etc/init.d/httpd reload l'utilizzo della memoria diminuisce

No, significa solo che è correlato al traffico web. Hai continuato a menzionare che stai eseguendo mysql sulla scatola - presumibilmente gestendo i dati per il server web - potrebbe essere altrettanto facilmente il colpevole qui. Così come altri servizi utilizzati dal tuo webstack che non hai menzionato.

Ad ogni thread Apache viene assegnato un PHP memory_limit di 512MB che spiega

No, non lo fa. Stai segnalando una media di 7 e un massimo di 25 server occupati, ma il tuo grafico della memoria mostra un delta di circa 25 Gb.

In realtà dovresti ricominciare con l'ottimizzazione HTTP di base:sembra che tu stia eseguendo 256 httpds costanti, ma il tuo utilizzo massimo è 25:questo è semplicemente stupido.

e un max_execution_time di 120 sec che dovrebbe terminare i thread la cui esecuzione richiede più tempo

No - solo se il thread di esecuzione è all'interno dell'interprete PHP - non se PHP è bloccato.

che esegue modelli finanziari

(sospiro)

Sarebbe stato utile se avessi fornito dettagli su come hai configurato Apache, threaded o prefork, quale versione, come viene invocato PHP (modulo, cgi, fastcgi), se stai usando connessioni persistenti, se usi stored procedure.

Ti suggerirei di iniziare spostando mysql su una macchina separata e smettere di usare connessioni persistenti (se le stai attualmente utilizzando). Imposta il limite di memoria molto inferiore e sovrascriverlo in base allo script. Assicurati di aver installato e configurato il Garbage Collector di riferimento circolare.

Soluzione 2:

Probabilmente hai già risolto il tuo problema. Ad interim per impedire al server di scambiare / thrashing, eseguo il seguente comando ogni ora da cron:

#!/bin/sh 
sync; echo 3 > /proc/sys/vm/drop_caches

Non sto dicendo che questa sia una soluzione, solo un modo per mantenere le cose in esecuzione e ridurre al minimo i tempi di inattività mentre indaghi sulla vera causa della perdita di memoria.

Maggiori dettagli possono essere trovati qui.

http://www.tecmint.com/clear-ram-memory-cache-buffer-and-swap-space-on-linux/


Linux
  1. Come abilitare e disabilitare il modulo PHP curl con Apache su Ubuntu Linux

  2. Come trovare file di configurazione MySQL, PHP e Apache

  3. Come aggiornare Apache e PHP con EasyApache in un server cPanel

  4. Come proteggere Apache e SSH con Fail2Ban su CentOS 8

  5. Installa Apache e PHP su CentOS 7

Come installare Apache con PHP-FPM su Debian 10

Come installare Apache e PHP su OpenSUSE 15.1

Come installare LAMP su Ubuntu 15.10 (Linux, Apache, MySQL e PHP)

Come installare il server Web OpenLiteSpeed ​​con MariaDB e PHP

Come installare e configurare Apache e PHP su Jelastic Cloud

Come installare e configurare Memcached con Apache e PHP