Migliori impostazioni APC per ridurre i tempi di esecuzione della pagina


16

Ho Drupal 7, apc con php-fpm e apache dietro vernice e 512 MB di RAM.

Misuro il tempo di esecuzione della pagina con il modulo di sviluppo.

Il tempo di query del database è basso (62 ms) rispetto al tempo di esecuzione della pagina che è 854 ms. Ciò significa che c'è un problema con le impostazioni PHP e APC.

Le mie impostazioni attuali sono giuste

apc.shm_size = 64
apc.stat=1 

Come posso migliorare?

Quali sono le migliori impostazioni per Drupal data la configurazione di cui sopra?

Grazie

Risposte:


12

Eseguiamo in un ambiente push SVN in modo da cancellare solo la cache del file apc con uno script.

Impostazioni APC:

apc.ttl=604800
apc.user_ttl=3600
apc.shm_size=192M
apc.include_once_override=1
auto_globals_jit=Off
apc.num_files_hint = 2048

apc.stat_ctime = 0
apc.file_update_protection = 2
apc.stat = 0

Script PHP:

<?php
$return = apc_clear_cache('opcode');
echo var_export($return);

604800 = 1 settimana.

Dopodiché, avere xdebug / xhprof attivo e funzionante e fare una macinatura della cache del sito dovrebbe farti sapere cosa sta rallentando il sito. In breve, analizzare l'output di macinatura della cache è il modo migliore per velocizzare Drupal. Di seguito sto elencando quali patch e moduli utilizziamo per accelerarlo; nel tuo caso sarà molto probabilmente diverso.

Drupal 6 Risposta specifica di seguito

Una volta superato questo punto e realizzato che l'APC non ti darà quello che stai cercando, passa al flusso di stampa e fai girare queste patch:

Prova anche alcuni di questi moduli poiché hanno migliorato notevolmente la velocità dei nostri siti:


Grazie mille per la tua risposta, ma ho Drupal 7.
John,

Quindi prendi le parti APC e le parti xdebug / xhprof e guarda le patch D6 come esempio di cosa cercare nella coda do issue. Tutte le patch di cui sopra sono il risultato di guardare la cache macinare, trovare il punto debole e trovare il problema corrispondente per esso. Avvio rapido: drupal.org/project/issues/search/…
mikeytown2

Ora c'è una wiki delle performance di drupal 7: groups.drupal.org/node/210683
mikeytown2

1
Cordiali saluti, ho dovuto commentare la riga apc.include_once_override = 1 perché ha rotto il sito puregin.org/node/2550/3928
corbacho

php.net/apc.configuration#ini.apc.include-once-override Grazie per averlo segnalato. A seconda della versione di PHP e APC potrebbe causare problemi
mikeytown2

3

Questa è una di quelle "quanto dura un pezzo di domande sulla stringa".

Ciò che è buono per un sito di volume elevato potrebbe non essere lo stesso per un sito di volume basso con molti moduli e potrebbe non essere lo stesso per un sito di volume medio con solo pochi moduli abilitati. Anche altri siti in esecuzione sul server potrebbero essere nella memoria che APC ha a disposizione.

Il mio punto di partenza è

apc.enabled=1
apc.shm_segments=1
apc.shm_size=64
apc.ttl=7200
apc.user_ttl=7200
apc.num_files_hint=1024
apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.enable_cli=1
apc.rfc1867=1

Quindi modifico le impostazioni per il server, ma di nuovo non esiste una dimensione adatta a tutte le impostazioni.

Trova apc.php (probabilmente situato in /usr/share/pear/apc.php) e installalo in DOCROOT per la tua installazione di Drupal. Bloccalo al tuo indirizzo IP tramite la configurazione di Apache. Modifica il nome utente / la password all'interno, quindi naviga verso di esso. Vedrai quindi le tue statistiche APC.

Riconfigurare il parametro shm_size per ridurre al minimo gli errori nella cache. Idealmente, si desidera fornire la memoria sufficiente per non perdere mai la cache di un file, oltre a memoria aggiuntiva per la cache dell'utente APC.

Ottimizza il TTL per evitare l'abbandono della cache. Se non stai modificando i file, puoi aumentare questo numero.

enable_cli è utile quando si utilizza drush molto, quindi drush utilizza i file memorizzati nella cache di APC.

rfc1867 è utile per i caricamenti di file.

Ho anche notato php-fpm nel titolo. Ciò complica le cose ed è davvero oltre lo scopo di Drupal Answers. Potresti ottenere risposte migliori in Server Fault , poiché molte delle impostazioni di configurazione del sistema non riguardano direttamente Drupal.


dov'è un buon tutorial che spiega in un linguaggio semplice cosa sta facendo ogni impostazione, come ttl, segmenti, ecc? come cli aiuta con drush?
Giovanni,

Potresti spiegare come "traffico ottengo, cos'altro è in esecuzione sul server, quali moduli ho installato, ecc." influenzare le impostazioni? grazie
john

queste impostazioni sopra non sono state di grande aiuto. Dovrei provare xhprof per vedere cosa succede con php?
Giovanni,

Tutte le impostazioni di APC sono descritte a php.net/manual/en/apc.configuration.php
mpdonadio

1
@MPD> enable_cli è utile quando si utilizza drush molto, quindi drush utilizza i file> memorizzati nella cache da APC. In realtà, il cli è un processo separato e non condivide la sua cache apc con apache, o anche tra le chiamate da trascinare.
Robin Millette,

2

APC migliora semplicemente il caricamento e l'analisi dei file PHP. Gran parte è anche il tempo di esecuzione stesso. Esistono molti fattori che possono aumentare i tempi di esecuzione, inclusi bug (in particolare bug relativi alla cache), sovraccarico interno (ad esempio drupal_alter (), module_implements ()) e così via.

Come mi hai chiesto e ti è già stato suggerito da mikeytown2, userei xhprof (lo preferisco a xdebug in questi giorni in quanto fornisce un accesso diretto e rapido al risultato e non richiede strumenti aggiuntivi) per scoprire dove si trovano i colli di bottiglia.

Di recente ho scritto due post sul blog sull'uso di xhprof in Drupal e sui tipici colli di bottiglia , che potresti trovare interessanti.


groups.drupal.org/node/82889 Profilazione PHP con XHprof
john
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.