nginx + php5(fastcgi)生產環境跑php動態程式可超過「700次請求/秒」
我生產環境下的兩台nginx + php5(fastcgi)伺服器,跑多個一般複雜的純php動態程式,從nginx的日誌可以統計出,單台nginx + php5(fastcgi)伺服器跑php動態程式的處理能力已經超過「700次請求/秒」,相當於每天可以承受6000萬(700*60*60*24=60480000)的訪問量:
伺服器①:dell poweredge 1950(兩顆 intel(r) xeon(r) 雙核cpu 5120 @ 1.86ghz,4gb記憶體)
伺服器②:dell poweredge 1950(一顆 intel(r) xeon(r) 雙核cpu 5140 @ 2.33ghz,4gb記憶體)
web伺服器:centos linux 4.4 + nginx 0.5.35 + php 5.2.6rc2(300 fastcgi procees, unix-domain socket, with xcache)
php程式內容:大量memcached讀寫、少量mysql讀操作、大量檔案佇列寫操作,然後計算,生成供方式呼叫的js**或xml資料。
網絡卡流量:1.5m~3m/秒
請求數統計方式:從nginx訪問日誌中,統計每分鐘的第15秒共有多少條日誌記錄。
引用grep "25/mar/2008:15:01:15" /data1/logs/nginx.log | wc -l
伺服器的系統負載也不算高:
總結:1、nginx的處理能力超強,這塊不是瓶頸。影響動態程式處理能力的因素主要在於php(fastcgi)。php(fastcgi)模式適用於執行時間較短的php程式,一般複雜的php程式執行時間應該在100ms以內,例如我的部落格首頁執行時間為38ms左右。假設乙個php程式的執行時間為100ms,那麼乙個php(fastcgi)程序每秒可以處理完畢10個請求,300個fastcgi程序理論上每秒可以處理3000個請求。但是,在生產環境下,還將受到記憶體、系統負載等多方面的影響,例如300個php(fastcgi)程序需要占用2.4gb左右的記憶體,每秒處理超過1000個請求時,系統負載會飈公升到100以上。因此,fastcgi的程序不是越多越好,而是夠用就好。
2、使用php的xcache、apc等加速模組會提供速度10倍左右,降低系統負載50倍以上。
3、修改了spawn-fcgi,使它能夠支援250個以上的fastcgi程序。
4、如果php直接對mysql進行大量讀寫操作,速度是達不到「700 request/sec」的,php與mysql之間需要乙個中間層,這是關鍵的技術。
5、cpu的數量(多核算多個cpu,cat /proc/cpuinfo |grep -c processor)越多,系統負載越低,每秒能處理的請求數也越多。
6、使用php 5.2.6rc2,因為它修正了php 5.2.5的「zend_mm_heap corrupted」錯誤bug。php 5.2.5(fastcgi)在高併發請求情況下,經常會出現該錯誤。
生產環境程式公升級流程
今天偶爾翻出以前做運維的筆記,感慨良多 當時剛參加工作,對工作有極大的熱情,做了很多筆記.現在很多多遺失了,現在也轉崗做開發了,運維方面的知識很多都不用了,生疏了 今天翻出筆記,乾脆就把紙質的文件 當時印象筆記和有道雲筆記等工具並不是很流行 重新記錄在部落格裡.檢查測試環境中需公升級的程式版本是否已...
PHP自動判斷測試環境還是生產環境
由測試環境發布到生產環境要修改一些配置引數,該來該去挺麻煩還容易出錯。可以在nginx中配置乙個環境引數fastcgi param run env dev 來做判斷 php中判斷載入哪個配置檔案 define run env isset server run env server run env p...
關於PHP生產環境的安全配置
關閉錯誤顯示 display errors off 配置錯誤日誌 error log var log php error.log 隱藏php版本號 expose php off 關閉自動註冊全域性變數 5.6以後已移除 register globals off 限定php訪問路徑 open base...