本文目錄一覽:
- 1、502 Bad Gateway 怎麼解決
- 2、php_cgi進程並行處理問題
- 3、如何分析php-cgi進程佔用cpu資源過多負載高的原因
- 4、服務器php-cgi.exe進程過多,導致CPU佔用100%
- 5、php php-cgi.exe進程多
502 Bad Gateway 怎麼解決
502badgateway要先找到nginx配置的路徑。
然後找到nginx所在的error日誌文件來查看具體原因。
如果是客戶端瀏覽器配置的問題,以360瀏覽器為例,出現502BadGateway可能是設置了代代理導致的。
取消瀏覽器代理之後,刷新一下就可以訪問了。
502BadGateway是一種報錯提示,這一錯誤並不意味着上游服務器已關閉(無響應網關/代理),而是上游服務器和網關/代理不同意的協議交換數據。
鑒於互聯網協議是相當清楚的,它往往意味着一個或兩個機器已不正確或不完全編程。
php_cgi進程並行處理問題
php_cgi進程並行處理會引發消耗cpu過多導致機器負責過高的問題。
解決方法是做出以下調整:
1. nginx少開兩個進程:
user nobody nobody;
worker_processes 2;
worker_rlimit_nofile 51200;
2.調整php_cgi的子進程數:
/usr/local/nginx/sbin/spawn-fcgi -a 127.0.0.1 -p 1026 -C 12 -u nobody -f /usr/local/php-fcgi/bin/php-cgi
/usr/local/nginx/sbin/spawn-fcgi -a 127.0.0.1 -p 1027 -C 12 -u nobody -f /usr/local/php-fcgi/bin/php-cg
3.重啟php_cgi和nginx發現效果不佳。查資料發現有可能eAccelerater模塊不兼容。
4.修改/usr/local/php-fcgi/lib/php.ini 禁止eaccelerator模塊 改為apc加速:
extension = “apc.so”
apc.enabled = 1
apc.cache_by_default = on
apc.shm_segments = 1
apc.shm_size = 128M
apc.ttl = 7200
apc.user_ttl = 7200
apc.num_files_hint = 1024
apc.write_lock = On
apc.gc_ttl=3600
apc.ttl=0
apc.mmap_file_mask=/tmp/apc.XXXXXX
5.重啟nginx和php_cgi即可。
如何分析php-cgi進程佔用cpu資源過多負載高的原因
不要使用普通的CGI模式安裝,每個PHP進程默認佔128MB內存,幾G內存也最多百來人訪問就擊垮了。
CGI模式是早期內部小網站的模式,現在一般用於開發時方便調試。
部署PHP應該使用FastCGI方式或者ISAPI方式安裝,就不會產生多進程和資源佔用過多。
服務器php-cgi.exe進程過多,導致CPU佔用100%
你的現象一般有兩種可能,一是PHP腳本問題,例如你在PHP腳本後面寫一個按回車結束,然後從標準輸入讀數據,可能會造成阻塞,使得進程無法結束。進行測試的方法的是寫一個最簡單的PHP腳本(例如只有phpinfo();一行),然後不斷用瀏覽器打開這個頁面,如果CGI進程也在增加,那麼說明是下面一種情況。
另外一種情況是PHP版本安裝不對,在WINDOWS下用CGI方式工作,不要安裝“線程安全”版本,應該安裝“非線程安全”的版本,否則會出現你的情況。
php php-cgi.exe進程多
肯定是有的程序寫得有問題,正常情況下如果有人用瀏覽器打開的你PHP網頁,你就會開一個cgi進程,但是網頁顯示完畢cgi進程就應該關閉了,那麼只要每個網頁程序的效果很高(都在幾毫秒執行完畢),那麼幾乎是看不見cgi進程的,哪怕有許多人不停的訪問你的網頁。
在cgi進程多的時候,在進程管理器裡面設置顯示“命令行”,看看是哪個頁面的代碼有問題,優化一下。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/308258.html