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