nginx - 如何根據服務器配置設置web服務參數?
問題描述
最近一直在折騰服務器相關的東西,遇到些問題,請教下大家。目前網站訪問情況: PV: 15W +,IP: 2W+服務器配置:CPU:4 * Intel(R) Xeon(R) CPU E5-2430 0 @ 2.20GHz內存:4G帶寬:6M硬盤:2 * 100G HDD
這臺服務器以前用的是wdcp面板,php5.2 + mysql 5.1,高峰期CPU和負載一直很穩定,后來站點被黑后我接手處理,重新安裝系統后,用的也是一鍵搭建的環境(blog.linuxeye.com上的包),搭建的Lanmp環境,開啟服務后,用另外一臺服務器ab測試( ab -c 100 -n 500 ),CPU馬上滿載,負載也飆了上去,程序是WordPress,雖然目前高峰期能扛得住,但是CPU經常98%左右,訪問速度沒有以前那么快;通過查看并發情況 netstat -an | grep ESTABLISHED | wc -l,高峰期在600左右訪問時明顯要等待3秒左右,負載也是很高。
對此想了解的是:
這臺服務器配置,這樣的訪問量算是極限了嗎?能達到什么程度?Apache(2.4)中以prefork模式工作,一個用戶訪問會創建一個進程?Apache中的prefork配置中的MaxConnectionsPerChild參數,是每個進程的最大連接數,這個連接數指的是什么,比如訪問一個頁面同時會有js,css,img這些請求,指的是這些keepAlive期間的連接數?如何根據當前服務器配置來判斷和設置apache或nginx的配置參數?資源占用的多少,是如何計算的?懇請有經驗的前輩指點下,謝謝!
問題解答
回答1:看 CPU 被什么占滿了,是否是在等待 IO.
如果已經有了 Nginx, 直接用 Nginx + PHP-FPM 就好了,沒必要用 Apache(除非你有其他的東西必須 Apache). 盡量用 PHP-FPM 不要用 mod_php, 根據內存恰當地設置 PHP-FPM 的最大進程數(一個進程大概需要 20-40M 內存)。
回答2:建議:1、架構改換成Nginx+PHP-FPM,Nginx+PHP-FPM環境搭建2、將靜態文件(JS、CSS、靜態圖片)全部放到到CDN上,現在CDN的價格很便宜的,推薦又拍、七牛3、做好WordPress緩存,WordPress的很多博客頁面完全可以做靜態緩存,肯定有多插件來實現
回答3:如果兼容性問題不大,可慮升級PHP版本。5.5有巨大性能提升。
相關文章:
1. css - 如何把一個視圖放在左浮動定位的視圖的上面?2. javascript - axios請求回來的數據組件無法進行綁定渲染3. php多任務倒計時求助4. python的正則怎么同時匹配兩個不同結果?5. javascript - vue中怎么使用原生js插件6. javascript - 請問下面代碼中的...是擴展運算符還是操作運算符?這樣寫是什么意思?7. javascript - 小demo:請教怎么做出類似于水滴不斷擴張的效果?8. css - 子元素跑到父元素外面9. MySQL的聯合查詢[union]有什么實際的用處10. javascript - jquery怎么讓a標簽跳轉后保持tab的樣式
