APC (acceleratore php). Quali situazioni dovrei usare?

Quindi ho appena un piccolo VPS. Ho installato apc, che ha aumentato le pagine normali del 20% – 30%. Stavo leggendo di memcached e sono giunto alla conclusione che posso usare apc per la stessa cosa (oggetti di memorizzazione in cache da risultati del database) se non sto distribuendo su altri server. Poiché ho solo un server, apc sarà altrettanto utile per memorizzare nella memory le cose.

Sono ancora in modalità di sviluppo e sono sicuro che è difficile capire quale sarebbe il modo migliore per la produzione. La cosa è che le mie query sul database sembrano abbastanza veloci (tra 0,0008 e 0,02). Nessuna delle mie pagine è molto intesa come database.

Sarebbe utile per memorizzare i risultati nella memory? Se il database esegue correttamente in questo momento, sarà in corso di difficoltà più tardi? Inoltre, è la connessione al database in tutto ciò che costa la velocità (anche se cache la maggior parte delle mie query, each pagina deve avere una piccola interazione di database per i dati della session). Quindi, fondamentalmente se ho un ram limitato e una macchina, utilizzerò apc piuttosto che lasciare che il database venga scoperto sia molto più veloce?

Idee?

2 Solutions collect form web for “APC (acceleratore php). Quali situazioni dovrei usare?”

Le query di database sono veloci ora. Ma si scalano? Hai provato ad aggiungere una quantità realistica di dati reali e poi provare di nuovo? Quella query funziona bene con 8 membri, ma orribilmente con 400.000 membri?

Se cache o less è completamente applicazione e situazione specifica. Se ci si aspetta che il carico cresca molto e che il tuo collo di bottiglia sia CPU, la cache ti aiuterà, se invece il tuo collo di bottiglia è la RAM e stai utilizzando swap, allora ti danneggerà.

Non sto realmente facendo tutto per cache o non per cache la giustizia di discussione, ma questa è la domanda fondamentale che ti occorre chiedere.

È difficile dire where possa essere trovato il miglior equilibrio. La cache di oggetti di APC è di solito utilizzata per la memorizzazione di oggetti che richiedono un tempo relativamente lungo per ricreare, ad esempio risultati di database troppo grandi per essere memorizzati nella cache di query del database o per strutture temporanee di dati che sarebbero piacevoli a persistere tra le richieste PHP.

Le query di database sembrano molto veloci. Se la cache veloce della query è nel range> 95%, già la maggior parte dei risultati vengono visualizzati dalla memory e la cache di APC non aiuterà molto. Se si effettua un'elaborazione sui risultati db, potrebbe essere necessario pagare per memorizzare tale risultato nella memory.

La connessione al database è relativamente costosa, quindi riuscire una connessione facendola un singleton è una buona idea. Alcune astrazioni del database, come quelle in Zend Framework, ritardano la connessione effettiva finché non è necessaria.

È difficile dare consigli specifici in quanto i benefici sono così dipendenti dalla tua applicazione e dal tuo server. Suggerisco di utilizzare un profiler come Xdebug o Zend Debugger per vedere esattamente where sta andando il tuo tempo. La misurazione sta conoscendo.

Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.