2013-06-06 16 views
6

Così ho appena avuto un ora noci cercando di capire il motivo per cui i miei log andato beserk con lenti avvertenze script PHP letteralmente un paio di volte ogni minuto per le ultime ore.php5-fpm di reset + nginx + google bot = collegamento dal pari

Inizialmente mi stavo concentrando sui registri di php lenti e sui log degli errori di php che mi davano fastidio pensando che fosse il mio codice. E 'proprio così che stavo implementando alcune modifiche al DNS ed è per questo che sono stato guidato lungo la strada sbagliata.

alla fine ho controllato il registro degli errori nginx che ha rivelato riga dopo riga di resettaggio Collegare dal pari dal più o meno lo stesso IP.

Ho cercato su Google gli IP e ho trovato che appartiene a Google, quindi questo era chiaramente un google bot/spider che visita il sito.

Ecco una clip del registro errori

2013/06/06 14:04:05 [error] 12313#0: *7435269 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 209.85.238.187, server: www.domain.com, request: "GET /c.html?q=xyz HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.domain.com" 
2013/06/06 14:04:05 [error] 12308#0: *7435135 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 209.85.238.167, server: www.domain.com, request: "GET /c.html?q=xyz HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.domain.com" 
2013/06/06 14:04:05 [error] 12308#0: *7435994 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 209.85.238.199, server: www.domain.com, request: "GET /c.html?q=xyz HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.domain.com" 
2013/06/06 14:04:12 [error] 12309#0: *7436209 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 209.85.238.168, server: www.domain.com, request: "GET /c.html?q=xyz HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.domain.com" 
2013/06/06 14:05:12 [error] 12309#0: *7441608 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 209.85.238.177, server: www.domain.com, request: "GET /c.html?q=xyz HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.domain.com" 
2013/06/06 14:05:15 [error] 12310#0: *7440634 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 209.85.238.219, server: www.domain.com, request: "GET /c.html?q= xyz HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.domain.com" 
2013/06/06 14:05:15 [error] 12313#0: *7441634 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 209.85.238.194, server: www.domain.com, request: "GET /c.html?q=xyz HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.domain.com" 
2013/06/06 14:06:02 [error] 12310#0: *7444721 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 209.85.238.221, server: www.domain.com, request: "GET /c.html?q=xyz HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.domain.com" 
2013/06/06 14:06:05 [error] 12308#0: *7443911 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 209.85.238.203, server: www.domain.com, request: "GET /c.html?q=xyz HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.domain.com" 
2013/06/06 14:06:05 [error] 12309#0: *7445423 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 209.85.238.164, server: www.domain.com, request: "GET /c.html?q=xyz HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.domain.com" 
2013/06/06 14:06:05 [error] 12310#0: *7445640 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 209.85.238.222, server: www.domain.com, request: "GET /c.html?q=xyz HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.domain.com" 

Qual è la causa del reset connessione peer. Google bot sarebbe davvero in visita la pagina e terminare la richiesta, solo per verificare che è vivo?

Questo non è molto bello perché richiama le mie richieste di ricciolo che quindi appartengono a un thread orfano perché il client è uscito. Significa solo che scappano causando degli script php lenti.

Oppure ho letto questo in modo errato?

+0

Goggle bot non interromperà le richieste in condizioni normali. Stanno visitando le pagine in modo normale. A volte il tasso di successo è estremamente alto, ma non interrompono le connessioni. –

risposta

0

Se si guarda un messaggio di errore, si dice

durante la lettura intestazione di risposta da monte

Il che significa che il problema non è che Google sta terminando la richiesta, ma piuttosto che nginx di upstream, che capita di essere php-fpm, sta terminando la richiesta. Di solito, questo è causato da un errore nel processo di esecuzione del codice php.

Dato che non abbiamo il codice, qui alcuni passaggi di risoluzione dei problemi generali:

  • Nella configurazione di PHP-FPM, aumentare i valori di request_terminate_timeout, max_input_time e max_execution_time.
  • Attiva la registrazione degli errori nei file di configurazione .conf di php.ini o pool (ma non "display_error", se si tratta di un sito Web di produzione).
  • Provare a eseguire un debugger sul codice in esecuzione (xdebug è molto utile) per scorrere il codice e incappare nella maggior parte dei problemi.