目录
PHP中我们了解了那么多关于php7的知识,不知道你们对php7有多少了解,我相信很大一部分人会不知道这部分知识点,那么不急本篇文章就是带领大家更深刻的去了解这个内容。
研究PHP7技术的背景
PHP7性能小记
PHP7性能初印象(比PHP5提升3倍+)
1. 性能对比 - 快速排序算法(随机生成5000个数后按照快速算法排序)
2.性能对比 - WordPress首页
3.性能对比 - Flyme社区APP
性能测试遇到的几个问题&解决办法
为什么PHP7的性能可以提高这么多?
为什么PHP7的在实际的业务性能提高才30%左右?
Redis Proxy的问题
PHP和Redis长短链接的问题
MYSQL数据库连接池的问题
PHP7性能优化的几个细节
PHP7 Opcache(提升1倍左右)
Opcache的工作原理 ?
编译器GCC4.8+PGO(提升5%-10%)
开启多个PHP-FPM主进程(提高10%左右)
PHP部分性能参数优化
未解决的问题
首页 后端开发 PHP7 一分钟了解PHP7性能的蜕变(性能提升4倍)

一分钟了解PHP7性能的蜕变(性能提升4倍)

Jun 25, 2021 am 10:22 AM
php性能

PHP中我们了解了那么多关于php7的知识,不知道你们对php7有多少了解,我相信很大一部分人会不知道这部分知识点,那么不急本篇文章就是带领大家更深刻的去了解这个内容。

研究PHP7技术的背景

  1. 公司开源节流的大背景下 我们需要节省成本
  2. PHP7相对于现在魅族线上的PHP版本5.X 性能提升至少一倍以上
  3. 社区日活用户增长迅速(15年数据 日均PV 年增长348% 日均UV年增长112%)
  4. 移动互联网的大环境下 要求我们的程序能够更快的速度响应用户的请求 以满足更好的用户体验
  5. 对新技术的求知欲望(满足自己的一点点虚荣心)

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%左右?

  1. 实际的业务不一定有很复杂的计算逻辑
  2. 实际的业务会用到Redis 和MYSQL,网络和IO的瓶颈 影响了PHP7的整体性能
  3. 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的工作原理 ?
  1. PHP是解释型语言,Zend引擎会将PHP代码解释为可执行机器码(Operate Code)之后再交由CPU执行。
    这里写图片描述
  2. Opcache是如何加速的
    这里写图片描述

  3. 看看加了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部分性能参数优化

  1. 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>
    登录后复制
  2. 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技术的背景

    1. 公司开源节流的大背景下 我们需要节省成本
    2. PHP7相对于现在魅族线上的PHP版本5.X 性能提升至少一倍以上
    3. 社区日活用户增长迅速(15年数据 日均PV 年增长348% 日均UV年增长112%)
    4. 移动互联网的大环境下 要求我们的程序能够更快的速度响应用户的请求 以满足更好的用户体验
    5. 对新技术的求知欲望(满足自己的一点点虚荣心)

    相关学习视频分享:php视频教程

    以上是一分钟了解PHP7性能的蜕变(性能提升4倍)的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

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

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何使用PHP进行性能分析和调优 如何使用PHP进行性能分析和调优 Jun 06, 2023 pm 01:21 PM

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

如何利用并发编程框架提升PHP性能 如何利用并发编程框架提升PHP性能 Aug 12, 2023 am 09:33 AM

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

PHP CI/CD与PHP性能:如何提高您的项目性能? PHP CI/CD与PHP性能:如何提高您的项目性能? Feb 19, 2024 pm 08:06 PM

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

PHP中的安全性和性能权衡 PHP中的安全性和性能权衡 Jul 06, 2023 pm 08:57 PM

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

PHP函数在容器化环境下的性能提升 PHP函数在容器化环境下的性能提升 Apr 13, 2024 pm 03:42 PM

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

您如何优化PHP会话性能? 您如何优化PHP会话性能? Apr 23, 2025 am 12:13 AM

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

使用微服务如何提高PHP功能的性能与响应速度? 使用微服务如何提高PHP功能的性能与响应速度? Sep 18, 2023 pm 12:03 PM

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

如何使用Memcache提高PHP应用程序的性能? 如何使用Memcache提高PHP应用程序的性能? Nov 07, 2023 pm 12:02 PM

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

See all articles