nginx - 如何根據(jù)服務器配置設(shè)置web服務參數(shù)?
問題描述
最近一直在折騰服務器相關(guān)的東西,遇到些問題,請教下大家。目前網(wǎng)站訪問情況: PV: 15W +,IP: 2W+服務器配置:CPU:4 * Intel(R) Xeon(R) CPU E5-2430 0 @ 2.20GHz內(nèi)存:4G帶寬:6M硬盤:2 * 100G HDD
這臺服務器以前用的是wdcp面板,php5.2 + mysql 5.1,高峰期CPU和負載一直很穩(wěn)定,后來站點被黑后我接手處理,重新安裝系統(tǒng)后,用的也是一鍵搭建的環(huán)境(blog.linuxeye.com上的包),搭建的Lanmp環(huán)境,開啟服務后,用另外一臺服務器ab測試( ab -c 100 -n 500 ),CPU馬上滿載,負載也飆了上去,程序是WordPress,雖然目前高峰期能扛得住,但是CPU經(jīng)常98%左右,訪問速度沒有以前那么快;通過查看并發(fā)情況 netstat -an | grep ESTABLISHED | wc -l,高峰期在600左右訪問時明顯要等待3秒左右,負載也是很高。
對此想了解的是:
這臺服務器配置,這樣的訪問量算是極限了嗎?能達到什么程度?Apache(2.4)中以prefork模式工作,一個用戶訪問會創(chuàng)建一個進程?Apache中的prefork配置中的MaxConnectionsPerChild參數(shù),是每個進程的最大連接數(shù),這個連接數(shù)指的是什么,比如訪問一個頁面同時會有js,css,img這些請求,指的是這些keepAlive期間的連接數(shù)?如何根據(jù)當前服務器配置來判斷和設(shè)置apache或nginx的配置參數(shù)?資源占用的多少,是如何計算的?懇請有經(jīng)驗的前輩指點下,謝謝!
問題解答
回答1:看 CPU 被什么占滿了,是否是在等待 IO.
如果已經(jīng)有了 Nginx, 直接用 Nginx + PHP-FPM 就好了,沒必要用 Apache(除非你有其他的東西必須 Apache). 盡量用 PHP-FPM 不要用 mod_php, 根據(jù)內(nèi)存恰當?shù)卦O(shè)置 PHP-FPM 的最大進程數(shù)(一個進程大概需要 20-40M 內(nèi)存)。
回答2:建議:1、架構(gòu)改換成Nginx+PHP-FPM,Nginx+PHP-FPM環(huán)境搭建2、將靜態(tài)文件(JS、CSS、靜態(tài)圖片)全部放到到CDN上,現(xiàn)在CDN的價格很便宜的,推薦又拍、七牛3、做好WordPress緩存,WordPress的很多博客頁面完全可以做靜態(tài)緩存,肯定有多插件來實現(xiàn)
回答3:如果兼容性問題不大,可慮升級PHP版本。5.5有巨大性能提升。
相關(guān)文章:
1. mysql - sql 左連接結(jié)果union右連接結(jié)果,導致重復性計算怎么解決?2. linux - 編譯時提示頭文件#include <mysql/mysql.h>不存在,百度之后也沒解決3. mysql 遠程連接出錯10060,我已經(jīng)設(shè)置了任意主機了。。。4. 默認輸出類型為json,如何輸出html5. 數(shù)組排序,并把排序后的值存入到新數(shù)組中6. php多任務倒計時求助7. mysql怎么表示兩個字段的差8. javascript - 滾動到指定高度 開始輪流放動畫,QQPC官網(wǎng)就是這么做的,請問使用什么開源庫方便點?9. PHP訂單派單系統(tǒng)10. MySQL的聯(lián)合查詢[union]有什么實際的用處
