MPM Apache: lavoratore vs Prefork


13

Sto cercando di capire quale sia il miglior MPM Apache che posso installare sul mio VPS. Ho visto alcuni parametri di riferimento e MPM Worker sembra funzionare meglio di quello di Prefork ma per qualche motivo tutti sembrano raccomandare Prefork over Worker per le configurazioni di PHP.

È solo perché alcune funzioni di PHP non sono thread-safe? setlocale()Mi viene solo in mente, ma userò lo stesso locale in ogni istanza, quindi non credo che sarà un problema. Il mio VPS ha poca memoria e sento che il lavoratore MPM sarebbe una soluzione migliore per le mie esigenze, tuttavia non ne sono sicuro.

Qualcuno può aiutarmi a decidermi a riguardo? Grazie!


PS: ho anche esaminato nginx e lighttpd. nginx sembra fantastico ma sto cercando di evitare la compilazione dal sorgente e ancora non capisco a cosa serva php-fpm. Per quanto riguarda lighttpd - è stato incredibilmente facile configurare PHP / FCGI con esso, ma ho sentito che ha perdite di memoria. È ancora vero?


2
Il problema è che mentre il core PHP ora dovrebbe essere thread-safe, quando si tratta di estensioni, tutte le scommesse sono disattivate.
Mattdm,

Risposte:


12

Dovresti usare prefork quando usi apache + mod_php. Le FAQ delineano chiaramente il motivo per cui:

http://www.php.net/manual/en/faq.installation.php#faq.installation.apache2

Perché non dovrei usare Apache2 con un MPM threaded in un ambiente di produzione?

PHP è colla. È la colla utilizzata per creare fantastiche applicazioni Web incollando dozzine di librerie di terze parti e facendole apparire come un'unica entità coerente attraverso un'interfaccia linguistica intuitiva e facile da imparare. La flessibilità e la potenza di PHP si basano sulla stabilità e robustezza della piattaforma sottostante. Ha bisogno di un sistema operativo funzionante, un server Web funzionante e librerie di terze parti funzionanti da incollare insieme. Quando uno di questi smette di funzionare, PHP ha bisogno di modi per identificare i problemi e risolverli rapidamente. Quando rendi il framework sottostante più complesso non avendo thread di esecuzione completamente separati, segmenti di memoria completamente separati e un sandbox forte per ogni richiesta in cui giocare, vengono introdotti ulteriori punti deboli nel sistema di PHP.

nginx + php-fpm è anche un modo eccellente per eseguire applicazioni php. nginx ha il supporto nativo per FastCGI e php-fpm è uno dei modi migliori per eseguire php in un ambiente FastCGI. Vedi la documentazione php qui:

http://www.php.net/manual/en/install.fpm.php


Per quanto riguarda gli MPM di Apache, penso di averlo capito, Prefork è la strada da percorrere. Sono propenso a una configurazione nginx o lighttpd a causa dell'elevato consumo di memoria di Apache. Lighttpd e PHP-FCGI funzionano all'improvviso quando si installa con aptitude, tuttavia non sono sicuro che le perdite di memoria di cui tutti continuano a parlare nel 06/07 siano ancora presenti. Ho anche letto che Nginx ha un utilizzo della CPU inferiore ma non riesco a farlo funzionare con PHP-CGI e tanto meno con PHP-FPM. C'è un modo semplice per installarlo su Ubuntu usando il gestore pacchetti? Mi consiglia qualche lettura su questo argomento?
Alix Axel,

Con il multiverso abilitato, sono stato in grado di "apt-get install nginx" su lucido e funziona come un campione - sto usando su sistemi di produzione. C'è un buon esempio di punto di partenza qui, howtoforge.com/… ma come sempre YMMV.
dialt0ne,

Sono in grado di installare nginx usando apt ma non riesco a collegarlo all'interprete PHP. Il link che hai fornito ha una nuova fonte che sembra fornire il php5-fpmpacchetto. Lo proverò.
Alix Axel,

Questo link potrebbe essere migliore howtoforge.com/… Sto usando il repository brianmercer per i miei sistemi di produzione per php5-fpm.
dialt0ne
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.