• User

    CPU / memoria sovraccarica per php Wordpress

    Salve a tutti.
    Ho un serio problema con il mio server (VPS Managed) dove ho il mio blog Wordpress.
    In pratica il processo index.php (ovvero qualsiasi pagina del blog) riempiono tutta la memoria e il processore a me dedicati.
    Presupponendo che:

    • Non è un problema di Wordpress (appena reinstallato da 0)
    • Non è un problema di hosting (è uguale su 2 diversi)
      Ho bisogno di una mano per capire perchè questo php mette in ginocchio il server.
      Avete qualche idea da cui partire? 😞
      Offro una cena a chi mi aiuta a risolvere 😄

  • Moderatore

    Guarda nei log del webserver. Può essere un problema di memory leakage, oppure semplicemente il blog ha talmente tanto traffico da saturare tutta la ram.


  • User

    Il log non mi pare abbia errori specifici.
    Dal mio pannello vedo che tutto il processore viene saturato da processi index.php (di Wordpress).
    Per quanto riguarda le troppe visite ho ben 1,5GB di RAM dedicata e con 5000visite al giorno non penso di poterla saturare.

    Comunque anche i tecnici del VPS ritengono che ci sia un problema di "programmazione" nel mio blog (e quindi io penso: nel mio tema?).


  • Moderatore

    Beh è evidente che c'è un problema del tuo blog a questo punto. Se manda a palla pure il processore vuol dire che ha seri problemi.

    Qualche plugin per wordpress forse.


  • User Attivo

    Apache? Nginix?
    Dovrebbero essere circa 7 visitatori al minuto ma più probabilmente tenendo in considerazione i picchi orari, dovrebbero essere circa una ventina al minuto nelle ore diurne.
    Prova a limitare il numero dei processi attivabili e le connessioni massime.
    Potresti di tanto in tanto, pianificare il riavvio del web server.
    Io su mio server, visto che ho poca RAM, ho messo un cron job che fa riavviare il web server durante la notte verso le tre così hai un downtime di circa 3-4 secondi, ma di notte non dovresti avere molti utenti collegati.


  • User

    Apache.
    Plugin avevo pensato anche io, ma ora ho reinstallato tutto da 0, installando solo i 2 fondamentali a far funzionare il sito.

    Limitare il numero di connessioni non impedirà alla gente di visitare il sito?


  • User Attivo

    Dovresti prima osservare le statistiche del sito. A volte ci sono dei bot tipo Yahoo o altri meno conosciuti che passano giorni a scansionare il sito ma che non portano visitatori. Io ad esempio ho inserito nel robots.txt delle direttive che bloccano il crawler di cuil, exabot e majestic. Yahoo se puoi mettigli un po' di delay.
    Può anche darsi che il tuo sito sia entrato in una lista visitata da spambot che tentano di inviare spazzatura.

    Dovresti postare la media dei visitatori giornalieri del tuo sito e del numero di pagine visitate in media, più i dati riferiti al massimo numero di utenti al giorno (insomma un po' di statistiche) e poi la configurazione del file apache.conf in particolare:
    [INDENT]KeepAlive
    MaxKeepAliveRequests
    KeepAliveTimeout
    MinSpareServers
    MaxSpareServers
    StartServers
    MaxClients
    MaxRequestsPerChild
    [/INDENT]


  • User Attivo

    Si può avere l'url del sito?


  • User

    Sono di media 5000 visite al giorno con circa 20.000 pagine visitate.
    Dove trovo il file apache.conf?
    Comunque a occhio il problema sembra provenire quando durante la giornata le visite aumentano. Quindi spambot non penso, perchè per esempio alle 3:00/4:00 di notte e tranquillo e verso le 9:00 (ora) degenera lentamente.
    Top mostra sempre più processi alla pagina index.php che vanno a saturare processore e memoria.


  • User

    androidworld.it
    Al momento però è in manutenzione.
    Il load era arrivato a 50 e il sito stava schiantando.


  • User Attivo

    Dipende dalla distribuzione GNU/Linux che usi. Ad esempio in Debian e mi pare anche in CentOS sta in /etc/apache/


  • User

    Ho scoperto la causa di tutto, ma non la soluzione.
    Rimango in questo post, ma se mi consigliate posso anche andare in una sezione più adeguata.
    In pratica è l'htaccess.
    Se lo lascio com'è:
    [INDENT]<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php
    </IfModule>
    [/INDENT]I processi index.php impazziscono.
    Se invece lo lascio vuoto il sito funziona a dovere.
    Questo che nelle impostazioni di WP sia abilitata la riscrittura o no.

    Ovviamente la soluzione di non usare quelle regole non puo' valere perchè ho bisogno degli URL riscritti 😛


  • Moderatore

    Quel RewriteBase punta alla root directory del filesystem, va tolto.

    Il resto della clausola dice che se l'url non è un file nè una directory allora deve chiamare index.php. Mi sembra quindi a posto.


  • User

    @paolino said:

    Quel RewriteBase punta alla root directory del filesystem, va tolto.

    Il resto della clausola dice che se l'url non è un file nè una directory allora deve chiamare index.php. Mi sembra quindi a posto.
    Grazie per la risposta.
    Ho provato a levare il RewriteBase ma niente. Comunque quel codice è generato in automatico da Wordpress quando attivo i permalink.

    mod_rewrite in generale funziona bene perchè lo uso per wiki e forum, ma appena attivo il mod_rewrite sul blog (anzi anche se non lo attivo ma se aggiungo quelle righe di codice all'htaccess) wordpress genera tantissimi processi php che rimangono a lungo in memoria saturando CPU e RAM.


  • User Attivo

    Potresti settare nel file di configurazione di apache MaxRequestsPerChild con un valore dai 1000 ai 2000.


  • Moderatore

    A questo punto è chiaro che il problema è che il rewrite va in loop. Mi sa che c'è un bel problema nella struttura degli url riscritti di wordpress.

    Hai usato una delle opzioni di rewriting di default di wordpress?


  • User

    @paolino said:

    A questo punto è chiaro che il problema è che il rewrite va in loop. Mi sa che c'è un bel problema nella struttura degli url riscritti di wordpress.

    Hai usato una delle opzioni di rewriting di default di wordpress?
    Si, ho configurato il rewriting sempre dal pannello di wordpress.
    @SeoDart: proverò ma in generale ora il problema non è il server che non regge ma piuttosto il rewriting/wordpress che fanno quello che gli pare


  • User Attivo

    Attenzione perché se Wordpress è in grado di scrivere sui file, è facile che il tuo sito possa essere compromesso da qualche script.


  • User

    Si il server è basato su suphp, quindi puo' scrivere sui file (giusto?).
    Al tempo stesso però l'account sul VPS è nuovo e WP è installato da zero.
    Utilizzando un plugin di "controllo salute" per WP ricevo questo messaggio:

    RECOMMENDATION: Your Webserver does not have Apache functions. At worst, this can prevent WordPress from detecting Apache's mod_rewrite module, thus disallowing the use of fancy urls. At best, this makes detecting the mod_rewrite module slower. Please contact your host to have them fix this.
    Ovviamente mod_rewrite in realtà funziona bene e lo utilizzo per wiki e forum.