2009-07-13 15 views
9

Il motivo per cui lo chiedo è perché quando si utilizza top non vedo un processo per qualcosa come APC. Quindi presumo che l'utilizzo della memoria venga considerato in un processo di apache.Dove APC memorizza il codice operativo e la cache delle variabili utente?

In questo caso, e ciò significa che la memoria che APC sta utilizzando viene replicata in ogni processo di apache, occupando quindi potenzialmente molta più memoria di quella che gli era stata originariamente assegnata?

Se questo è il caso, memcache può essere una soluzione migliore, anche se non viene utilizzata su più server con carico bilanciato?

risposta

0

Oltre ad essere una cache opcode, APC fornisce anche memoria condivisa. Ciò suggerisce fortemente che ha un proprio sistema di memoria condivisa interno simile a memcached.

12

APC utilizza la memoria condivisa per memorizzare la cache dell'opcode. Nel caso di mod_php questa memoria è condivisa tra tutti i processi di Apache. Quindi una cache da 30 MB occupa solo 30 MB, anche se ci sono 5 processi Apache.

Tuttavia, quando si utilizza mod_php, ogni processo di Apache spreca molte risorse poiché ogni processo contiene l'interprete PHP. Quindi, quando Apache serve contenuti statici (html, css, js, file di immagini, ecc.) Usa un processo con l'intero interprete PHP caricato. Per aggirare questo problema, alcune persone usano FastCGI tramite mod_fastcgi o mod_fcgi. Using an opcode cache with FastCGI diventa un po 'più complicato.

Attualmente non esiste un modo per utilizzare memcache come cache di opcode. Anche se ci fosse, sarebbe probabilmente più lento del desiderato.

Problemi correlati