开启opcache扩展性能前后比较

终端使用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

猜你喜欢

转载自blog.csdn.net/resilient/article/details/86297765