终端使用ab测试
开启前
在本地 请求10000 并发200 看看处理情况
刚开始不稳定,瞬间并发,可能直接崩溃,要不就是响应时间超级慢,可以都测试几次 取平均值
fishMacBook-Air:~ may$ ab -n 10000 -c 200 http://172.17.130.160:7888/index/goodsclass/classlist
This is ApacheBench, Version 2.3 <$Revision: 1748469 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 172.17.130.160 (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests
Server Software: nginx/1.11.4
Server Hostname: 172.17.130.160
Server Port: 7888
Document Path: /index/goodsclass/classlist
Document Length: 1841 bytes
Concurrency Level: 200
Time taken for tests: 21.576 seconds
Complete requests: 10000
Failed requests: 6222
(Connect: 0, Receive: 0, Length: 6222, Exceptions: 0)
Non-2xx responses: 6222
Total transferred: 9593262 bytes
HTML transferred: 8031704 bytes
Requests per second: 463.48 [#/sec] (mean)
Time per request: 431.522 [ms] (mean)
Time per request: 2.158 [ms] (mean, across all concurrent requests)
Transfer rate: 434.20 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 390 2701.7 3 19303
Processing: 0 41 51.7 9 225
Waiting: 0 40 51.3 8 224
Total: 0 430 2701.5 15 19495
Percentage of the requests served within a certain time (ms)
50% 15
66% 54
75% 88
80% 101
90% 135
95% 164
98% 19298
99% 19314
100% 19495 (longest request)
fishMacBook-Air:~ may$ ab -n 10000 -c 200 http://172.17.130.160:7888/index/goodsclass/classlist
This is ApacheBench, Version 2.3 <$Revision: 1748469 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 172.17.130.160 (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests
Server Software: nginx/1.11.4
Server Hostname: 172.17.130.160
Server Port: 7888
Document Path: /index/goodsclass/classlist
Document Length: 1841 bytes
Concurrency Level: 100
Time taken for tests: 22.896 seconds
Complete requests: 10000
Failed requests: 0
Total transferred: 20040000 bytes
HTML transferred: 18410000 bytes
Requests per second: 436.76 [#/sec] (mean)
Time per request: 228.957 [ms] (mean)
Time per request: 2.290 [ms] (mean, across all concurrent requests)
Transfer rate: 854.76 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 202 1760.2 0 19510
Processing: 1 17 44.4 12 786
Waiting: 1 16 43.0 12 784
Total: 1 219 1764.7 12 19521
Percentage of the requests served within a certain time (ms)
50% 12
66% 13
75% 14
80% 15
90% 20
95% 35
98% 2327
99% 12212
100% 19521 (longest request)
fishMacBook-Air:~ may$ ab -n 10000 -c 200 http://172.17.130.160:7888/index/goodsclass/classlist
This is ApacheBench, Version 2.3 <$Revision: 1748469 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 172.17.130.160 (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests
Server Software: nginx/1.11.4
Server Hostname: 172.17.130.160
Server Port: 7888
Document Path: /index/goodsclass/classlist
Document Length: 1841 bytes
Concurrency Level: 200
Time taken for tests: 2.433 seconds
Complete requests: 10000
Failed requests: 6336
(Connect: 0, Receive: 0, Length: 6336, Exceptions: 0)
Non-2xx responses: 6336
Total transferred: 9401856 bytes
HTML transferred: 7841552 bytes
Requests per second: 4109.75 [#/sec] (mean)
Time per request: 48.665 [ms] (mean)
Time per request: 0.243 [ms] (mean, across all concurrent requests)
Transfer rate: 3773.36 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 3 11.3 3 257
Processing: 0 45 63.3 8 376
Waiting: 0 44 62.9 7 373
Total: 0 48 64.0 13 376
Percentage of the requests served within a certain time (ms)
50% 13
66% 46
75% 81
80% 98
90% 139
95% 167
98% 247
99% 290
100% 376 (longest request)
直接崩了 超时了
fishMacBook-Air:~ may$ ab -n 10000 -c 200 http://172.17.130.160:7888/index/goodsclass/classlist
This is ApacheBench, Version 2.3 <$Revision: 1748469 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 172.17.130.160 (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
apr_pollset_poll: The timeout specified has expired (70007)
Total of 4703 requests completed
再者 开启opcahe
重启mamp
然后再次测试
fishMacBook-Air:~ may$ ab -n 10000 -c 200 http://172.17.130.160:7888/index/goodsclass/classlist
This is ApacheBench, Version 2.3 <$Revision: 1748469 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 172.17.130.160 (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests
Server Software: nginx/1.11.4
Server Hostname: 172.17.130.160
Server Port: 7888
Document Path: /index/goodsclass/classlist
Document Length: 1841 bytes
Concurrency Level: 200
Time taken for tests: 2.671 seconds
Complete requests: 10000
Failed requests: 727
(Connect: 0, Receive: 0, Length: 727, Exceptions: 0)
Non-2xx responses: 727
Total transferred: 18819367 bytes
HTML transferred: 17197364 bytes
Requests per second: 3743.66 [#/sec] (mean)
Time per request: 53.424 [ms] (mean)
Time per request: 0.267 [ms] (mean, across all concurrent requests)
Transfer rate: 6880.20 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 12 19.3 8 164
Processing: 0 41 36.0 31 211
Waiting: 0 36 34.6 24 197
Total: 0 53 41.1 45 221
Percentage of the requests served within a certain time (ms)
50% 45
66% 53
75% 60
80% 65
90% 96
95% 172
98% 193
99% 200
100% 221 (longest request)
fishMacBook-Air:~ may$ ab -n 10000 -c 200 http://172.17.130.160:7888/index/goodsclass/classlist
This is ApacheBench, Version 2.3 <$Revision: 1748469 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 172.17.130.160 (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests
Server Software: nginx/1.11.4
Server Hostname: 172.17.130.160
Server Port: 7888
Document Path: /index/goodsclass/classlist
Document Length: 1841 bytes
Concurrency Level: 200
Time taken for tests: 2.671 seconds
Complete requests: 10000
Failed requests: 727
(Connect: 0, Receive: 0, Length: 727, Exceptions: 0)
Non-2xx responses: 727
Total transferred: 18819367 bytes
HTML transferred: 17197364 bytes
Requests per second: 3743.66 [#/sec] (mean)
Time per request: 53.424 [ms] (mean)
Time per request: 0.267 [ms] (mean, across all concurrent requests)
Transfer rate: 6880.20 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 12 19.3 8 164
Processing: 0 41 36.0 31 211
Waiting: 0 36 34.6 24 197
Total: 0 53 41.1 45 221
Percentage of the requests served within a certain time (ms)
50% 45
66% 53
75% 60
80% 65
90% 96
95% 172
98% 193
99% 200
100% 221 (longest request)
fishMacBook-Air:~ may$ ab -n 10000 -c 200 http://172.17.130.160:7888/index/goodsclass/classlist
This is ApacheBench, Version 2.3 <$Revision: 1748469 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 172.17.130.160 (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests
Server Software: nginx/1.11.4
Server Hostname: 172.17.130.160
Server Port: 7888
Document Path: /index/goodsclass/classlist
Document Length: 1841 bytes
Concurrency Level: 200
Time taken for tests: 2.844 seconds
Complete requests: 10000
Failed requests: 534
(Connect: 0, Receive: 0, Length: 534, Exceptions: 0)
Non-2xx responses: 534
Total transferred: 19143414 bytes
HTML transferred: 17519288 bytes
Requests per second: 3516.38 [#/sec] (mean)
Time per request: 56.877 [ms] (mean)
Time per request: 0.284 [ms] (mean, across all concurrent requests)
Transfer rate: 6573.77 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 8 15.0 4 148
Processing: 0 48 49.3 29 248
Waiting: 0 45 47.9 25 247
Total: 1 56 51.3 38 262
Percentage of the requests served within a certain time (ms)
50% 38
66% 51
75% 66
80% 85
90% 153
95% 171
98% 194
99% 206
100% 262 (longest request)
fishMacBook-Air:~ may$ ab -n 10000 -c 200 http://172.17.130.160:7888/index/goodsclass/classlist
This is ApacheBench, Version 2.3 <$Revision: 1748469 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 172.17.130.160 (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests
Server Software: nginx/1.11.4
Server Hostname: 172.17.130.160
Server Port: 7888
Document Path: /index/goodsclass/classlist
Document Length: 1841 bytes
Concurrency Level: 200
Time taken for tests: 21.576 seconds
Complete requests: 10000
Failed requests: 6222
(Connect: 0, Receive: 0, Length: 6222, Exceptions: 0)
Non-2xx responses: 6222
Total transferred: 9593262 bytes
HTML transferred: 8031704 bytes
Requests per second: 463.48 [#/sec] (mean)
Time per request: 431.522 [ms] (mean)
Time per request: 2.158 [ms] (mean, across all concurrent requests)
Transfer rate: 434.20 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 390 2701.7 3 19303
Processing: 0 41 51.7 9 225
Waiting: 0 40 51.3 8 224
Total: 0 430 2701.5 15 19495
Percentage of the requests served within a certain time (ms)
50% 15
66% 54
75% 88
80% 101
90% 135
95% 164
98% 19298
99% 19314
100% 19495 (longest request)
fishMacBook-Air:~ may$ ab -n 10000 -c 200 http://172.17.130.160:7888/index/goodsclass/classlist
This is ApacheBench, Version 2.3 <$Revision: 1748469 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 172.17.130.160 (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
apr_socket_recv: Connection reset by peer (54)
Total of 3363 requests completed
fishMacBook-Air:~ may$ ab -n 10000 -c 200 http://172.17.130.160:7888/index/goodsclass/classlist
This is ApacheBench, Version 2.3 <$Revision: 1748469 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 172.17.130.160 (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests
Server Software: nginx/1.11.4
Server Hostname: 172.17.130.160
Server Port: 7888
Document Path: /index/goodsclass/classlist
Document Length: 1841 bytes
Concurrency Level: 200
Time taken for tests: 2.626 seconds
Complete requests: 10000
Failed requests: 780
(Connect: 0, Receive: 0, Length: 780, Exceptions: 0)
Non-2xx responses: 780
Total transferred: 18730380 bytes
HTML transferred: 17108960 bytes
Requests per second: 3808.69 [#/sec] (mean)
Time per request: 52.511 [ms] (mean)
Time per request: 0.263 [ms] (mean, across all concurrent requests)
Transfer rate: 6966.62 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 11 11.9 9 137
Processing: 0 42 33.4 33 185
Waiting: 0 37 32.6 27 183
Total: 0 52 35.1 47 201
Percentage of the requests served within a certain time (ms)
50% 47
66% 55
75% 59
80% 64
90% 97
95% 135
98% 164
99% 174
100% 201 (longest request)
fishMacBook-Air:~ may$
只想说 开启opcache后 ,性能提升不少
做个比较
就单看第三项
Requests per second: xxx [#/sec] (mean)吞吐量-每秒请求数
Time per request: xxxx [ms] (mean)服务器收到请求,响应页面要花费的时间
Time per request: xxx [ms] (mean, across all concurrent requests)并发的每个请求平均消耗时间
延长的问题
根据自己的需要选择自己需要配置的选项
[opcache]
zend_extension = "/Applications/MAMP/bin/php/php5.6.30/lib/php/extensions/no-debug-non-zts-20131226/opcahe.so"
; Zend Optimizer + 的开关, 关闭时代码不再优化.
opcache.enable=1
; Determines if Zend OPCache is enabled for the CLI version of PHP
opcache.enable_cli=1
; Zend Optimizer + 共享内存的大小, 总共能够存储多少预编译的 PHP 代码(单位:MB)
; 推荐 128
opcache.memory_consumption=64
; Zend Optimizer + 暂存池中字符串的占内存总量.(单位:MB)
; 推荐 8
opcache.interned_strings_buffer=4
; 最大缓存的文件数目 200 到 100000 之间
; 推荐 4000
opcache.max_accelerated_files=2000
; 内存“浪费”达到此值对应的百分比,就会发起一个重启调度.
opcache.max_wasted_percentage=5
; 开启这条指令, Zend Optimizer + 会自动将当前工作目录的名字追加到脚本键上,
; 以此消除同名文件间的键值命名冲突.关闭这条指令会提升性能,
; 但是会对已存在的应用造成破坏.
opcache.use_cwd=0
; 开启文件时间戳验证
opcache.validate_timestamps=1
; 2s检查一次文件更新 注意:0是一直检查不是关闭
; 推荐 60
opcache.revalidate_freq=2
; 允许或禁止在 include_path 中进行文件搜索的优化
;opcache.revalidate_path=0
; 是否保存文件/函数的注释 如果apigen、Doctrine、 ZF2、 PHPUnit需要文件注释
; 推荐 0
opcache.save_comments=1
; 是否加载文件/函数的注释
;opcache.load_comments=1
; 打开快速关闭, 打开这个在PHP Request Shutdown的时候会收内存的速度会提高
; 推荐 1
opcache.fast_shutdown=1
;允许覆盖文件存在(file_exists等)的优化特性。
;opcache.enable_file_override=0
; 定义启动多少个优化过程
;opcache.optimization_level=0xffffffff
; 启用此Hack可以暂时性的解决”can’t redeclare class”错误.
;opcache.inherited_hack=1
; 启用此Hack可以暂时性的解决”can’t redeclare class”错误.
;opcache.dups_fix=0
; 设置不缓存的黑名单
; 不缓存指定目录下cache_开头的PHP文件. /png/www/example.com/public_html/cache/cache_
;opcache.blacklist_filename=
; 通过文件大小屏除大文件的缓存.默认情况下所有的文件都会被缓存.
;opcache.max_file_size=0
; 每 N 次请求检查一次缓存校验.默认值0表示检查被禁用了.
; 由于计算校验值有损性能,这个指令应当紧紧在开发调试的时候开启.
;opcache.consistency_checks=0
; 从缓存不被访问后,等待多久后(单位为秒)调度重启
;opcache.force_restart_timeout=180
; 错误日志文件名.留空表示使用标准错误输出(stderr).
;opcache.error_log=
; 将错误信息写入到服务器(Apache等)日志
;opcache.log_verbosity_level=1
; 内存共享的首选后台.留空则是让系统选择.
;opcache.preferred_memory_model=
; 防止共享内存在脚本执行期间被意外写入, 仅用于内部调试.
;opcache.protect_memory=0
由于我使用的是mamp环境 nginx+mysql+php
php5.6版本
我使用的是默认的配置
这只是在本地测试,end opcache会自动在内存中缓存预先编译好的php字节码,如果缓存了某个文件的字节码,就执行对应的字节码
因为PHP是弱类型语言,不能直接被机器识别,需要 zend 引擎 处理,经过词法分析 语法分析,处理成opcode(operator code)
顺便说一下PHP7中增加了抽象语法树的概念.
再来看
开启opcache前后
开启未测试前
cache hits 命中数 0
cache misses 未命中数 35
使用内存12583384
开启后测试
cache hits 命中数 34326
cache misses 未命中数 54
使用内存13610472b
浏览器访问方面 我们可以对比看到
未开启时 平均响应时间在 94-102 前几次访问140ms左右
开启后平均响应时间在27-34ms