財神娛樂首存即享優惠回饋唷~詳情請進👉

若何使用火焰圖電子老虎機公式 來闡發服務器負載

539連碰意思

《若何使用火焰圖來闡發服務器負載》要點:
本文先容了若何使用火焰圖來闡發服務器負載,但愿對您有效。若是有疑難,可以接洽咱們。

LucidChart 供應在線編纂流程圖、收集拓撲圖、ER 圖、 UML 圖和腦圖等多種圖表服務,有跨越 7 百萬的用戶,因其簡略直觀的交互體驗以及強盛的多人協作功效,是可以替換 Visio 的最好選擇.

在 Lucid,咱們使用面向服務的架構來設置裝備擺設咱們的體系.個中字體服務(font service)便是個中之一,它擔任依據字體族稱號以及 unicode 編碼規模來供應響應的字體服務,同時也對用戶上傳的字體進行校驗以及反省.在臨盆情況中,該服務的負載一向很高,這一點越過咱們的預期(使用或者守候 CPU 的均勻線程數).分外從客歲最先,咱們注重到字體服務的負載高的驚人,分外是在晚上如許的流量低峰時期.

榮幸的是終極咱們找到了基本緣故原由,并經由過程改進大大提高了服務的團體機能以及穩固性.經由過程上面的內容,您將相識到咱們是若何做到的.

圖1: 字體服務在變革先后服務器均勻負載比擬

經由過程火焰圖來調試以及發明成績

咱們從 Netflix 找到了一個特別很是棒的火焰圖對象,并部署到臨盆情況. 此對象可以將多個不同調試闡發對象的數據組合在一路并天生火焰圖,以可視化的方式鋪示服務器以及 JVM 的資本使用環境.

以下圖所示,每個矩形透露表現一個棧幀,同時矩形的寬度代表了資本(譬如 CPU 時間)的使用環境,Y 軸透露表現挪用棧.經由過程辨認那些寬的矩形塊,就能疾速放大成績規模.在調試以及排查字體服務時,它極大地輔助了咱們.

圖2: 高負載時字體服務中一臺服務器的火焰圖

在高負載狀況下,咱們對字體服務網絡數據并天生了幾個火焰圖.下圖是個中之一,而且分外鋪示了 JVM 相關棧的部門.可以闡發得出,大部門時間都花在了 libz.so 這一步(gzip 使用該庫進行壓縮/解壓縮操作),剩下大部門時間都花在了 XML 本義以及 UTF-8 編碼上.

圖3: JVM 相關棧運動的局部火焰圖

找到慢的緣故原由

起首多煩瑣幾句這個字體服務的一些違景環境.咱們將一切字體相關數據存儲在 Amazon S3 中,詳細來說是將每個字體的每個 unicode 規模分手存為一個 S3 object.當其余服務哀求為了獵取字體族,一組 unicode 規模,或者者是用完美分析運彩ptt戶自界說字體時會向字體服務哀求字體數539二三四星連碰多少錢據,六合彩版路接著字體服務將字體數據包裹在 XML 中返歸.

功效特別很是簡略,并沒有甚么明明的密集型計算.然則關于浮現的高負載成績,火焰圖輔助咱們辨認出了成績地點—— libz,XML 本義以及 UTF-8編碼都使用了大批的 CPU.

然則為何會發生這么多編碼以及壓縮的損耗?記得后面提到晚上時間的負載反而是最高的嗎?咱們的晚上(美國山區時間)恰好是亞洲區域的日間,該區域許多用戶都使用中文、日文或者韓文等亞洲說話.會進行大批的 gzip 解壓縮 → UTF-8解碼 → XML 本義 → UTF-8編碼 → gzip 壓縮.相比于拉丁語系,單個 CJK 的 unicode 規模比拉丁語系的 unicode 規模大2個數目級(1MB:60KB).以是上述的轉換進程都壓到了 CPU 上,分外壓縮息爭壓縮,和 XML 本義這種操作.

若何改進?

字體服務對哀求的相應實質上只是 S3 上原始數據的聚攏.它確鑿必要履行一些緊張的附加使命,如權限反省以及從字體族中檢索稱號.然則,字體服務基本沒需要擋在 S3 后面來代辦署理那些字體數據!以是辦理設施很簡略,間接用包括 S3 object 的鏈接(便是那些字體數據)的列表作為相應返歸,字體服務再也不從 S3 下載并從新編碼字體數據.以是從圖1中可以望出負載幾近下降到可忽略的水平.

總結

經由過程調試闡發臨盆情況,咱們可以或許找到并打消那些無須要的使命以及事情,進而下降服務器負載.

  1. 使用例如火焰圖之類的闡發對象(profiling tool)線上 捕 魚 機來輔助辨認 CPU 高占用的操作.
  2. 壓縮/解壓縮以及種種編碼/解碼的操作都是低廉的.
  3. 若是客戶端可以間接走訪數據,那末相比代辦署理(客戶端往哀求)數據,間接返歸鏈接是最佳的選擇,可以顯著提高團體機能.

參考鏈接

[1] Brendan D. Gregg的小我私家網站 http://www.brendangregg.com
[2] Flame graphs http://www.brendangregg.com/flamegraphs.html
[3] 口語火焰圖 https://huoding.com/2016/08/18/531
[4] Java Flame graphs http://www.brendangregg.com/blog/2014-06-12/java-flame-graphs.html
[5] OpenRestry 對于火焰圖在 Lua 中的使用?https://moonbingbing.gitbooks.io/openresty-best-practices/flame_graph.html
[6] 在 Netflix 中的運用 http://techblog.netflix.com/2015/07/java-in-flames.html
[7] 在 Netflix 中的運用 http://techblog.netflix.com/2016/04/saving-13-million-computational-minutes.html

原文來自微信”大眾號:高可用架構

【免責聲明】本站內容轉載自互聯網,其相關談吐僅代表作者小我私家概念盡非權勢巨子,不代表本站態度。如您發明內容存在版權成績,請提交相關鏈接至郵箱:,咱們將實時予以處置。