最近在自己的台式電腦上搭了個lnmp,想用壓力壓一壓,看看結果怎麼樣。
由於nginx只是個靜態web伺服器,併發能力超強,因此lnmp的效能瓶頸在於php的處理能力,即php-fpm。
硬體
cpu amd phenom(tm) ii x4 945
記憶體 4g x 4
硬碟 西數綠盤 7200rpm
網絡卡 realtek 8169 千兆自適應
軟體版本
nginx 1.4.0
mysql 5.5.31
php 5.4.14
重新編譯的rpm包有
nginx
mysql
phpphp-pecl-zendopcache
libevent
lnmp的優化手段主要有
1
2
3
4
5
6
7
8
核心引數
檔案控制代碼數
php快取
nginx編譯
nginx pagespeed
nginx快取
nginx壓縮
nginx cpu繫結
採用autobench ,模擬300至1000個併發,每次併發持續2分鐘,之後併發遞增100,每個連線5次請求。
命令
autobench --single_host --host1 192.168.1.101 --port1 80 --uri1 /phpinfo.php --low_rate 300 --high_rate 1000 --rate_step 100 --num_call 5 --const_test_time 120 --timeout 2 --file result.tsv
結果
1
2
3
4
5
6
7
8
9
連線數 請求速度req/s 連線速度conn/s 總連線數
300
291.4
287.9
1500
400
374.4
383.9
2000
500
384
394.3
2500
600
389.9
399.2
3000
700
385.7
397.2
3500
800
390.8
399.7
4000
900
389.3
399.1
4500
1000
379.8
391.9
5000
結果分析,
併發在300開始,php處理能力逐漸加強,在800時達到最高峰390.8req/s,之後逐漸下降,可見,php整體處理請求能力在每秒380左右,理論上全天訪問量約3千萬(380x60x60x24=32832000).
根據二八原理,80%的請求完成在20%的時間段裡,20%的時間為4.8小時,可承受的請求數為650萬(380x60x60x4.8=6566400),換算成實際全天訪問量就是820萬(6566400/0.8=8208000)。
根據大牛張宴的部落格,他能達到700req/s(理論上折合日訪問量6千萬),不過他是全程編譯,而我這裡全程是rpm,只對部分核心軟體包進行了srpm重新編譯,硬體也只是普通台式電腦。
總之,還有很大的優化空間,繼續加油!
update 2015-10-12
由於phpinfo 頁面比較大,一次獲取會有幾十k的資料,連線數一多,網絡卡會成為瓶頸。
建議同時使用別的頁面進行測試,比如hello world,或者計算1-100求和。
hello world
1
2
3
4
5
6
7
8
9
10
<
html
>
<
head
>
<
title
>first program
<
body
>
<?
php
echo "hello, world\n";
?>
0-100求和
1
2
3
4
5
6
7
<?php
$i
=1;
$sum
=0;
while
(
$i
<=100)
echo
$sum
;
?>
lnmp壓力測試
最近在自己的台式電腦上搭了個lnmp,想用壓力壓一壓,看看結果怎麼樣。由於nginx只是個靜態web伺服器,併發能力超強,因此lnmp的效能瓶頸在於php的處理能力,即php fpm。硬體 cpu amd phenom tm ii x4 945 記憶體 4g x 4 硬碟 西數綠盤 7200rpm ...
ab壓力測試 mysql MySQL壓力測試
1.什麼是壓力測試 壓力測試是針對系統的一種效能測試,但是測試資料與業務邏輯無關,更加簡單直接的測試讀寫效能 2.壓力測試的指標 qps 每秒鐘處理完請求的次數 tps 每秒鐘處理完的事務次數 併發量 系統能同時處理的請求數 3.壓力測試工具 mysqlslap sysbench jmeter 長時...
mysql 壓力測試 golang 壓力測試
1.壓力測試 1.1.1.go怎麼寫測試用例 開發程式其中很重要的一點是測試,我們如何保證 的質量,如何保證每個函式是可執行,執行結果是正確的,又如何保證寫出來的 效能是好的,我們知道單元測試的重點在於發現程式設計或實現的邏輯錯誤,使問題及早暴露,便於問題的定位解決,而效能測試的重點在於發現程式設計...