Ieri, per la seconda volta mi sono trovato con viklog down con un bel messaggio:
Internal Server Error 500
Ho contattato di nuovo il supporto di Dreamhost (il servizio di hosting da me scelto) parecchio infastidito. Sta volta sono riuscito a smuovere un po’ di acque: un tecnico ha fatto una serie di test e ha controllato il log degli errori. Sono emersi due problemi:
- il mod_security di Apache (praticamente è un firewall) causa regolarmente un errore, che a sua volta porta all’errore 500;
- il processo associato al mio utente, quindi al mio blog, utilizza un ammontare di RAM/CPU al di sopra del normale. Tanto da causare la kill del demone php
009-01-12 14:20:38 procwatch2 INFO: Â Â Process(pid=32093,
name='php.cgi', uid=vik(2676516), tty=None, cpu=3.8, rss=20972.0,
vsize=29732.0)
2009-01-12 14:20:38 procwatch2 INFO: Â Â Process(pid=22086,
name='php.cgi', uid=vik(2676516), tty=None, cpu=4.4, rss=20976.0,
vsize=29732.0)
2009-01-12 14:20:38 procwatch2 INFO: Â Â Process(pid=16258,
name='php.cgi', uid=vik(2676516), tty=None, cpu=3.8, rss=20940.0,
vsize=29736.0)
2009-01-12 14:20:38 procwatch2 INFO: Â Â Process(pid=13359,
name='php.cgi', uid=vik(2676516), tty=None, cpu=4.3, rss=20980.0,
vsize=29736.0)
2009-01-12 14:20:38 procwatch2 INFO: Â Â Process(pid=19747,
name='php.cgi', uid=vik(2676516), tty=None, cpu=3.9, rss=20940.0,
vsize=29748.0)
2009-01-12 14:20:38 procwatch2 INFO: Process(pid=13359, name='php.cgi',
uid=vik(2676516), tty=None, cpu=4.3, rss=20980.0, vsize=29736.0): kill
for total RAM (20980.00 self, 165856.00 total exceeds limit 153600.00)
Ovviamente non ho idea di come sia possibile tutto ciò. Nel frattempo che indago sulle possibili cause ho disattivato mod_security (speriamo bene!), tutti i plugin di WP, lasciando quelli essenziali e ho elimintao ogni occorenza di javascript. Infine ho scelto un tema molto leggero (proprio ora che era pronto il mio tema
). Mi nasce quasi quasi il dubbio che il mio blog non sia stato colpito da un hack…





Con ogni probabilità fai troppe queries, quindi quando si deve generare una pagina vengono impiegate parecchie risorse e se questo lo moltiplichi per tutte le pagine che giornalmente vengono generate consumi troppe risorse.
La prima soluzione che mi viene in mente si chiama WP-Supercache che potrebbe anche essere la soluzione definitiva. Le pagine quando vengono generate sono salvate anche in html e hai visitatori successivi verranno mostrate queste e non ne verrà generata un altra causando del lavoro del server. Il tutto fino a quando non verrà modificata in qualche modo (per esempio un nuovo commento o una modifica tua al post) o scadrà il tempo di validità della cache.
In seconda battuta puoi installarti un PHP opcoder come eAccelerator o APC compilandoti PHP per conto tuo (ho scritto una guida passo passo qui) che velocizzerà l’esecuzione di qualsiasi script PHP effettuando un’ulteriore operazione di caching.
Successivamente dai una revisionata al tema eliminando tutte quelle queries inutili (per esempio quando chiami bloginfo per avere l’URL del tuo blog… è inutile sostituiscilo direttamente tanto lo sai!!!). Dai una ripulita ai plugin eliminando ciò che non serve.
Infine se proprio vuoi fare il lavoro fatto bene usa la tecnica delle images sprites (qui), quando puoi evita come la peste i javascript e se proprio li devi usare comprimili via gzip
@Davide Salerno
Grazie! Sei stato gentilissimo e molto professionale!
Hai ancora questo problema? Ne avevo uno simile con una funzione abilitata su wp super cache (Coarse file locking. You probably don’t need this but it may help if your server is underpowered. Warning! May cause your server to lock up in very rare cases!).
Attivando quella avevo il crash ogni mezz’ora!