一分钟了解PHP7性能的蜕变(性能提升4倍)
PHP中我们了解了那么多关于php7的知识,不知道你们对php7有多少了解,我相信很大一部分人会不知道这部分知识点,那么不急本篇文章就是带领大家更深刻的去了解这个内容。
研究PHP7技术的背景
- 公司开源节流的大背景下 我们需要节省成本
- PHP7相对于现在魅族线上的PHP版本5.X 性能提升至少一倍以上
- 社区日活用户增长迅速(15年数据 日均PV 年增长348% 日均UV年增长112%)
- 移动互联网的大环境下 要求我们的程序能够更快的速度响应用户的请求 以满足更好的用户体验
- 对新技术的求知欲望(满足自己的一点点虚荣心)
PHP7性能小记
PHP7性能初印象(比PHP5提升3倍+)
1. 性能对比 - 快速排序算法(随机生成5000个数后按照快速算法排序)
PHP5.1 5000个数快速排序平均响应时间2587ms
PHP5.2 5000个数快速排序平均响应时间2625ms
PHP5.3 5000个数快速排序平均响应时间2509ms
PHP5.4 5000个数快速排序平均响应时间2339ms
PHP7.0 5000个数快速排序平均响应时间685ms
2.性能对比 - WordPress首页
PHP5.1 WordPress平均响应时间505ms
PHP5.2 WordPress平均响应时间521ms
PHP5.3 WordPress平均响应时间498ms
PHP5.4 WordPress平均响应时间470ms
PHP7.0 WordPress平均响应时间158ms
3.性能对比 - Flyme社区APP
PHP5.4 500个数快速排序TPS 552
PHP7.0 500个数快速排序TPS 3165
Flyme社区APP首页 PHP5.4 TPS 1535
Flyme社区APP首页 PHP7.0 TPS 1975
Flyme社区APP板块列表页 PHP5.4 TPS 2237
Flyme社区APP板块列表页 PHP7.0 TPS 2387
性能测试遇到的几个问题&解决办法
为什么PHP7的性能可以提高这么多?
1. JIT
2. Zval的改变
3. 内部类型zend_string
4. PHP数组的变化(HashTable和Zend Array)
5. 函数调用机制(Function Calling Convention)
6. 通过宏定义和内联函数(inline),让编译器提前完成部分工作
为什么PHP7的在实际的业务性能提高才30%左右?
- 实际的业务不一定有很复杂的计算逻辑
- 实际的业务会用到Redis 和MYSQL,网络和IO的瓶颈 影响了PHP7的整体性能
- HTTPS的性能问题 限制了PHP7的能力
Redis Proxy的问题
Redis Proxy目的是为了做Redis高可用&分布式缓存用的
经过性能测试,相对直接连接redis而已,用Proxy的性能损耗在10-15%左右(不同的业务 可能影响有比较大的差异)
那么Proxy是不是还有优化的空间的呢?
PHP和Redis长短链接的问题
PHP7 Redis长连接比短连接性能高10%左右(不同的业务差别比较大)
MYSQL数据库连接池的问题
数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。
Atlas 是360开发和维护的数据库中间件。是一个位于应用程序与MySQL之间,它实现了MySQL的客户端与服务端协议,作为服务端与应用程序通讯,同时作为客户端与MySQL通讯。它对应用程序屏蔽了DB的细节,同时为了降低MySQL负担。
Atlas 支持主库宕机不影响读、读写分离、自动分表、安全处理、平滑重启、连接池等
用了数据库连接池后 TPS性能杠杠的 整整提高了80%
来看看效果吧
PHP7性能优化的几个细节
PHP7 Opcache(提升1倍左右)
Opcache的工作原理 ?
- PHP是解释型语言,Zend引擎会将PHP代码解释为可执行机器码(Operate Code)之后再交由CPU执行。
Opcache是如何加速的
看看加了opcache后的成果吧(请求平均响应时间足足减少了一倍 有木有)
编译器GCC4.8+PGO(提升5%-10%)
PGO是一项编译优化技术,它可以配合GCC等编译器使用,提高编译器的编译效率。
虽然PGO可以提高编译效率,但它并没有被广泛使用。
原因很简单:
1. 它繁杂的双编译模型 和 有限的使用场景,让PGO显得很鸡肋
2. 在有了opcache这样的产品出现后,PGO带来的性能提升并不是很明显。
开启多个PHP-FPM主进程(提高10%左右)
<source lang="xml" collapse="false" first-line="1"> #php-fpm.conf listen = /dev/shm/php-fcgi.sock #php-fpm2.conf listen = /dev/shm/php-fcgi2.sock #/usr/local/php/sbin/php-fpm --fpm-config /usr/local/php/etc/php-fpm.conf #/usr/local/php/sbin/php-fpm --fpm-config /usr/local/php/etc/php-fpm2.conf #代理 upstream backend{ server unix:/dev/shm/php-fcgi.sock; server unix:/dev/shm/php-fcgi2.sock; } </source>
HugePage(提升2%-3%)
默认的内存是以4KB分页的,而虚拟地址和内存地址是需要转换的, 而这个转换是要查表的,
CPU为了加速这个查表过程都会内建TLB(Translation Lookaside Buffer), 显而易见如果虚拟页越小,表里的条目数也就越多,
而TLB大小是有限的,条目数越多TLB的Cache Miss也就会越高, 所以如果我们能启用大内存页就能间接降低这个TLB Cache Miss。
<source lang="xml" collapse="false" first-line="1"> opcache.huge_code_pages=1 sudo sysctl vm.nr_hugepages=128 </source>
相性能参数优化
PHP部分性能参数优化
php.ini配置
<source lang="xml" collapse="false" first-line="1"> opcache.enable=1 opcache.enable_cli=1 opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=4000 opcache.revalidate_freq=60 opcache.save_comments=0 opcache.fast_shutdown=1 opcache.huge_code_pages=1 opcache.file_cache=/dev/shm/opcache/ </source>
登录后复制PHP-FPM
<source lang="xml" collapse="false" first-line="1"> listen = /dev/shm/php-fcgi.sock pm = static pm.max_children = 320 pm.max_requests = 10240 </source>
登录后复制未解决的问题
Nginx HTTPS的性能问题
研究PHP7技术的背景
- 公司开源节流的大背景下 我们需要节省成本
- PHP7相对于现在魅族线上的PHP版本5.X 性能提升至少一倍以上
- 社区日活用户增长迅速(15年数据 日均PV 年增长348% 日均UV年增长112%)
- 移动互联网的大环境下 要求我们的程序能够更快的速度响应用户的请求 以满足更好的用户体验
- 对新技术的求知欲望(满足自己的一点点虚荣心)
相关学习视频分享:php视频教程
以上是一分钟了解PHP7性能的蜕变(性能提升4倍)的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

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

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

作为一种流行的服务端语言,PHP在网站开发和运行中扮演着重要的角色。然而,随着PHP代码量的不断增加和应用程序的复杂性提高,性能瓶颈也越来越容易出现。为了避免这种问题,我们需要进行性能分析和调优。本文将简单介绍如何使用PHP进行性能分析和调优,为您的应用程序提供更高效的运行环境。一、PHP性能分析工具1.XdebugXdebug是一款广泛使用的代码分析工具,

如何利用并发编程框架提升PHP性能随着Web应用的复杂性不断增加,高并发处理成为了开发者面临的一个挑战。传统的PHP语言在处理并发请求时存在性能瓶颈,这就迫使开发者寻找更高效的解决方案。利用并发编程框架,如Swoole和ReactPHP,可以显着提升PHP的性能和并发处理能力。本文将介绍如何通过使用Swoole和ReactPHP来提高PHP应用的性能。我们将

PHPCI/CD介绍CI/CD(持续集成和持续交付)是一种软件开发实践,可以帮助开发团队更频繁地交付高质量的软件。CI/CD流程通常包括以下步骤:开发人员将代码提交到版本控制系统。构建系统自动构建代码并运行单元测试。如果构建和测试通过,则将代码部署到测试环境。测试人员在测试环境中测试代码。如果测试通过,则将代码部署到生产环境。CI/CD如何提高php项目的性能?CI/CD可以提高PHP项目的性能,原因有以下几点:自动化测试。CI/CD流程通常包括自动化测试,可以帮助开发团队尽早发现和修复错误。这

PHP中的安全性和性能权衡摘要:PHP作为一种流行的Web编程语言,不仅提供了灵活的开发环境和丰富的功能,同时也面临着安全性和性能的权衡。本文将探讨PHP中的安全性和性能问题,并提供一些代码示例来说明如何在两者之间寻求平衡。引言:在Web应用程序开发中,安全性和性能是两个互相关联却又独立重要的方面。服务器端语言PHP具备良好的编程特性和强大的功能,然而,不合

容器化环境中的PHP函数性能优化策略包括:升级PHP版本优化PHP配置(如增加内存限制、启用OPcache等)使用PHP扩展(如APC、Xdebug、Swoole等)优化容器配置(如设置内存和CPU限制)

优化PHP会话性能的方法包括:1.延迟会话启动,2.使用数据库存储会话,3.压缩会话数据,4.管理会话生命周期,5.实现会话共享。这些策略能显着提升应用在高并发环境下的效率。

使用微服务如何提高PHP功能的性能与响应速度?在日益发展的互联网时代,高性能和快速响应成为了用户对于网站和应用的基本要求。而作为一种常用的后端开发语言,PHP也需要不断提升自身的性能和响应速度以满足用户需求。而微服务架构则成为了一种优秀的解决方案,它不仅可以提高PHP应用的性能,还可以提供更好的扩展性和可维护性。本文将介绍如何使用微服务来提高PHP功能的性能

Memcache是一种高效的缓存解决方案,可以大大提高PHP应用程序的性能。在本文中,我们将介绍如何使用Memcache来优化PHP应用程序的性能,并提供具有实际意义的PHP代码示例。什么是Memcache?Memcache是一种开源的分布式缓存解决方案,它可以将数据存储在内存中,从而快速地提供响应。因为数据存储在内存中,所以查询速度非常快。与其他数据库解决
