Otan o server kanei thrashing

Thomas Venieris mot at freemail.gr
Thu Mar 11 03:11:56 EET 2010


On Tuesday 09 March 2010, Christos Ricudis wrote:
> Spaniws bebaia to problhma einai ston apache ton idio. Synh8ws ftaiei to
> scripting backend sou, dhladh to ektrwma pou legetai PHP.

Οτιδήποτε φορτώνεται σαν module του apache μπορεί να κάνει την ίδια ακριβώς 
ζημιά. Το mod_php απλά είναι το πιο δημοφιλές.

> Kati pou kanw se tetoies periptwseis einai na aykshsw ligo ton ari8mo
> twn spare apache instances kai na meiwsw arketa ton ari8mo twn requests
> pou kanei process ka8e apache instance prin psofhsei. Ayto exei genika
> ena ligo arnhtiko apotelesma otan exeis poly fortio, alla boh8aei sto na
> ka8arizontai taktika ta memory leaks ths php

Αυτό που κάνω εγώ είναι να αποφεύγω το mod_php σαν την πανούκλα. Επειδή είναι 
το πιο δημοφιλές setup δεν σημαίνει πως είναι το μοναδικό, ούτε πως είναι το 
καλύτερο.

Είναι πολύ πιο ασφαλές, πιο ευέλικτο και σχεδόν εξίσου γρήγορο να τρέχεις την 
PHP σε FastCGI mode με το mod_fcgid, όπως περιγράφει εδώ:

http://ivan.gudangbaca.com/installing_apache2_and_php5_using_mod_fcgid

Σου επιτρέπει επίσης να χρησιμοποιήσεις το worker mpm του apache αν χρειάζεσαι 
μεγάλο concurrency.

Άν πάλι πρέπει οπωσδήποτε να χρησιμοποιήσεις mod_php, μπορείς να το κάνεις ως 
εξης:

Στην πόρτα 80 ακούει ένα αλαφρύς threaded web server (nginx, lighttpd, apache 
worker) που σερβίρει εικόνες, javascript και γενικώς στατικό περιεχόμενο. 
Οτιδήποτε PHP requests γίνονται proxy στο 127.0.0.1:5001

Στην πόρτα 127.0.0.1:5001 ακούει ένας κλασσικός prefork apache με mod_php και 
ότι άλλο χρειάζεται, αλλά:

- Μπορείς να του περιορίσεις αρκετά το πόσα concurrent PHP requests θα 
σερβρίρει
- Μπορείς να μειώσεις άφοβα τον μέγιστο αριθμό requests ανά "παιδί".
- Μπορείς να το τρέχεις με ότι uid/gid θέλεις (διαφορετικό από του κυρίως web 
server). Τι να το κάνεις το mod_suexec? :-)
- Μπορείς να τρέχεις διαφορετικά "application pools" όπως τα λέει ο IIS σε 
διαφορετικές πόρτες και με διαφορετικές ρυθμίσεις. Μπορείς να τα χειρίζεσαι 
ξεχωριστά (να κάνεις restart μόνο ένα από αυτά), να τρέχουν με διαφορετικές 
προτεραιώτητες (nice) κλπ.

Και στα δύο αυτά setups:
- Η PHP δεν μπορεί να προκαλέσει την κατάρρευση του κυρίως web server.
- Μπορούν δύο (2) virtualhosts να έχουν διαφορετικά php.ini. Αυτό έχει 
τεράστια σημασία, κυρίως για ρυθμίσεις όπως η disable_functions 
(http://www.php.net/manual/en/ini.core.php#ini.disable-functions), η οποία 
στην περίπτωση του κλασσικού mod_php είναι αναγκαστικά κοινή για όλα τα 
virtualhosts.

Και από πλευράς administration τα πράγματα είναι σαφώς καλύτερα. Αν κάποιο PHP 
script κάνει τσιριμόνιες, φαίνεται ξεκάθαρα ως ανεξάρτητο process (στην 
περίπτωση του mod_fcgid) ή ως παιδί ενός ξεπεσμένου apache (στην 2η 
περίπτωση). Έτσι ο administrator μπορεί άμεσα να ασελγήσει πάνω του, χωρίς 
φόβο και πάθος :-)

φιλικά,

-- 
moT

"There's the television. It's all right there. It's all
right there. Look. Listen. Kneel. Pray. Commercials."
                                           (12 Monkeys)


More information about the Linux-greek-users mailing list