使用apache bench工具對Nginx靜態頁、Golang Http程序、PHP7+Swoole Http程序進行壓力測試。在併發100進行100萬次Http請求的基準測試中,PHP7+Swoole比Nginx/Golang性能高75%,QPS對好比下:php
軟件 | QPS |
---|---|
Nginx | 164489.92 |
Golang | 166838.68 |
PHP7+Swoole | 287104.12 |
Nginx-1.9.9 | 245058.70 |
注:Nginx升級到最新的1.9.9,關閉access_log,啓用open_file_cache緩存靜態文件到內存,最新測試達到了245058.70qpshtml
ab -c 100 -n 1000000 -k http://127.0.0.1:8080/
nginx/1.4.6 (Ubuntu)
server { listen 80 default_server; root /data/webroot; index index.html; }
<h1>Hello World!</h1>
Nginx開啓了4個Worker進程mysql
htf@htf-All-Series:~/soft/php-7.0.0$ ps aux|grep nginx root 1221 0.0 0.0 86300 3304 ? Ss 12月07 0:00 nginx: master process /usr/sbin/nginx www-data 1222 0.0 0.0 87316 5440 ? S 12月07 0:44 nginx: worker process www-data 1223 0.0 0.0 87184 5388 ? S 12月07 0:36 nginx: worker process www-data 1224 0.0 0.0 87000 5520 ? S 12月07 0:40 nginx: worker process www-data 1225 0.0 0.0 87524 5516 ? S 12月07 0:45 nginx: worker process
go version go1.5.2 linux/amd64
package main
import ( "log" "net/http" "runtime" ) func main() { runtime.GOMAXPROCS(runtime.NumCPU() - 1) http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { w.Header().Add("Last-Modified", "Thu, 18 Jun 2015 10:24:27 GMT") w.Header().Add("Accept-Ranges", "bytes") w.Header().Add("E-Tag", "55829c5b-17") w.Header().Add("Server", "golang-http-server") w.Write([]byte("<h1>\nHello world!\n</h1>\n")) }) log.Printf("Go http Server listen on :8080") log.Fatal(http.ListenAndServe(":8080", nil)) }
PHP7已啓用OpCache加速器。linux
htf@htf-All-Series:~/soft/php-7.0.0$ php -v PHP 7.0.0 (cli) (built: Dec 10 2015 14:36:26) ( NTS ) Copyright (c) 1997-2015 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies
swoole-1.7.22-alpha
[PHP Modules] Core ctype curl date dom fileinfo filter gd hash iconv json libxml mbstring mcrypt mysqli mysqlnd pcntl pcre PDO pdo_sqlite Phar posix Reflection session SimpleXML sockets SPL sqlite3 standard swoole tokenizer xml xmlreader xmlwriter Zend OPcache zlib [Zend Modules] Zend OPcache
<?php
$http = new swoole_http_server("127.0.0.1", 9501, SWOOLE_BASE); $http->set([ 'worker_num' => 4, ]); $http->on('request', function ($request, swoole_http_response $response) { $response->header('Last-Modified', 'Thu, 18 Jun 2015 10:24:27 GMT'); $response->header('E-Tag', '55829c5b-17'); $response->header('Accept-Ranges', 'bytes'); $response->end("<h1>\nHello Swoole.\n</h1>"); }); $http->start();
詳細的測試結果輸出以下:nginx
htf@htf-All-Series:~/workspace/swoole/examples/bench$ ab -c 100 -n 1000000 -k http://127.0.0.1/
This is ApacheBench, Version 2.3 <$Revision: 1528965 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking 127.0.0.1 (be patient) Completed 100000 requests Completed 200000 requests Completed 300000 requests Completed 400000 requests Completed 500000 requests Completed 600000 requests Completed 700000 requests Completed 800000 requests Completed 900000 requests Completed 1000000 requests Finished 1000000 requests Server Software: nginx/1.4.6 Server Hostname: 127.0.0.1 Server Port: 80 Document Path: / Document Length: 23 bytes Concurrency Level: 100 Time taken for tests: 6.079 seconds Complete requests: 1000000 Failed requests: 0 Keep-Alive requests: 990048 Total transferred: 266950240 bytes HTML transferred: 23000000 bytes Requests per second: 164489.92 [#/sec] (mean) Time per request: 0.608 [ms] (mean) Time per request: 0.006 [ms] (mean, across all concurrent requests) Transfer rate: 42881.47 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.0 0 1 Processing: 0 1 1.1 0 22 Waiting: 0 1 1.1 0 22 Total: 0 1 1.1 0 22 Percentage of the requests served within a certain time (ms) 50% 0 66% 1 75% 1 80% 1 90% 1 95% 1 98% 2 99% 5 100% 22 (longest request)
htf@htf-All-Series:~/workspace/swoole/examples/bench$ ab -c 100 -n 1000000 -k http://127.0.0.1:8080/
This is ApacheBench, Version 2.3 <$Revision: 1528965 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking 127.0.0.1 (be patient) Completed 100000 requests Completed 200000 requests Completed 300000 requests Completed 400000 requests Completed 500000 requests Completed 600000 requests Completed 700000 requests Completed 800000 requests Completed 900000 requests Completed 1000000 requests Finished 1000000 requests Server Software: golang-http-server Server Hostname: 127.0.0.1 Server Port: 8080 Document Path: / Document Length: 24 bytes Concurrency Level: 100 Time taken for tests: 5.994 seconds Complete requests: 1000000 Failed requests: 0 Keep-Alive requests: 1000000 Total transferred: 280000000 bytes HTML transferred: 24000000 bytes Requests per second: 166838.68 [#/sec] (mean) Time per request: 0.599 [ms] (mean) Time per request: 0.006 [ms] (mean, across all concurrent requests) Transfer rate: 45619.95 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.0 0 1 Processing: 0 1 0.4 1 9 Waiting: 0 1 0.4 1 9 Total: 0 1 0.4 1 9 Percentage of the requests served within a certain time (ms) 50% 1 66% 1 75% 1 80% 1 90% 1 95% 1 98% 2 99% 2 100% 9 (longest request)
htf@htf-All-Series:~/workspace/swoole/examples/bench$ ab -c 100 -n 1000000 -k http://127.0.0.1:9501/
This is ApacheBench, Version 2.3 <$Revision: 1528965 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking 127.0.0.1 (be patient) Completed 100000 requests Completed 200000 requests Completed 300000 requests Completed 400000 requests Completed 500000 requests Completed 600000 requests Completed 700000 requests Completed 800000 requests Completed 900000 requests Completed 1000000 requests Finished 1000000 requests Server Software: swoole-http-server Server Hostname: 127.0.0.1 Server Port: 9501 Document Path: / Document Length: 24 bytes Concurrency Level: 100 Time taken for tests: 3.483 seconds Complete requests: 1000000 Failed requests: 0 Keep-Alive requests: 1000000 Total transferred: 265000000 bytes HTML transferred: 24000000 bytes Requests per second: 287104.12 [#/sec] (mean) Time per request: 0.348 [ms] (mean) Time per request: 0.003 [ms] (mean, across all concurrent requests) Transfer rate: 74299.40 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.0 0 5 Processing: 0 0 0.2 0 16 Waiting: 0 0 0.2 0 16 Total: 0 0 0.2 0 16 Percentage of the requests served within a certain time (ms) 50% 0 66% 0 75% 0 80% 0 90% 1 95% 1 98% 1 99% 1 100% 16 (longest request)
16時31分05秒 all 0.00 0.00 0.00 0.00 0.00 100.00 16時31分06秒 all 11.65 0.00 29.11 0.00 0.00 59.24 16時31分07秒 all 31.58 0.00 64.16 0.00 0.00 4.26 16時31分08秒 all 29.38 0.00 66.17 0.00 0.00 4.44 16時31分09秒 all 31.58 0.00 63.91 0.00 0.00 4.51 16時31分10秒 all 27.00 0.00 66.75 0.00 0.00 6.25 16時31分11秒 all 28.68 0.00 67.01 0.00 0.00 4.31 16時31分12秒 all 26.30 0.00 28.29 0.00 0.00 45.41 16時31分13秒 all 0.25 0.00 0.00 0.00 0.00 99.75
htf@htf-All-Series:~/workspace/swoole/examples/bench$ vmstat -w 1 10000
procs ---------------memory-------------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 3812080 559240 9321032 0 0 4 27 2 25 2 3 95 0 0 0 0 0 3811672 559240 9321644 0 0 0 0 289 1176 3 1 97 0 0 0 0 0 3803612 559240 9329452 0 0 0 40 261 1204 2 1 97 0 0 0 0 0 3803900 559240 9329488 0 0 0 0 285 870 2 1 98 0 0 0 0 0 3802896 559240 9329488 0 0 0 0 242 802 2 0 98 0 0 7 0 0 3784512 559240 9339224 0 0 0 0 1021 98609 21 44 35 0 0 5 0 0 3764016 559240 9354012 0 0 0 0 1288 84593 30 65 5 0 0 5 0 0 3741588 559240 9368512 0 0 0 0 1386 77834 30 65 5 0 0 5 0 0 3720552 559240 9383812 0 0 0 0 1316 76846 30 65 5 0 0 5 0 0 3714152 559240 9398800 0 0 0 0 1319 72068 30 66 5 0 0 1 0 0 3692460 559240 9413572 0 0 0 104 1501 75930 32 63 5 0 0 0 0 0 3721076 559240 9416880 0 0 0 0 532 8329 18 12 70 0 0
16時42分02秒 all 2.72 0.00 0.99 0.00 0.00 96.29 16時42分03秒 all 30.18 0.00 24.55 0.00 0.00 45.27 16時42分04秒 all 55.33 0.00 37.31 0.00 0.00 7.36 16時42分05秒 all 54.31 0.00 35.79 0.00 0.00 9.90 16時42分06秒 all 54.80 0.00 36.36 0.00 0.00 8.84 16時42分07秒 all 54.96 0.00 35.62 0.00 0.00 9.41 16時42分08秒 all 55.98 0.00 36.13 0.00 0.00 7.89 16時42分09秒 all 39.20 0.00 19.85 0.00 0.00 40.95 16時42分10秒 all 2.47 0.00 1.23 0.00 0.00 96.30 16時42分11秒 all 1.24 0.00 0.50 0.00 0.00 98.26
htf@htf-All-Series:~/workspace/swoole/examples/bench$ vmstat -w 1 10000
procs ---------------memory-------------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 3667384 559244 9402656 0 0 4 27 2 27 2 3 95 0 0 0 0 0 3667296 559244 9402760 0 0 0 0 266 886 3 1 96 0 0 4 0 0 3663588 559244 9402668 0 0 0 0 880 34829 18 11 71 0 0 4 0 0 3672008 559244 9402680 0 0 0 0 2206 121758 55 36 8 0 0 5 0 0 3664720 559244 9402680 0 0 0 0 2397 119907 53 38 9 0 0 3 0 0 3661864 559244 9402616 0 0 0 0 1754 121168 54 36 9 0 0 4 0 0 3655944 559244 9402616 0 0 0 0 1907 121098 53 39 8 0 0 4 0 0 3651896 559244 9402616 0 0 0 0 1739 122829 57 34 9 0 0 1 0 0 3632884 559244 9402616 0 0 0 12 1554 95129 50 26 24 0 0 0 0 0 3680560 559244 9402616 0 0 0 0 298 954 8 1 92 0 0
16時44分49秒 CPU %user %nice %system %iowait %steal %idle 16時44分50秒 all 1.97 0.00 0.99 0.00 0.00 97.04 16時44分51秒 all 1.25 0.00 0.25 0.00 0.00 98.50 16時44分52秒 all 1.00 0.00 0.25 0.00 0.00 98.75 16時44分53秒 all 3.25 0.00 4.00 0.25 0.00 92.50 16時44分54秒 all 43.72 0.00 45.73 0.00 0.00 10.55 16時44分55秒 all 45.27 0.00 45.27 0.00 0.00 9.45 16時44分56秒 all 45.00 0.00 45.00 0.00 0.00 10.00 16時44分57秒 all 38.42 0.00 28.08 0.00 0.00 33.50 16時44分58秒 all 3.26 0.00 0.00 0.00 0.00 96.74 16時44分59秒 all 0.74 0.00 0.99 0.00 0.00 98.26
htf@htf-All-Series:~/workspace/swoole/examples/bench$ vmstat -w 1 10000
procs ---------------memory-------------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 3660916 559244 9416532 0 0 4 27 2 28 2 3 95 0 0 0 0 0 3660528 559244 9416868 0 0 0 12 278 1115 2 1 96 0 0 1 0 0 3653212 559244 9416932 0 0 0 0 1352 15161 33 33 34 0 0 1 0 0 3642976 559244 9416868 0 0 0 0 1598 22613 49 45 6 0 0 1 0 0 3634752 559244 9416868 0 0 0 28 1676 23568 47 47 6 0 0 1 0 0 3607328 559244 9417000 0 0 0 0 1374 15695 40 35 25 0 0 0 0 0 3660644 559244 9417000 0 0 0 148 301 945 6 1 93 0 0 0 0 0 3660776 559244 9417000 0 0 0 0 247 1051 1 1 98 0 0 1 0 0 3660776 559244 9416936 0 0 0 0 259 818 1 2 97 0 0