mod_fcgid: legge gli errori di timeout dei dati

Mi sono trasferito in un server non gestito che utilizza fcgid (prima di utilizzare il mod_php) e nei registri degli errori vedo una quantità di tali errori:

[Dom 23 Aprile 2012 21:17:12 2012] [avviso] [client 66.249.68.233] mod_fcgid: leggere il timeout dei dati in 31 secondi [Mon Apr 23 21:17:12 2012] [errore] [client 66.249.68.233] Fine prematuro delle intestazioni di script: index.php

  • È ansible utilizzare Multi Master Single Slave in mySQL DB?
  • Magento Errore 404 dopo aver passato da Apache a nginX
  • Comunque per PHP ritrovare "hostname: port" da apache2handler?
  • Come installare una versione più recente di PHP come un pacchetto?
  • Come si aggiorna PHP 5.1 a PHP 5.3 utilizzando yum su CentOS
  • È ansible installare l'estensione Mailparse tramite l'installazione PECL - senza ricompilare PHP
  • [Avrei scritto] [client di base 74.117.180.58] mod_fcgid: legge data timeout in 31 secondi [Mon Apr 23 17:59:51 2012] [avviso] [client 74.117.180.58] (110 ) Terminata di connessione: mod_fcgid: ap_pass_browde non rioutput nella function handle_request_ipc

    Sembra che ci siano più di questi quando il carico è più alto (2-3) durante i backup e ho anche riuscito a replicarlo durante un carico di 3 quando tar / mysqldump era in esecuzione durante un backup (l'utente vede un messaggio di errore 500 dopo 30 secondi). Il server potrebbe essere sovraccaricato? Questa domanda sembra essere correlata PHP + Fcgid si blocca se il download è interrotto ma non lo stesso.

    Questo è un server di primo piano, e sono sorpreso che questo sarebbe troppo. Ecco alcune specifiche: 6-7 siti Drupal con Webmin

    • Intel® Core ™ i7-2600 Quadcore incl. Tecnologia Hyper-Threading
    • RAM 16 GB DDR3 RAM
    • Dischi rigidi2 x 3 TB SATA 6 Gb / s HDD 7200 giri / min (software RAID 1)
    • NIC1 Gbit OnBoard collegato a 100 Mbit

  • mod_fcgi in virtualmin: grazioso kill fall, inviando SIGKILL?
  • Fine prematura delle intestazioni di script, mod_fcgi
  • Un unico process php-fastcgi blocca tutte le altre richieste PHP
  • Come modificare la directory root suexec da "/ var / www" a "/ home"?
  • PHP crash (seg-fault) sotto mod_fcgi, apache
  • Apache2 + mod_fcgid + php ha smesso di funzionare dopo l'aggiornamento da Debian squeeze a wheezy
  • 2 Solutions collect form web for “mod_fcgid: legge gli errori di timeout dei dati”

    Questi errori significano che gli script funzionavano più a lungo di 31 secondi e quindi erano terminati, come dice fcgid.conf. Il timeout standard è di 40 secondi btw.

    È ansible controllare facilmente questo comportmento scrivendo un test.php:

    <?php sleep(32); ?> 

    Questo dovrebbe darvi un errore 500 e mettere questo errore nei tuoi registri.

    Hai due possibilità per risolvere questo problema:

    1. Re-Make your index.php (o l'applicazione dietro) e risolve eventuali problemi di loop (where lo script viene eseguito per sempre e viene terminato dopo 31 secondi).
    2. Impostare i timeout più alti. Ciò deve essere fatto per each vhost (non dimenticare SSL!), Poiché questa impostazione viene modificata each volta che un altro vhost viene caricato e rimarrà fino a quando il process prodotta non verrà terminato.
      Il modo più semplice sarebbe quello di modificare /etc/apache2/mods-available/fcgid.conf . Questo è quello che usiamo:

      IdleTimeout 3600
      ProcessLifeTime 7200
      IPCConnectTimeout 8
      IPCCommTimeout 600
      BusyTimeout 300

    Modifica: Oh, il secondo errore è correlato a stringhe di query troppo lunghe negli URL. Per consentire stringhe di query più lunghe, anche modificare fcgid.conf e inserire

     MaxRequestLen 15728640 

    Non dimenticare di riavviare apache per uccidere tutti i processi in esecuzione, in modo da get i nuovi config.

    mysqldump per impostazione predefinita scriverà il block del database mentre viene eseguito in modo che i dati non vengano modificati durante il backup, che può causare la corruzione. Drupal scrive al database su each richiesta, quindi le richieste appenderanno mentre il mysqldump è in esecuzione e, infine, il timeout.

    Se si utilizza InnoDB (o può essere convertito in esso), è ansible utilizzare Percona XtraBackup per eseguire backup caldi. Al contrario, non mettere il mysqldump su tar o gzip; espandere il file .sql e quindi eseguire tar / gzip su esso dopo che mysqldump ha completato (e rilasciato il block).

    Ricorda altresì che in alcune versioni di fcgid c'è un bug che lo causa solo per applicare le impostazioni nei blocchi di VirtualHost e per applicare quelli nel block last-read globalmente .

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