常見的原因有以下幾種:
1、php.ini 的memory_limit 過小(如果有個別php程序進程需要占用極大內(nèi)存時這個必須注意);
2、php-fpm.conf 中max_children或者max_requests 設置不合理;
設置過小會因為沒有足夠的cgi進程處理請求,設置過大會出現(xiàn)一會兒有響應正常,一會兒等很久才有響應的情況。
3、查看nginx錯誤日志,發(fā)現(xiàn) pstream sent too big header while reading response headerfrom upstream ,則檢查client head buffer,fastcgi buffer size是否過小,可設置為32K;
4、php 程序執(zhí)行時間過長而超時,檢查nginx和fastcgi中各種timeout設置;
5、php-fpm 有一個參數(shù) max_requests ,該參數(shù)指明了每個children最多處理多少個請求后便會被關(guān)閉;
在大量處理請求下,如果該值設置過小會導致 children頻繁的自殺和建立而浪費大量時間,若所有的children差不多都在這個時候自殺,則重建前將沒有children響應請求,于是出現(xiàn)502 。可以將該值設置大一些或者是0[無限]。