Opcache
1. Opcache原理
PHP的正常执行流程如下
request请求(nginx,apache,cli等)–>Zend引擎读取.php文件–>扫描其词典和表达式 –>解析文件–>创建要执行的计算机代码(称为Opcode)–>最后执行Opcode–> response 返回
每一次请求PHP脚本都会执行一遍以上步骤,如果PHP源代码没有变化,那么Opcode也不会变化,显然没有必要每次都重新生成Opcode,结合在Web中无所不在的缓存机制,我们可以把Opcode缓存下来,以后直接访问缓存的Opcode岂不是更快,启用Opcode缓存之后的流程图如下所示:
Opcode cache 的目地是避免重复编译,减少 CPU 和内存开销。
2. Opcache配置
在php.ini下添加:
// 加载opcache(需确认已安装opcache拓展) zend_extension=opcache.so // 开启opcache opcache.enable = 1 // OPcache共享内存存储大小,单位MB opcache.memory_consumption=1024 // 1G // PHP使用了一种叫做字符串驻留,默认是4MB opcache.interned_strings_buffer=32 // 这个选项用于控制内存中最多可以缓存多少个PHP文件,这个选项必须得设置得足够大,大于你的项目中的所有PHP文件的总和 opcache.max_accelerated_files=80000 // 设置缓存的过期时间(单位是秒),为0的话每次都要检查 opcache.revalidate_freq=3 // 从字面上理解就是“允许更快速关闭” opcache.fast_shutdown=1 // CLI环境下,PHP启用OPcache opcache.enable_cli=1
HugePage
1. HugePage原理
通过启用这个特性,PHP7会把自身的TEXT段(执行体)”挪“到Huagepage上,之前的测试,我们能稳定的在Wordpress上看到2%~3%的QPS提升。
关于Hugepage是啥,简单的说下就是默认的内存是以4KB分页的,而虚拟地址和内存地址是需要转换的, 而这个转换是要查表的,CPU为了加速这个查表过程都会内建TLB(Translation Lookaside Buffer), 显而易见如果虚拟页越小,表里的条目数也就越多,而TLB大小是有限的,条目数越多TLB的Cache Miss也就会越高, 所以如果我们能启用大内存页就能间接降低这个TLB Cache Miss,至于详细的介绍,Google一搜一大堆我就不赘述了,这里主要说明下如何启用这个新特性, 从而带来明显的性能提升。
2. HugePage配置
$ sudo sysctl vm.nr_hugepages=512 // 切勿越大越好,会长占内存
分配512个预留的大页内存:
cat /proc/meminfo | grep Huge AnonHugePages: 106496 kB HugePages_Total: 512 HugePages_Free: 504 HugePages_Rsvd: 27 HugePages_Surp: 0 Hugepagesize: 2048 kB
然后在php.ini中加入:
opcache.huge_code_pages=1
Opcache file cache
1. Opcache file cache介绍
使用opcache把编译后的php文件存储为文件,实现php源码保护和脚本加速, 会有很明显的性能提升
2. Opcache file cache配置
在php.ini中加入:
opcache.file_cache=/tmp
这样PHP就会在/tmp目录下Cache一些Opcode的二进制导出文件, 可以跨PHP生命周期存在.
配置后需重启php-fpm
亲测
系统:centOs 7
php版本:7.4
nginx
laravel: 8.5
优化前
cpu:95%-96%
内存:2G/16G
10分钟4W并发
失败率:24%
聚合报告
每秒处理事务
![PHP7性能优化]
![PHP7性能优化笔记]
优化后
cpu:20%-40%
内存:5.8G/16G(此处我HugePage设置2048)
10分钟4W并发
失败率:0%
第一次压测
聚合报告
每秒处理事务
第二次压测
聚合报告
每秒处理事务
推荐学习:《PHP7教程》
以上是高质量笔记来了!关于PHP7性能优化的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能