搜尋
首頁後端開發PHP7一分鐘了解PHP7性能的蛻變(性能提升4倍)

PHP中我們了解了那麼多關於php7的知識,不知道你們對php7有多少了解,我相信很大一部分人會不知道這部分知識點,那麼不急這篇文章就是帶領大家更深刻的去了解這個內容。

研究PHP7技術的背景

  1. 公司開源節流的大背景下我們需要節省成本
  2. PHP7相對於現在魅族線上的PHP版本5.X 效能提升至少一倍以上
  3. 社區日活用戶成長迅速(15年數據日均PV 年增長348% 日均UV年增長112%)
  4. 移動互聯網的大環境下要求我們的程式能夠更快的速度回應使用者的請求以滿足更好的使用者體驗
  5. 對新技術的求知慾望(滿足自己的一點虛榮心)
##PHP7效能小記

PHP7效能初印象(比PHP5提升3倍+)

#1. 效能比較- 快速排序演算法(隨機產生5000個數字後依照快速演算法排序)

一分鐘了解PHP7性能的蛻變(性能提升4倍) PHP5.1 5000個數字快速排序平均回應時間2587ms
PHP5.2 5000個數字快速排序平均回應時間2625ms
PHP5.3 5000數量快速排序平均回應時間2509ms
PHP5.4 5000個數字快速排序平均回應時間2339ms
PHP7.0 5000個數字快速排序平均回應時間685ms

2.效能比較- WordPress首頁

一分鐘了解PHP7性能的蛻變(性能提升4倍)# PHP5.1 WordPress平均回應時間505ms
PHP5.2 WordPress平均回應時間521ms
PHP5.3 WordPress平均回應時間498ms
PHP5.4 WordPress平均回應時間470ms
PHP7. 0 WordPress平均回應時間158ms

3.效能比較- Flyme社群APP

一分鐘了解PHP7性能的蛻變(性能提升4倍) 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
FlymeAPP社群板塊板塊清單頁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. 實際的業務會用到Redis 和MYSQL,網路和IO的瓶頸影響了PHP7的整體效能
  2. HTTPS的效能問題限制了PHP7的能力
Redis Proxy的問題

Redis Proxy目的是為了做Redis高可用&分散式快取用的

經過性能測試,相對直接連接redis而已,用Proxy的性能損耗在10-15%左右(不同的業務可能影響有比較大的差異)

那麼Proxy是不是還有優化的空間的呢?

PHP和Redis長短連結的問題

PHP7 Redis長連線比短連線效能高10%左右(不同的業務差異比較大)

MYSQL資料庫連線池的問題

一分鐘了解PHP7性能的蛻變(性能提升4倍)

資料庫連接池負責分配、管理和釋放資料庫連接,它允許應用程式重複使用一個現有的資料庫連接,而不是再重新建立一個。

Atlas 是360開發和維護的資料庫中間件。是一個位於應用程式與MySQL之間,它實作了MySQL的客戶端與服務端協議,作為服務端與應用程式通訊,同時作為客戶端與MySQL通訊。它對應用程式屏蔽了DB的細節,同時為了降低MySQL負擔。

Atlas 支援主庫宕機不影響讀取、讀寫分離、自動分錶、安全處理、平滑重啟、連接池等
用了資料庫連接池後TPS性能槓槓的整整提高了80%
來看看效果吧

一分鐘了解PHP7性能的蛻變(性能提升4倍)

PHP7效能優化的幾個細節

PHP7 Opcache(大約1倍)

Opcache的工作原理?
  1. PHP是解釋型語言,Zend引擎會將PHP程式碼解釋為執行機器碼(Operate Code)之後再交由CPU執行。
    一分鐘了解PHP7性能的蛻變(性能提升4倍)
  2. Opcache是​​如何加速的
    一分鐘了解PHP7性能的蛻變(性能提升4倍)

  3. #看看加了opcache後的成果吧(請求平均反應時間足足減少了一倍有木有)
    一分鐘了解PHP7性能的蛻變(性能提升4倍)

編譯器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>

相性能參數最佳化

  1. PHP部分效能參數最佳化
  2. php.ini配置
  3. <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>
  4. 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中文網其他相關文章!

陳述
本文轉載於:CSDN。如有侵權,請聯絡admin@php.cn刪除
如何使用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限制)

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

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

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

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

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

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

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),