PHP 介面呼叫報錯 502 Bad Gateway

波波你行發表於2019-04-24

PHP介面呼叫超過5s的請求直接返回如下資訊:

Response

<html> <head><title>502 Bad Gateway</title></head> <body bgcolor="white"> <center><h1>502 Bad Gateway</h1></center> <hr><center>nginx</center> </body> </html> <!-- a padding to disable MSIE and Chrome friendly error page --> <!-- a padding to disable MSIE and Chrome friendly error page --> <!-- a padding to disable MSIE and Chrome friendly error page --> <!-- a padding to disable MSIE and Chrome friendly error page --> <!-- a padding to disable MSIE and Chrome friendly error page --> <!-- a padding to disable MSIE and Chrome friendly error page -->

查了Nginx的錯誤日誌如下:

2019/01/22 16:40:45 [error] 14291#0: *296842388 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 113.96.219.247, server: , request: "POST XXX HTTP/1.1", upstream: "fastcgi://unix:/dev/shm/php7-cgi.sock:", ...

原因是由於php_fpm的執行時間受request_terminate_timeout這個引數的配置影響,這個引數我配置的是5s,那麼5s後,這個php-fpm處理程式會被直接殺掉,導致返回502

  • 官方備註:
    request_terminate_timeout mixed
    設定單個請求的超時中止時間。該選項可能會對 php.ini 設定中的 'max_execution_time' 因為某些特殊原因沒有中止執行的指令碼有用。設定為 '0' 表示 'Off'。可用單位:s(秒),m(分),h(小時)或者 d(天)。預設單位:s(秒)。預設值:0(關閉)。

    原文地址:http://www.bowen-tech.top/articles/detail/...

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章