PHP 開發中的外圍資源效能分析(二)

2021-09-19 15:31:24 字數 1185 閱讀 8729

暫且不討論「php 是不是最好的程式語言」,本文我們將分別分析一下在 php 程式的後端外圍資源和前端外圍資源,它們對整個 php web 應用體驗的影響,這往往比語言本身大得多。

首先直觀地看兩張圖,一張是來自 oneapm 後台的 web 事務吞吐量圖,也就是每分鐘有多少次 web 事務被觸發、多少次資料庫事務被觸發,如圖所示。

如上可以看到,web 事務,每分鐘在 150-200 次上下浮動,而相應的資料操作,也達到了相應的量。

從以上 xhprof 報表可以看出,這乙個頁面,總共資料庫請求達 89 次,耗費了頁面總時間的 44.5%,這還是乙個正常的頁面和正常的請求,如此之多的請求次數,可以很容易地想到,如果遠端資料庫慢一點,網路卡一點,每個請求所耗費的平均時間達到3-5ms,則整體頁面速度就會從 208ms 延時向 500ms 逼近。

php 語言本身的優化雖然顯著,但是這始終是可控的,而效能的瓶頸,往往出現在不可控的外部資源之上。比如每年一度的 12306 崩潰,也不是語言本身的效能導致的崩潰,而是外部資源的不足和架構問題導致的問題。當然,我們也不能否認,語言與語言之間的巨大差別為資源帶來的節省,比如滴滴出行的後台服務,就正在由 php向 go 切換中,就是 php 本身的資源消耗是 go 的數倍。

本文作為針對 php 外圍資源性的能分析,比較簡單地設計了一些實驗場景,看到了外部資源,包括 io、中介軟體和資料庫資源給程式效能帶來的影響。這些場景的瓶頸又如何消除和優化呢?這其實是乙個很大的課題,本文不再細緻地深入討論,但是也向大家介紹外部資源優化總的原則。下圖是筆者所欣賞的一張圖,非常形象且非常全面精要地概括了資料庫優化的法則,這些法則對於其他外部資源的優化也同樣適用,如圖所示。

這張圖可以看出幾點:

1、對於外部資源的使用,最大的優化就是減少資源的使用。也就業務邏輯的優化和快取,這兩者帶來的效能提公升往往是數量級級別的提公升

2、而所有的優化都是乙個綜合的工程,不會是從某個單點下手而一勞永逸。上圖中,分別考慮到對磁碟、網路、cpu 和記憶體等各方面的優化下手。

3、增加資源,也就是增加硬體配置是優化的最末方案。在可能的情況下,盡可能地使用軟體優化,帶來的效能提公升,相比硬體帶來的提公升,既廉價又高效。

oneapm for php 能夠深入到所有 php 應用內部完成應用效能管理能夠深入到所有 php 應用內部完成應用效能管理和監控,包括**級別效能問題的可見性、效能瓶頸的快速識別與追溯、真實使用者體驗監控、伺服器監控和端到端的應用效能管理。

php中strtotime函式效能分析

最近在做乙個遊戲資料統計後台,最基礎的功能是通過分析註冊登入日誌來展示使用者資料。在公司內部測試,使用者量很少,所以就沒有發現什麼效能問題。但是這兩天一起放到真實的測試環境,使用者量噌噌地就湧進來了,從下午開始,人數的統計開始卡,幾秒鐘才返回資料 註冊人數的查詢速度還行。到了晚上,人數的統計基本上就...

PHP 效能分析與實驗 效能的巨集觀分析

摘要 編者按 此前,閱讀過了很多關於 php 效能分析的文章,不過寫的都是一條一條的規則,而且,這些規則並沒有上下文,也沒有明確的實驗來體現出這些規則的優勢,同時討論的也側重於一些語法要點。本文就改變 php 效能分析的角度,並通過例項來分析出 php 的效能方面需要注意和改進的點。編者按 此前,閱...

全面分析UE4遊戲開發中的效能分析與優化

遊戲效能優化是乙個非常重要的話題,在遊戲開發過程中,優化主要從三個方面入手,cpu端優化,資料傳輸過程和gpu端優化。在遊戲效能遇到瓶頸時,首先要明確是誰拖了後腿,在cpu端還是gpu端,遊戲邏輯由cpu執行,如果是ue4藍圖或者c 執行效率低,則是cpu端需要優化,如果是渲染速度慢,則需要gpu端...