站長(zhǎng)資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

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

        PHP中我們了解了那么多關(guān)于php7的知識(shí),不知道你們對(duì)php7有多少了解,我相信很大一部分人會(huì)不知道這部分知識(shí)點(diǎn),那么不急本篇文章就是帶領(lǐng)大家更深刻的去了解這個(gè)內(nèi)容。

        研究PHP7技術(shù)的背景

        1. 公司開(kāi)源節(jié)流的大背景下 我們需要節(jié)省成本
        2. PHP7相對(duì)于現(xiàn)在魅族線上的PHP版本5.X 性能提升至少一倍以上
        3. 社區(qū)日活用戶增長(zhǎng)迅速(15年數(shù)據(jù) 日均PV 年增長(zhǎng)348% 日均UV年增長(zhǎng)112%)
        4. 移動(dòng)互聯(lián)網(wǎng)的大環(huán)境下 要求我們的程序能夠更快的速度響應(yīng)用戶的請(qǐng)求 以滿足更好的用戶體驗(yàn)
        5. 對(duì)新技術(shù)的求知欲望(滿足自己的一點(diǎn)點(diǎn)虛榮心)

        PHP7性能小記

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

        1. 性能對(duì)比 – 快速排序算法(隨機(jī)生成5000個(gè)數(shù)后按照快速算法排序)

        一分鐘了解PHP7性能的蛻變(性能提升4倍)
        PHP5.1 5000個(gè)數(shù)快速排序平均響應(yīng)時(shí)間2587ms
        PHP5.2 5000個(gè)數(shù)快速排序平均響應(yīng)時(shí)間2625ms
        PHP5.3 5000個(gè)數(shù)快速排序平均響應(yīng)時(shí)間2509ms
        PHP5.4 5000個(gè)數(shù)快速排序平均響應(yīng)時(shí)間2339ms
        PHP7.0 5000個(gè)數(shù)快速排序平均響應(yīng)時(shí)間685ms

        2.性能對(duì)比 – WordPress首頁(yè)

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

        3.性能對(duì)比 – Flyme社區(qū)APP

        一分鐘了解PHP7性能的蛻變(性能提升4倍)
        PHP5.4 500個(gè)數(shù)快速排序TPS 552
        PHP7.0 500個(gè)數(shù)快速排序TPS 3165
        Flyme社區(qū)APP首頁(yè) PHP5.4 TPS 1535
        Flyme社區(qū)APP首頁(yè) PHP7.0 TPS 1975
        Flyme社區(qū)APP板塊列表頁(yè) PHP5.4 TPS 2237
        Flyme社區(qū)APP板塊列表頁(yè) PHP7.0 TPS 2387

        性能測(cè)試遇到的幾個(gè)問(wèn)題&解決辦法

        為什么PHP7的性能可以提高這么多?

        1. JIT
        2. Zval的改變
        3. 內(nèi)部類(lèi)型zend_string
        4. PHP數(shù)組的變化(HashTable和Zend Array)
        5. 函數(shù)調(diào)用機(jī)制(Function Calling Convention)
        6. 通過(guò)宏定義和內(nèi)聯(lián)函數(shù)(inline),讓編譯器提前完成部分工作

        為什么PHP7的在實(shí)際的業(yè)務(wù)性能提高才30%左右?

        1. 實(shí)際的業(yè)務(wù)不一定有很復(fù)雜的計(jì)算邏輯
        2. 實(shí)際的業(yè)務(wù)會(huì)用到Redis 和MYSQL,網(wǎng)絡(luò)和IO的瓶頸 影響了PHP7的整體性能
        3. HTTPS的性能問(wèn)題 限制了PHP7的能力

        Redis Proxy的問(wèn)題

        Redis Proxy目的是為了做Redis高可用&分布式緩存用的
        經(jīng)過(guò)性能測(cè)試,相對(duì)直接連接redis而已,用Proxy的性能損耗在10-15%左右(不同的業(yè)務(wù) 可能影響有比較大的差異)

        那么Proxy是不是還有優(yōu)化的空間的呢?

        PHP和Redis長(zhǎng)短鏈接的問(wèn)題

        PHP7 Redis長(zhǎng)連接比短連接性能高10%左右(不同的業(yè)務(wù)差別比較大)

        MYSQL數(shù)據(jù)庫(kù)連接池的問(wèn)題

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

        數(shù)據(jù)庫(kù)連接池負(fù)責(zé)分配、管理和釋放數(shù)據(jù)庫(kù)連接,它允許應(yīng)用程序重復(fù)使用一個(gè)現(xiàn)有的數(shù)據(jù)庫(kù)連接,而不是再重新建立一個(gè)。
        Atlas 是360開(kāi)發(fā)和維護(hù)的數(shù)據(jù)庫(kù)中間件。是一個(gè)位于應(yīng)用程序與MySQL之間,它實(shí)現(xiàn)了MySQL的客戶端與服務(wù)端協(xié)議,作為服務(wù)端與應(yīng)用程序通訊,同時(shí)作為客戶端與MySQL通訊。它對(duì)應(yīng)用程序屏蔽了DB的細(xì)節(jié),同時(shí)為了降低MySQL負(fù)擔(dān)。

        Atlas 支持主庫(kù)宕機(jī)不影響讀、讀寫(xiě)分離、自動(dòng)分表、安全處理、平滑重啟、連接池等
        用了數(shù)據(jù)庫(kù)連接池后 TPS性能杠杠的 整整提高了80%
        來(lái)看看效果吧

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

        PHP7性能優(yōu)化的幾個(gè)細(xì)節(jié)

        PHP7 Opcache(提升1倍左右)

        Opcache的工作原理 ?
        1. PHP是解釋型語(yǔ)言,Zend引擎會(huì)將PHP代碼解釋為可執(zhí)行機(jī)器碼(Operate Code)之后再交由CPU執(zhí)行。
          一分鐘了解PHP7性能的蛻變(性能提升4倍)
        2. Opcache是如何加速的
          一分鐘了解PHP7性能的蛻變(性能提升4倍)

        3. 看看加了opcache后的成果吧(請(qǐng)求平均響應(yīng)時(shí)間足足減少了一倍 有木有)
          一分鐘了解PHP7性能的蛻變(性能提升4倍)

        編譯器GCC4.8+PGO(提升5%-10%)

        PGO是一項(xiàng)編譯優(yōu)化技術(shù),它可以配合GCC等編譯器使用,提高編譯器的編譯效率。
        雖然PGO可以提高編譯效率,但它并沒(méi)有被廣泛使用。
        原因很簡(jiǎn)單:
        1. 它繁雜的雙編譯模型 和 有限的使用場(chǎng)景,讓PGO顯得很雞肋
        2. 在有了opcache這樣的產(chǎn)品出現(xiàn)后,PGO帶來(lái)的性能提升并不是很明顯。

        開(kāi)啟多個(gè)PHP-FPM主進(jìn)程(提高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%)

        默認(rèn)的內(nèi)存是以4KB分頁(yè)的,而虛擬地址和內(nèi)存地址是需要轉(zhuǎn)換的, 而這個(gè)轉(zhuǎn)換是要查表的,
        CPU為了加速這個(gè)查表過(guò)程都會(huì)內(nèi)建TLB(Translation Lookaside Buffer), 顯而易見(jiàn)如果虛擬頁(yè)越小,表里的條目數(shù)也就越多,
        而TLB大小是有限的,條目數(shù)越多TLB的Cache Miss也就會(huì)越高, 所以如果我們能啟用大內(nèi)存頁(yè)就能間接降低這個(gè)TLB Cache Miss。

        <source lang="xml" collapse="false" first-line="1">     opcache.huge_code_pages=1     sudo sysctl vm.nr_hugepages=128 </source>

        相性能參數(shù)優(yōu)化

        PHP部分性能參數(shù)優(yōu)化

        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>

        未解決的問(wèn)題

        Nginx HTTPS的性能問(wèn)題


        研究PHP7技術(shù)的背景

        1. 公司開(kāi)源節(jié)流的大背景下 我們需要節(jié)省成本
        2. PHP7相對(duì)于現(xiàn)在魅族線上的PHP版本5.X 性能提升至少一倍以上
        3. 社區(qū)日活用戶增長(zhǎng)迅速(15年數(shù)據(jù) 日均PV 年增長(zhǎng)348% 日均UV年增長(zhǎng)112%)
        4. 移動(dòng)互聯(lián)網(wǎng)的大環(huán)境下 要求我們的程序能夠更快的速度響應(yīng)用戶的請(qǐng)求 以滿足更好的用戶體驗(yàn)
        5. 對(duì)新技術(shù)的求知欲望(滿足自己的一點(diǎn)點(diǎn)虛榮心)

        相關(guān)學(xué)習(xí)視頻分享:php視頻教程

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 国产午夜精品无码| 亚洲国产成人久久精品影视 | 国产成人精品午夜福麻豆| 最新在线精品国自av | 精品国产一区二区三区久久蜜臀| 69久久夜色精品国产69| 91亚洲精品自在在线观看| 国产亚洲欧美精品永久| 中文字幕久久精品| 欧美高清在线精品一区| 欧美午夜精品一区二区三区91| 欧美精品一区二区三区免费观看| 色一乱一伦一图一区二区精品 | 日本国产精品久久| 国产精品视频免费| 久久99国产综合精品免费| 亚洲精品国精品久久99热一| 久久国产乱子精品免费女| 亚洲AV无码之日韩精品| 国内精品久久久久影院免费| 久久99久久99精品免视看动漫| 国产AV国片精品| 十八18禁国产精品www| 无码AⅤ精品一区二区三区| 国产精品爱啪在线线免费观看| 久久精品国产亚洲一区二区| 亚洲精品和日本精品| 欧美久久精品一级c片片| 亚洲中文久久精品无码ww16| 91po国产在线精品免费观看| 精品国产自在在线在线观看| 亚洲人午夜射精精品日韩| 香港aa三级久久三级老师2021国产三级精品三级在 | 国产午夜精品一本在线观看| 在线精品动漫一区二区无广告| 国产亚洲欧洲精品| 国产精品电影网| 无码人妻精品一区二区三区久久| 国产精品第六页| 久久777国产线看观看精品| 免费精品无码AV片在线观看|