精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Instagram基于Python語言的Web Service效率提升之道

開發(fā) 后端 開發(fā)工具
Instagram 目前部署了世界上最大規(guī)模的 Django Web 框架(該框架完全使用 Python 編寫)。我們最初選用 Python 是因為它久負盛名的簡潔性與實用性,這非常符合我們的哲學思想——“先做簡單的事情”。

Instagram 目前部署了世界上最大規(guī)模的 Django Web 框架(該框架完全使用 Python 編寫)。我們最初選用 Python 是因為它久負盛名的簡潔性與實用性,這非常符合我們的哲學思想——“先做簡單的事情”。但簡潔性也會帶來效率方面的折衷。Instagram 的規(guī)模在過去兩年中已經(jīng)翻番,并且最近已突破 5 億用戶,所以急需最大程度地提升 web 服務效率以便我們的平臺能夠繼續(xù)順利地擴大。在過去的一年,我們已經(jīng)將效率計劃efficiency program提上日程,并在過去的六個月,我們已經(jīng)能夠做到無需向我們的 Django 層Django tiers添加新的容量來維持我們的用戶增長。我們將在本文分享一些由我們構建的工具以及如何使用它們來優(yōu)化我們的日常部署流程。

為何需要提升效率?

Instagram,正如所有的軟件,受限于像服務器和數(shù)據(jù)中心能源這樣的物理限制。鑒于這些限制,在我們的效率計劃中有兩個我們希望實現(xiàn)的主要目標:

  • Instagram 應當能夠利用持續(xù)代碼發(fā)布正常地提供通信服務,防止因為自然災害、區(qū)域性網(wǎng)絡問題等造成某一個數(shù)據(jù)中心區(qū)丟失。
  • Instagram 應當能夠自由地滾動發(fā)布新產(chǎn)品和新功能,不必因容量而受阻。

想要實現(xiàn)這些目標,我們意識到我們需要持續(xù)不斷地監(jiān)控我們的系統(tǒng)并與回歸regressions進行戰(zhàn)斗。

定義效率

Web services 的瓶頸通常在于每臺服務器上可用的 CPU 時間。在這種環(huán)境下,效率就意味著利用相同的 CPU 資源完成更多的任務,也就是說,每秒處理更多的用戶請求requests per second,RPS。當我們尋找優(yōu)化方法時,我們面臨的第一個最大的挑戰(zhàn)就是嘗試量化我們當前的效率。到目前為止,我們一直在使用“每次請求的平均 CPU 時間”來評估效率,但使用這種指標也有其固有限制:

  1. 設備多樣性。使用 CPU 時間來測量 CPU 資源并非理想方案,因為它同時受到 CPU 型號與 CPU 負載的影響。
  2. 請求影響數(shù)據(jù)。測量每次請求的 CPU 資源并非理想方案,因為在使用每次請求測量per-request measurement方案時,添加或移除輕量級或重量級的請求也會影響到效率指標。

相對于 CPU 時間來說,CPU 指令是一種更好的指標,因為對于相同的請求,它會報告相同的數(shù)字,不管 CPU 型號和 CPU 負載情況如何。我們選擇使用了一種叫做”每個活動用戶per active user“的指標,而不是將我們所有的數(shù)據(jù)關聯(lián)到每個用戶請求上。我們最終采用“每個活動用戶在高峰期間的 CPU 指令CPU instruction per active user during peak minute”來測量效率。我們建立好新的度量標準后,下一步就是通過對 Django 的分析來更多的了解一下我們的回歸。

Django web services 分析

通過分析我們的 Django web services,我們希望回答兩個主要問題:

  1. CPU 回歸會發(fā)生嗎?
  2. 是什么導致了 CPU 回歸發(fā)生以及我們該怎樣修復它?

想要回答第一個問題,我們需要追蹤“每個活動用戶的 CPU 指令CPU-instruction-per-active-user”指標。如果該指標增加,我們就知道已經(jīng)發(fā)生了一次 CPU 回歸。

我們?yōu)榇藰嫿ǖ墓ぞ呓凶?Dynostats。Dynostats 利用 Django 中間件以一定的速率采樣用戶請求,記錄關鍵的效率以及性能指標,例如 CPU 總指令數(shù)、端到端請求時延、花費在訪問內(nèi)存緩存(memcache)和數(shù)據(jù)庫服務的時間等。另一方面,每個請求都有很多可用于聚合的元數(shù)據(jù)metadata,例如端點名稱、HTTP 請求返回碼、服務該請求的服務器名稱以及請求中最新提交的哈希值hash。對于單個請求記錄來說,有兩個方面非常強大,因為我們可以在不同的維度上進行切割,那將幫助我們減少任何導致 CPU 回歸的原因。例如,我們可以根據(jù)它們的端點名稱聚合所有請求,正如下面的時間序列圖所示,從圖中可以清晰地看出在特定端點上是否發(fā)生了回歸。

 

CPU 指令對測量效率很重要——當然,它們也很難獲得。Python 并沒有支持直接訪問 CPU 硬件計數(shù)器(CPU 硬件計數(shù)器是指可編程 CPU 寄存器,用于測量性能指標,例如 CPU 指令)的公共庫。另一方面,Linux 內(nèi)核提供了 perf_event_open 系統(tǒng)調(diào)用。通過 Python ctypes 橋接技術能夠讓我們調(diào)用標準 C 庫的系統(tǒng)調(diào)用函數(shù)syscall,它也為我們提供了兼容 C 的數(shù)據(jù)類型,從而可以編程硬件計數(shù)器并從它們讀取數(shù)據(jù)。

使用 Dynostats,我們已經(jīng)可以找出 CPU 回歸,并探究 CPU 回歸發(fā)生的原因,例如哪個端點受到的影響最多,誰提交了真正會導致 CPU 回歸的變更等。然而,當開發(fā)者收到他們的變更已經(jīng)導致一次 CPU 回歸發(fā)生的通知時,他們通常難以找出問題所在。如果問題很明顯,那么回歸可能就不會一開始就被提交!

這就是為何我們需要一個 Python 分析器,(一旦 Dynostats 發(fā)現(xiàn)了它)從而使開發(fā)者能夠使用它找出回歸發(fā)生的根本原因。不同于白手起家,我們決定對一個現(xiàn)成的 Python 分析器 cProfile 做適當?shù)男薷摹Profile 模塊通常會提供一個統(tǒng)計集合來描述程序不同的部分執(zhí)行時間和執(zhí)行頻率。我們將 cProfile 的定時器timer替換成了一個從硬件計數(shù)器讀取的 CPU 指令計數(shù)器,以此取代對時間的測量。我們在采樣請求后產(chǎn)生數(shù)據(jù)并把數(shù)據(jù)發(fā)送到數(shù)據(jù)流水線。我們也會發(fā)送一些我們在 Dynostats 所擁有的類似元數(shù)據(jù),例如服務器名稱、集群、區(qū)域、端點名稱等。

在數(shù)據(jù)流水線的另一邊,我們創(chuàng)建了一個消費數(shù)據(jù)的尾隨者tailer。尾隨者的主要功能是解析 cProfile 的統(tǒng)計數(shù)據(jù)并創(chuàng)建能夠表示 Python 函數(shù)級別的 CPU 指令的實體。如此,我們能夠通過 Python 函數(shù)來聚合 CPU 指令,從而更加方便地找出是什么函數(shù)導致了 CPU 回歸。

監(jiān)控與警報機制

在 Instagram,我們每天部署 30-50 次后端服務。這些部署中的任何一個都能發(fā)生 CPU 回歸的問題。因為每次發(fā)生通常都包含至少一個差異diff,所以找出任何回歸是很容易的。我們的效率監(jiān)控機制包括在每次發(fā)布前后都會在 Dynostats 中掃描 CPU 指令,并且當變更超出某個閾值時發(fā)出警告。對于長期會發(fā)生 CPU 回歸的情況,我們也有一個探測器為負載最繁重的端點提供日常和每周的變更掃描。

部署新的變更并非觸發(fā)一次 CPU 回歸的唯一情況。在許多情況下,新的功能和新的代碼路徑都由全局環(huán)境變量global environment variables,GEV控制。 在一個計劃好的時間表上,給一部分用戶發(fā)布新功能是很常見事情。我們在 Dynostats 和 cProfile 統(tǒng)計數(shù)據(jù)中為每個請求添加了這個信息作為額外的元數(shù)據(jù)字段。按這些字段將請求分組可以找出由全局環(huán)境變量(GEV)改變導致的可能的 CPU 回歸問題。這讓我們能夠在它們對性能造成影響前就捕獲到 CPU 回歸。

接下來是什么?

Dynostats 和我們定制的 cProfile,以及我們建立的支持它們的監(jiān)控和警報機制能夠有效地找出大多數(shù)導致 CPU 回歸的元兇。這些進展已經(jīng)幫助我們恢復了超過 50% 的不必要的 CPU 回歸,否則我們就根本不會知道。

我們?nèi)匀贿€有一些可以提升的方面,并很容易將它們地加入到 Instagram 的日常部署流程中:

  1. CPU 指令指標應該要比其它指標如 CPU 時間更加穩(wěn)定,但我們?nèi)匀挥^察了讓我們頭疼的差異。保持“信噪比signal:noise ratio”合理地低是非常重要的,這樣開發(fā)者們就可以集中于真實的回歸上。這可以通過引入置信區(qū)間confidence intervals的概念來提升,并在信噪比過高時發(fā)出警報。針對不同的端點,變化的閾值也可以設置為不同值。
  2. 通過更改 GEV 來探測 CPU 回歸的一個限制就是我們要在 Dynostats 中手動啟用這些比較的日志輸出。當 GEV 的數(shù)量逐漸增加,開發(fā)了越來越多的功能,這就不便于擴展了。相反,我們能夠利用一個自動化框架來調(diào)度這些比較的日志輸出,并對所有的 GEV 進行遍歷,然后當檢查到回歸時就發(fā)出警告。
  3. cProfile 需要一些增強以便更好地處理封裝函數(shù)以及它們的子函數(shù)。

鑒于我們在為 Instagram 的 web service 構建效率框架中所投入的工作,所以我們對于將來使用 Python 繼續(xù)擴展我們的服務很有信心。我們也開始向 Python 語言本身投入更多,并且開始探索從 Python 2 轉移 Python 3 之道。我們將會繼續(xù)探索并做更多的實驗以繼續(xù)提升基礎設施與開發(fā)者效率,我們期待著很快能夠分享更多的經(jīng)驗。

本文作者 Min Ni 是 Instagram 的軟件工程師。

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2020-07-26 11:55:11

Jupyter Not擴展工具開發(fā)

2012-06-12 09:46:20

虛擬化

2020-07-25 19:38:54

JavaScriptJavaScript庫Web

2011-08-29 15:00:54

APC數(shù)據(jù)中心

2024-04-15 09:00:00

亞馬遜云科技IT韌性

2022-07-18 08:08:16

Go?語言技巧

2025-11-04 01:43:00

循環(huán)語言模型架構

2021-01-13 22:50:21

開發(fā)Web工具

2014-10-08 15:17:14

金道IT服務

2010-05-19 14:38:11

Web開發(fā)框架Web層

2016-04-13 11:18:08

jQuery代碼片段Web開發(fā)

2019-11-15 13:38:11

安全運營SOAR

2015-07-28 10:42:34

DevOpsIT效率

2021-08-06 15:06:09

騰訊開源Apache

2019-10-18 15:35:16

Python編程語言高級用法

2017-06-15 16:44:09

Node.js框架Web 應用

2024-11-05 09:20:47

2024-08-19 00:40:00

SQL數(shù)據(jù)庫

2021-04-29 08:13:49

Mac 工具軟件

2017-08-08 10:45:01

Python編程語言
點贊
收藏

51CTO技術棧公眾號

最近免费观看高清韩国日本大全| 亚洲一区二区三区xxx视频| 你懂的在线观看网站| 五月天av在线| 成人免费一区二区三区视频| 成人情视频高清免费观看电影| 好看的av在线| 亚洲v在线看| 日韩精品在线观| 天天综合天天添夜夜添狠狠添| caoprom在线| 亚洲国产精品成人综合| 99久久精品无码一区二区毛片| 亚洲 欧美 成人| 中文在线日韩| 曰本色欧美视频在线| 成年女人免费视频| yiren22亚洲综合| 天天av天天翘天天综合网| 一区二区三区国产福利| 婷婷国产在线| 国产成人精品网址| 国产精品视频xxxx| 亚洲日本视频在线观看| 欧美三区美女| 久久激情视频免费观看| 国产精品扒开腿做爽爽| 成人av地址| 91精品免费在线| 免费在线观看的毛片| 2019中文字幕在线电影免费 | 亚洲AV无码国产精品| 一级欧美视频| 欧美亚洲动漫精品| 无码人妻丰满熟妇区毛片18| 不卡一本毛片| 亚洲乱码日产精品bd| 亚洲一区三区视频在线观看| 国产美女性感在线观看懂色av | 操她视频在线观看| 亚洲毛片免费看| 亚洲国产福利在线| 国产精品99久久久精品无码| 精品精品视频| 欧美二区乱c少妇| 国产喷水theporn| jvid一区二区三区| 欧美日韩国产成人在线91| 一级特黄性色生活片| 欧美xxxxxx| 日韩欧美在线免费| 国产超级av在线| 成人爽a毛片免费啪啪| 狠狠做深爱婷婷久久综合一区| 国产爆乳无码一区二区麻豆| 色婷婷av在线| 亚洲香肠在线观看| 男女私大尺度视频| 国产在线美女| 欧美色xxxx| 免费日韩中文字幕| 成人免费一区| 91精品一区二区三区在线观看| 中国黄色片一级| 日韩精品一区二区三区免费视频| 欧美一区二区二区| 佐佐木明希电影| 国产精品天天看天天狠| 亚洲级视频在线观看免费1级| www.男人天堂| 亚洲人成网亚洲欧洲无码| 亚洲日本中文字幕| 国产成人在线网址| 欧美三级第一页| 91chinesevideo永久地址| 男人日女人网站| 日韩电影在线一区| 亚洲自拍另类欧美丝袜| 韩国av免费在线| 久久久高清一区二区三区| 先锋影音日韩| 青草在线视频| 欧美性猛交xxxx乱大交蜜桃| 亚洲一区在线不卡| 日韩精品一级| 亚洲欧美在线一区| 成人黄色片免费| 最爽无遮挡行房视频在线| 亚洲午夜在线电影| 久草精品在线播放| 亚洲男女网站| 日韩激情av在线免费观看| 欧美黄色高清视频| 欧美视频日韩| 国产精品久久久久99| av在线亚洲天堂| 91啪亚洲精品| 欧美日韩一级在线| 亚洲欧美小说色综合小说一区| 欧美精品高清视频| 亚洲黄色在线网站| 仙踪林久久久久久久999| 久久久伊人欧美| 中文字幕乱码人妻二区三区| 成人少妇影院yyyy| 自拍另类欧美| 亚洲午夜天堂| 欧美大片一区二区三区| 国产高清一区二区三区四区| 亚洲无吗在线| 91在线中文字幕| 久草在现在线| 亚洲成av人片一区二区梦乃| 一区二区三区欧美精品| 无码日韩精品一区二区免费| 欧美国产精品日韩| 91肉色超薄丝袜脚交一区二区| 91社区在线播放| www.xxx麻豆| 成人短视频软件网站大全app| 亚洲男人天堂古典| 国产精彩视频在线| 国产乱色国产精品免费视频| 水蜜桃亚洲精品| 在线观看网站免费入口在线观看国内| 日韩一区二区麻豆国产| 99成人在线观看| 天堂va蜜桃一区二区三区漫画版 | 亚洲素人在线| 国内外成人免费激情在线视频网站| 国产又大又长又粗| 国产精品欧美久久久久一区二区| 农村妇女精品一二区| 国产香蕉精品| 欧美激情一二区| 99久久精品无免国产免费| 国产精品久久久久永久免费观看 | 国产精品亚洲第一| 伊人久久大香线蕉成人综合网| 成人av色网站| 中文字幕日韩欧美在线| 精品人妻一区二区三区潮喷在线| proumb性欧美在线观看| 久久久久久人妻一区二区三区| 日本精品在线播放| 欧美日韩ab片| 亚洲国产精品久久久久爰性色| 伊人开心综合网| 手机精品视频在线| 欧美一区二区三区另类| 91超碰在线免费观看| 在线āv视频| 欧美xxxx在线观看| 久久久久久久久99| 成人午夜视频在线观看| 超碰成人免费在线| 清纯唯美亚洲经典中文字幕| 91爱视频在线| 电影在线高清| 欧美精品一卡两卡| 国产精品老熟女一区二区| 国产精品18久久久久| 国产欧美日韩小视频| 狼人精品一区二区三区在线| 69久久夜色精品国产7777| 天堂av在线7| 在线观看日韩电影| 爱爱视频免费在线观看| 成人一区二区三区视频在线观看| 久久久一本二本三本| 国产一区二区三区四区二区| 国产欧美精品日韩精品| h片在线免费| 亚洲精品v天堂中文字幕| 久久久久99精品成人片三人毛片| 国产片一区二区三区| 亚洲久久中文字幕| 亚洲视频综合| 日韩欧美一区二区三区四区| 麻豆精品一区| 欧洲s码亚洲m码精品一区| av网站大全在线观看| 欧美一区二区三区视频| 亚洲精品视频在线观看免费视频| 久久精品一区二区三区四区| 日本不卡一区二区在线观看| 精品动漫av| 日韩三级在线播放| 视频免费一区二区| 欧美专区在线观看| 黄av在线播放| 亚洲欧美国产另类| 99久久久久成人国产免费| 欧美日韩日本国产| 天堂网中文在线观看| 成人91在线观看| 亚洲欧美日韩一级| 在线播放精品| 中文字幕一区二区三区四区五区六区 | 国产精品swag| 亚洲欧美在线成人| 欧美激情精品久久久久久蜜臀| 黄色在线视频观看网站| 日韩一区二区三区视频在线| 欧美激情一区二区三区免费观看| 午夜视频一区二区| а天堂中文在线资源| 91在线小视频| 香蕉视频在线观看黄| 免费观看日韩电影| 久久美女福利视频| 欧美日韩1080p| 亚洲国产日韩欧美| 香蕉人人精品| 国产精品久久波多野结衣| 四虎成人精品一区二区免费网站| 91干在线观看| 国模雨婷捆绑高清在线| 欧美成人精品一区二区| av在线电影播放| 亚洲人精选亚洲人成在线| 欧洲成人一区二区三区| 日韩欧美中文字幕制服| 自拍偷拍福利视频| 色综合久久中文字幕| 国产午夜福利片| 亚洲精品欧美综合四区| 日韩欧美国产成人精品免费| 中文字幕免费不卡| 国产又黄又粗视频| 久久久久久麻豆| 精品人妻一区二区三区视频| 91尤物视频在线观看| 麻豆短视频在线观看| 国产精品亚洲人在线观看| 亚欧精品在线视频| 国产在线观看一区二区| 午夜两性免费视频| 美腿丝袜亚洲色图| 天堂网在线免费观看| 久久精品国产99| 日本不卡一区二区在线观看| 美女www一区二区| 午夜两性免费视频| 激情深爱一区二区| 亚洲在线观看网站| 国产在线精品免费| 国产又粗又猛又爽又黄| 国产精品1区二区.| 中文字幕人妻熟女人妻a片| 国产一区二区女| 成年人看片网站| 不卡av电影在线播放| 娇妻高潮浓精白浆xxⅹ| 北岛玲一区二区三区四区| 亚洲国产综合视频| 久久久久久亚洲综合影院红桃| 免费成人深夜天涯网站| 亚洲国产精品精华液ab| 成人自拍小视频| 亚洲无人区一区| 久久久久久久久久久影院| 色先锋aa成人| 中文字幕一区二区免费| 91精品国产色综合久久久蜜香臀| 精品人妻一区二区三区含羞草| 亚洲爱爱爱爱爱| 黄色av免费在线观看| 在线亚洲男人天堂| 黄色片免费在线观看| 久久久久久亚洲精品中文字幕| 玖玖在线播放| 国产欧美 在线欧美| 日韩在线观看中文字幕| 欧美成人免费在线| 日韩欧美电影| 日韩激情视频一区二区| 久久一二三区| 九九九久久久久久久| 99久久国产免费看| 女教师淫辱の教室蜜臀av软件| 一二三区精品视频| 日韩三级一区二区| 日韩一区二区视频在线观看| 亚洲人成色777777老人头| 色悠悠久久88| 国产福利电影在线播放| 国产精品看片资源| 51亚洲精品| 神马影院一区二区三区| 很黄很黄激情成人| 国产超碰在线播放| 成人手机在线视频| 日韩av毛片在线观看| 懂色av中文一区二区三区天美 | 2022成人影院| 亚洲精品免费网站| 免费精品国产| 国产毛片久久久久久国产毛片| 日韩成人av影视| 亚洲av人人澡人人爽人人夜夜| 中文字幕精品一区二区精品绿巨人 | 国产精品h在线观看| 日韩免费一级| 亚洲乱码国产乱码精品天美传媒| 99精品久久| 中文字幕55页| 中文字幕在线不卡| 欧美a视频在线观看| 欧美刺激脚交jootjob| 午夜老司机在线观看| 欧美一区深夜视频| 999久久精品| 大桥未久一区二区| 免费视频一区二区| 久久久久久九九九九九| 亚洲午夜一二三区视频| 国产精品人妻一区二区三区| 亚洲新中文字幕| 理论不卡电影大全神| 高清视频一区| 99久久九九| 日日噜噜夜夜狠狠| 国产亚洲va综合人人澡精品| 免费在线不卡视频| 欧美va亚洲va国产综合| 成视频免费观看在线看| 国产在线98福利播放视频| 少妇精品久久久一区二区三区| 男女视频网站在线观看| 成熟亚洲日本毛茸茸凸凹| 成熟的女同志hd| 欧美女孩性生活视频| av电影在线观看网址| 国产精品久久久999| 国产一区二区三区探花| 日韩精品视频久久| 91亚洲男人天堂| 一区二区三区福利视频| 亚洲男女性事视频| 亚洲精华液一区二区三区| 久久久精品有限公司| 国产精品久久久久毛片大屁完整版 | 日韩 欧美 视频| 成人精品在线视频观看| 国产精品suv一区二区69| 精品国产伦理网| 涩涩av在线| 欧美日韩精品一区| 日韩电影免费在线看| 亚洲午夜精品久久久久久高潮| 欧美日韩午夜精品| v片在线观看| 岛国视频一区免费观看| 亚洲精品影院在线观看| b站大片免费直播| 欧美性高清videossexo| 免费大片在线观看www| 亚洲mm色国产网站| 亚洲国产91| 国产中年熟女高潮大集合| 欧美制服丝袜第一页| 国产在线激情| 成人免费看片网址| 午夜在线精品| 小泽玛利亚一区| 日韩精品一区二区三区四区| 老牛影视精品| 亚洲精品在线视频观看| 国产精品中文欧美| 国产又色又爽又黄的| 亚洲人精选亚洲人成在线| www欧美在线观看| 国产一区二区三区小说| 久久亚洲精精品中文字幕早川悠里| 做爰视频毛片视频| 欧美日韩国产二区| 一区二区小说| 一二三av在线| 欧美日韩另类在线| 1769视频在线播放免费观看| 成人在线观看av| 日韩电影在线免费观看| 久视频在线观看| 一夜七次郎国产精品亚洲| 午夜视频一区二区在线观看| 亚洲中文字幕无码不卡电影| 亚洲日本在线a| 三级在线播放| 成人欧美一区二区三区在线 | 逼特逼视频在线观看| 色哟哟国产精品| 丝袜中文在线| 午夜一区二区三区| 99久久精品情趣| 国产老女人乱淫免费| 日本视频久久久| 欧美精品观看| 免费看一级黄色| 亚洲人成人99网站|