亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

利用Node.js了解與測量HTTP所花費的時間詳解

2019-11-19 15:20:10
字體:
來源:轉載
供稿:網友

前言

了解和測量HTTP時間有助于我們發現客戶端到服務器或服務器到服務器之間的通信性能瓶頸。 本文介紹了HTTP請求中的時間開銷,并展示了如何在Node.js中進行測量。

在我們開始了解HTTP時間開銷之前,讓我們來看一些基本的概念:

  • IP(互聯網協議):IP是網絡層協議,涉及網絡尋址和路由。 IP負責根據一個或多個IP網絡上的數據包頭將數據包從源主機傳送到目標主機。 它還定義了封裝要傳遞的數據的數據包結構。
  • DNS(域名服務器):DNS是一種分層分散式命名系統,用于將諸如risingstack.com的人類可讀主機名解析為機器可讀的IP地址。
  • TCP(傳輸控制協議):TCP標準定義了如何在應用程序之間建立和維護網絡對話以交換數據。 TCP在通過IP網絡通信的主機上運行的應用程序之間提供可靠,有序和錯誤檢查的八位字節流。 HTTP客戶端通過建立TCP連接來發起請求。
  • SSL / TLS(傳輸層安全性):TLS是一種通過計算機網絡提供通信安全性的加密協議。 SSL(安全套接字層)是TLS的不推薦使用的前身。 TLS和SSL都使用證書建立安全連接。 SSL證書不依賴于加密協議(如TLS),證書包含密鑰對:公鑰和私鑰。 這些密鑰一起工作,建立一個加密的連接。

現在我們來看一下通常HTTP請求的時間表:


  • DNS查找:執行DNS查找所花費的時間。 DNS查找將域名解析為IP地址。 每個新的域需要一個完整的往返行程來進行DNS查找。 當目的地已經是IP地址時,沒有DNS查找。
  • TCP連接:在源主機和目標主機之間建立TCP連接所需的時間。 必須在多步握手過程中正確建立連接。 TCP連接由操作系統管理,如果基礎TCP連接無法建立,則OS范圍的TCP連接超時將會進入我們應用程序中的超時配置。
  • TLS握手:完成TLS握手的時間。 在握手過程中,端點交換認證和密鑰以建立或恢復安全會話。 沒有HTTPS請求的不需要TLS握手。
  • 第一個字節的時間(TTFB):等待初始響應的時間。 此時間除了等待服務器處理請求和傳遞響應所花費的時間之外,還可以捕獲往返服務器的延遲。
  • 內容傳輸:接收響應數據所花費的時間。 響應數據的大小和可用的網絡帶寬決定其持續時間。

如何通過HTTP時間開銷幫助發現性能瓶頸?

例如,如果您的DNS查詢所花費的時間比預期的要長,那么問題可能是您的DNS提供商或DNS緩存設置。

緩慢的內容傳輸可能是由效率低下的反應機構引起的,例如發回太多的數據(未使用的JSON屬性等)或緩慢的連接。

測量Node.js中的HTTP時間開銷

為了測量Node.js中的HTTP時間開銷,我們需要訂閱特定的請求,響應和套接字事件。 這是一個簡短的代碼片段,展示了如何在Node.js中執行此操作,此示例僅關注時序:

const timings = { // use process.hrtime() as it's not a subject of clock drift startAt: process.hrtime(), dnsLookupAt: undefined, tcpConnectionAt: undefined, tlsHandshakeAt: undefined, firstByteAt: undefined, endAt: undefined } const req = http.request({ ... }, (res) => { res.once('readable', () => {  timings.firstByteAt = process.hrtime() }) res.on('data', (chunk) => { responseBody += chunk }) res.on('end', () => {  timings.endAt = process.hrtime() }) }) req.on('socket', (socket) => { socket.on('lookup', () => {  timings.dnsLookupAt = process.hrtime() }) socket.on('connect', () => {  timings.tcpConnectionAt = process.hrtime() }) socket.on('secureConnect', () => {  timings.tlsHandshakeAt = process.hrtime() }) }) 

DNS查找只會發生在有域名的時候:

/ There is no DNS lookup with IP addressconst dnsLookup = dnsLookupAt !== undefined ?  getDuration(startAt, dnsLookupAt) : undefined

TCP連接在主機解析后立即發生:

const tcpConnection = getDuration((dnsLookupAt || startAt), tcpConnectionAt)

TLS握手(SSL)只能使用https協議:

// There is no TLS handshake without https const tlsHandshake = tlsHandshakeAt !== undefined ?   getDuration(tcpConnectionAt, tlsHandshakeAt) : undefined

我們等待服務器開始發送第一個字節:

const firstByte = getDuration((tlsHandshakeAt || tcpConnectionAt), firstByteAt)

總持續時間從開始和結束日期計算:

const total = getDuration(startAt, endAt)

看到整個例子,看看我們的https://github.com/RisingStac...倉庫。

測量時間的工具

現在我們知道如何使用Node測量HTTP時間,我們來討論可用于了解HTTP請求的現有工具。

request module

著名的request module具有測量HTTP定時的內置方法。 您可以使用time屬性啟用它。

const request = require('request')request({  uri: 'https://risingstack.com', method: 'GET', time: true}, (err, resp) => { console.log(err || resp.timings)})

分布式跟蹤

可以使用分布式跟蹤工具收集HTTP定時,并在時間軸上可視化它們。 這樣,您可以全面了解后臺發生的情況,以及構建分布式系統的實際成本是多少。

RisingStack的opentracing-auto庫具有內置的標志,可通過OpenTracing收集所有HTTP時間。

在Jaeger中使用opentracing-auto的HTTP請求時序。

總結

使用Node.js測量HTTP時間可以幫助您發現性能瓶頸。 Node生態系統提供了很好的工具來從應用程序中提取這些指標。

好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

翻譯自Understanding & Measuring HTTP Timings with Node.js

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品亚洲欧美导航| 国产一区二区三区欧美| 欧美在线一级视频| 亚洲欧洲一区二区三区在线观看| 91免费精品视频| 国产精品国产自产拍高清av水多| 精品女同一区二区三区在线播放| 国产99久久精品一区二区 夜夜躁日日躁| 日韩av免费看网站| 日韩视频―中文字幕| 精品呦交小u女在线| 57pao成人国产永久免费| 日韩亚洲欧美中文在线| 欧美一级大片视频| 国产成人福利夜色影视| 欧美精品性视频| 欧美激情乱人伦| 亚洲欧美国内爽妇网| 久久激情视频久久| 日韩欧美国产视频| 欧美激情第99页| 国产精品日日做人人爱| 亚洲成avwww人| 国产成人极品视频| 国产日产亚洲精品| 中文字幕日韩欧美在线| 国产免费观看久久黄| 68精品国产免费久久久久久婷婷| 57pao国产成人免费| 亚洲女人天堂色在线7777| 国产成人综合精品在线| 国产丝袜一区二区三区免费视频| 中文字幕成人精品久久不卡| 日韩精品在线免费观看| 国产不卡一区二区在线播放| 夜夜嗨av色一区二区不卡| 国产福利精品在线| 亚洲欧美国内爽妇网| 精品爽片免费看久久| 亚洲国产精品va在线观看黑人| 日韩网站免费观看高清| 日韩大片免费观看视频播放| 日韩在线观看视频免费| 91色琪琪电影亚洲精品久久| 日韩成人中文字幕在线观看| 日韩一二三在线视频播| 日韩电影免费在线观看中文字幕| 久久青草精品视频免费观看| 亚洲一区二区自拍| 日韩在线一区二区三区免费视频| 亚洲精品久久在线| 日韩黄色在线免费观看| 国产精品老牛影院在线观看| 国产精品久久精品| 97人人模人人爽人人喊中文字| 国产精品久久久av久久久| 精品国产电影一区| 欧美成人四级hd版| 欧美日韩美女在线观看| 国产一区二区三区精品久久久| 成人av在线网址| 亚洲综合在线小说| 日本免费一区二区三区视频观看| 在线精品国产欧美| 久久久久中文字幕| 孩xxxx性bbbb欧美| 欧美裸体xxxx| 性色av一区二区咪爱| 91大神在线播放精品| 亚洲va欧美va国产综合剧情| 91产国在线观看动作片喷水| 国语自产精品视频在线看| 欧美午夜视频在线观看| 午夜精品视频网站| 日本一区二区三区在线播放| 日韩高清电影好看的电视剧电影| www国产亚洲精品久久网站| 国产aⅴ夜夜欢一区二区三区| 亚洲自拍另类欧美丝袜| 欧美视频免费在线观看| 91精品视频播放| 欧美日韩免费观看中文| 欧美视频在线免费| 日韩久久午夜影院| 成人久久18免费网站图片| 国产精品免费久久久久久| 26uuu另类亚洲欧美日本老年| 欧美福利视频网站| 国产丝袜一区二区三区| 欧美电影《睫毛膏》| 日韩中文字幕精品| 国产91|九色| 欧美孕妇孕交黑巨大网站| 日韩av大片免费看| 69**夜色精品国产69乱| 国产精品稀缺呦系列在线| 亚洲欧美在线一区| 精品中文字幕在线| 精品亚洲一区二区三区四区五区| 亚洲一区二区自拍| 欧美成年人视频网站欧美| 日韩美女免费视频| 欧美xxxx综合视频| 日韩av影院在线观看| 国产一区二区三区在线播放免费观看| 欧美日韩免费区域视频在线观看| 亚洲国产中文字幕在线观看| 国产成人精品免费视频| 日韩精品免费在线| 欧美老肥婆性猛交视频| www.欧美三级电影.com| 日韩欧美主播在线| 成人激情视频在线播放| 一区二区三区亚洲| 欧美日韩高清在线观看| 国产主播在线一区| 欧美性理论片在线观看片免费| 97视频在线播放| 色综合久综合久久综合久鬼88| 青青草国产精品一区二区| 亚洲另类图片色| 亚洲精品国产精品久久清纯直播| 欧美性xxxx极品高清hd直播| 国产z一区二区三区| 欧美成人小视频| 亚洲自拍欧美另类| 中文字幕不卡在线视频极品| 在线不卡国产精品| 精品一区二区亚洲| 久久精品2019中文字幕| 国产欧美一区二区三区久久人妖| 久久久极品av| 欧美成人中文字幕| 18性欧美xxxⅹ性满足| 日韩电影中文字幕av| 亚洲色图18p| 色偷偷av亚洲男人的天堂| 日韩免费观看在线观看| 福利视频第一区| 久久精品美女视频网站| 亚洲影院色在线观看免费| 欧美日韩国产91| 国产精品久久久久久亚洲影视| 亚洲国产精品一区二区久| 欧美激情精品久久久| 色噜噜久久综合伊人一本| 国产精品成久久久久三级| 国产欧美一区二区三区视频| 精品动漫一区二区| 国产精品爽黄69| 91在线精品视频| 热99精品里视频精品| 国产在线观看一区二区三区| 中文字幕欧美日韩va免费视频| 中文字幕日本精品| 一区二区三区在线播放欧美| 日韩美女视频免费看| 亚洲人成在线一二| 日韩免费在线免费观看| 日韩av综合网| 久久伊人色综合| 亚洲欧美一区二区三区情侣bbw| 午夜精品一区二区三区在线视| 欧美寡妇偷汉性猛交|