php7.2 下 OPcache设置优化

作者: 麻辣阁 分类: wordpress 发布时间: 2018-11-20 15:54

启用Opcache

启用Opcache非常简单, 在/etc/php.ini配置文件中加入:

;开启 Opcache
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=1
opcache.huge_code_pages=1

重启 nginx 和 php-fpm

可以编写一个 temp.php 文件放到网址根目录, 查看 opcahe 是否已经启用:

<?php
    phpinfo();
?>

可以在输出中搜索Zend OPcache 查看信息.

配置 Hugepage

查看 Hugepage信息:

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

cat /proc/meminfo 输出的信息更全. 输出中:

  • AnonHugePages。匿名 HugePages 数量
  • HugePages_Total。HugePages 数量。空间大小为 HugePages 数乘以 2M。
  • HugePages_Free。池中尚未分配的 HugePages 数量。
  • HugePages_Rsvd。“reserved”的缩写形式,表示池中已经承诺分配但尚未分配的 HugePages 数量。保留的 HugePages 保证应用程序随时请求都能够从 HugePages 池分配 HugePages,即使系统已经运行一段时间。
  • HugePages_Surp。“surplus”的缩写形式,表示池中大于 /proc/sys/vm/nr_hugepages 中值的 HugePages 数量。剩余 HugePages 的最大数量由 /proc/sys/vm/nr_overcommit_hugepages 控制。此值为 0 的情况很常见。
  • Hugepagesize。HugePage 的大小。此参数当前为 2048 或 2 MB。

配置OS, 分配一些Hugepages:

sysctl vm.nr_hugepages=50
vm.nr_hugepages = 50
cat /proc/meminfo | grep Huge
AnonHugePages:    145408 kB
HugePages_Total:      50
HugePages_Free:       50
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
service php-fpm restart
Redirecting to /bin/systemctl restart php-fpm.service
cat /proc/meminfo | grep Huge
AnonHugePages:    131072 kB
HugePages_Total:      50
HugePages_Free:       49
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB

以上的 sysctl vm.nr_hugepages=50 是临时分配的,机器重启后就失效了, vi /etc/sysctl.conf, 加入如下行,

# 设置 hugepage
vm.nr_hugepages=128

执行如下命令重新加载参数, 重启 php-fpm:

sysctl -p
service php-fpm restart

参考


发表评论

电子邮件地址不会被公开。 必填项已用*标注