php 开启opcache

0

优化方案

(1)启用Zend Opcache,启用Opcache非常简单, 在PHP.ini配置文件中加入:

zend_extension=opcache.so 
opcache.enable=1 
opcache.enable_cli=1

(2)使用GCC4.8以上的编译器来编译安装包,只有GCC4.8以上编译出的PHP才会开启Global Register for opline and execute_data支持。

(3)开启HugePage支持,首先在系统中开启HugePages, 然后开启Opcache的hugecodepages。

关于HugePage

操作系统默认的内存是以4KB分页的,而虚拟地址和内存地址需要转换, 而这个转换要查表,CPU为了加速这个查表过程会内建TLB(Translation Lookaside Buffer)。 显然,如果虚拟页越小,表里的条目数也就越多,而TLB大小是有限的,条目数越多TLB的Cache Miss也就会越高, 所以如果我们能启用大内存页就能间接降低这个TLB Cache Miss。

开启方法

以CentOS 6.5为例, 通过命令:

sudo sysctl vm.nr_hugepages=128

分配128个预留的大页内存。

$ cat /proc/meminfo | grep Huge 
AnonHugePages:    444416 kB 
HugePages_Total:     128 
HugePages_Free:      128 
HugePages_Rsvd:        0 
HugePages_Surp:        0 
Hugepagesize:       2048 kB

然后在PHP.ini中加入

opcache.huge_code_pages=1

你可能感兴趣的

载入中...