php5.4以上版本已经自带了opcache,5.2 ~ 5.4版本需要自行下载安装opcache,本次试验采用php7.1,apache服务器,机器配置:
一,配置opcache
zend_extension =”~path/php7.0.10/ext/php_opcache.dll” //opcache拓展文件的地址 opcache.enable=1 //开启opcache opcache.memory_consumption=128 //分配最大使用内存 opcache.interned_strings_buffer=8 //暂存池中字符串的占内存总量.(单位:MB) opcache.max_wasted_percentage=5 //内存使用超过分配的最大内存的5%就重新调度 opcache.fast_shutdown=1 //打开快速关闭, 打开这个在PHP Request Shutdown的时候会收内存的速度会提高 二,配置apache的mpm参数 在~path/apache2.4.23\conf\extra文件夹下面找到httpd-mpm.conf文件,用txt编辑器打开,由于我使用的是WinNT MPM,因此只修改WinNT MPM的配置参数: ThreadsPerChild 500//每个进程的线程数 MaxConnectionsPerChild 50000 //每个子进程的最大连接数,0为不限制连接数,太小(大于0)可能在访问高峰期造成apache服务器的重启。
三,测试 1,清除缓存(windows点击加速小球,360卫士,腾讯管家,鲁大师都有啊) 2,echo phpinfo(); 查看opcache信息,确保opcache处于关闭状态: opcache.enable=0 重启服务器 3,测试 ab -n 10000 -c 100 http://localhost/testphp.php 测试结果:
可以看到每秒最大处理请求次数为1730.29次,每个请求响应时间是0.578s
4,清除缓存 5,打开opcache opcache.enable=1 重启服务器 6,测试 ab -n 10000 -c 100 http://localhost/testphp.php 测试结果: 可以看到每秒最大处理请求次数为2126.98次,每个请求响应时间是0.470s
7,对比测试结论 opcache在本次测试中,每秒最大处理请求次数提高了越23%,每个请求响应时间降低了0.1s。
四,开启opcache对内存的影响 1,关闭opcache 在关闭opcache的情况下,重启服务器,清空缓存,连续不间断多次执行压力测试命令
ab -n 10000 -c 100 http://localhost/testphp.php
程序运行所占的内存稳定在101Mb左右,随着压力测试的继续,该值稳定在101Mb左右。
2,开启opcache 在关闭opcache的情况下,重启服务器,清空缓存,连续不间断多次执行压力测试命令
ab -n 10000 -c 100 http://localhost/testphp.php
内存使用最高去到134Mb,继续执行压力测试命令,内存将会降到100Mb以下。 这是因为设置了 opcache.max_wasted_percentage=5 //内存使用超过分配的最大内存的5%就重新调度 当内存使用超过128*105%=134Mb时,opcache会重新调度。
