成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

前端抱怨API響應慢,怎么辦?

開發 前端
分析API的耗時是將API的總耗時拆分為不同的部分,清晰的知道是什么原因導致耗時過高。我們借助不同的工具,在不同的網絡環境下進行耗時分析,從而提出相應的優化建議。

  1. 請求發送過慢導致耗時增加;
  2. DNS解析過慢導致耗時增加;
  3. 惡劣的網絡環境導致耗時增加;
  4. 一直在排隊導致響應過慢;
  5. 服務端響應過慢導致耗時增加;
  6. 響應體積過大導致耗時增加;
  7. 等等……

一般從感官上覺得API接口響應慢,大部分人會直接歸結于服務端處理慢,其實是不合理的。通過在內網環境下的API耗時分析和外網環境下的API耗時分析的對比,一般會認識到原因所在。

通過瀏覽器的開發者工具分析

開發者工具

重點關注指標Waiting (TTFB),TTFB代表第一個字節到達的時間。此時間包括一次往返延遲和服務器準備響應所花費的時間。可以近似的認為是服務端耗時。

如果網絡情況不好或者響應數據過大,則Content Download耗時會長一些,這時候應該考慮壓縮響應.

Timing

開發者工具中Network中顯示了當前頁中調用的網絡資源,點擊資源可以查看資源的詳情,其中Timing是資源調用時的耗時情況。

  • Queueing. 【排隊中】瀏覽器在以下情況下將請求排隊:
  •  有更高優先級的請求.
  •  已為該來源打開了六個TCP連接,這是限制。僅適用于HTTP/1.0和HTTP/1.1.
  •  瀏覽器正在磁盤緩存中短暫分配空間.
  • Stalled. 【停滯】該請求可能由于排隊中描述的任何原因而停止.
  • Proxy negotiation. 【代理協商】瀏覽器正在與代理服務器協商請求.
  • Request sent. 【發送請求】該請求正在發送.
  • Waiting (TTFB). 【等待中】瀏覽器正在等待響應的第一個字節。TTFB代表第一個字節到達的時間。此時間包括一次往返延遲和服務器準備響應所花費的時間.
  • Content Download. 【響應內容下載】瀏覽器正在接收響應.

其他可能出現的

 DNS Lookup. 【DNS】瀏覽器正在解析請求的IP地址.

 Initial connection. 【初始化連接】瀏覽器正在建立連接,包括TCP握手/重試和協商SSL.

通過httpstat工具分析

httpstat git地址:

??https://github.com/reorx/httpstat ??

如果是在Linux服務器上進行調用,則可以使用httpstat。

安裝

直接下載腳本

wget https://raw.githubusercontent.com/reorx/httpstat/master/httpstat.py

通過pip

pip install httpstat

Mac

brew install httpstat

使用

httpstat可以使用cURL的參數。

httpstat www.baidu.com httpstat 127.0.0.1/post -X POST --data-urlencode "id=1" -v

通過httpstat工具分析

Server Processing可以近似的認為是服務端耗時。

服務端到底慢在哪里?

打印耗時日志?

StopWatch stopWatch = new StopWatch();
stopWatch.start();
// ...
stopWatch.stop();
LOGGER.info("[某某某業務] - [Time:{}ms]", stopWatch.getLastTaskTimeMillis());

腦子瞬間一熱就會使用的方法,簡單直接,但是如果定位不準確,你可能要加很多這種日志。

還是用火焰圖吧

 讓軟件執行情況可視化,是性能分析、調試的利器

火焰圖的生成工具很多,比如Async Profiler、linux-perl,網上也有很多關于這方面的介紹,IDEA也集成Async Profiler,這個很方便。

IntelliJ IDEA中的火焰圖

打開火焰圖

如果沒有開啟,則點擊+號,進行添加。

打開火焰圖

選擇程序進行火焰圖的分析

可以選擇一個已經運行中的java程序進行分析,輸出火焰圖。

選擇程序進行火焰圖的分析

直接使用Async Profiler更簡單

??async-profiler git地址[1]??

安裝

從git上直接下載。

解壓下可用。

簡單使用

執行命令。

./profiler.sh -d 10 -f /tmp/flamegraph.svg <pid>
./profiler.sh -e itimer -d 10 -f /tmp/flamegraph.svg <pid>

可以通過-e來指定cpu、alloc、lock、wall、itimer、ClassName.methodName。

  • cpu:在這種模式下,profiler收集堆棧跟蹤樣本,包括Java方法、本機調用、JVM代碼和內核函數。
  • alloc:可以將探查器配置為收集分配最大堆內存的調用站點,而不是檢測消耗CPU的代碼。即檢查當前分配內存最多的地方。
  • lock:滿足的鎖定嘗試,包括Java對象監視器和可重入鎖。
  • wall:告訴async-profiler在給定的時間內對所有線程平均采樣,而不管線程狀態如何: 運行、休眠或阻塞。例如,在分析應用程序啟動時間時,這可能會有所幫助。。
  • ClassName.methodName:ClassName.methodName選項使用給定的Java方法,以便使用堆棧跟蹤記錄此方法的所有調用。
  • cpu:在這種模式下,profiler收集堆棧跟蹤樣本,包括Java方法、本機調用、JVM代碼和內核函數。

bash

在瀏覽器中打開file:///tmp/flamegraph.svg,并找到調用的API,我這里調用的是ProjectManageController中的findProject方法。

火焰圖

根據長度可以看出該方法中調用方法的耗時情況,這樣我們就知道耗時主要集中在什么地方。

PS:如果方法名被編譯掉了,那么可以在java啟動時加入-XX:+PreserveFramePointer

做更多的工作

用戶體驗的優化是一個長期而艱巨的過程,為了衡量我們網站的性能是否良好,我們有更多的工作需要去做。通常,會在底層自定義一些以用戶為中心的指標,比如Server-Timing[2]。

責任編輯:龐桂玉 來源: Java知音
相關推薦

2022-07-28 07:49:29

數據庫分頁查詢

2024-10-28 10:50:33

2020-09-21 15:03:52

前端開發技術

2009-04-10 09:43:00

無線LAN通信

2011-08-23 08:56:06

Ubuntu11.04Wifi

2018-04-16 10:29:15

Windows7DNS服務器

2024-09-25 14:25:47

API接口

2009-11-03 08:56:02

linux死機操作系統

2024-04-22 08:17:23

MySQL誤刪數據

2022-12-19 11:31:57

緩存失效數據庫

2017-02-21 13:11:43

SDN網絡體系SDN架構

2022-05-19 08:01:49

PostgreSQL數據庫

2019-10-12 09:50:46

Redis內存數據庫

2018-01-28 20:39:39

戴爾

2022-07-05 11:48:47

MySQL死鎖表鎖

2015-10-22 09:09:59

BAT投資VC

2017-12-21 20:01:38

潤乾報表

2020-03-18 19:00:29

電腦內存不足系統

2019-08-29 07:35:29

網站404空白nginx

2011-07-28 13:45:06

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久综合影院 | 国产精品久久久久国产a级 欧美日本韩国一区二区 | 亚洲综合色婷婷 | 91欧美精品成人综合在线观看 | 欧美视频1区 | 亚洲国产一区二区三区, | 欧美一级二级在线观看 | 成人欧美一区二区三区黑人孕妇 | 黄色一级大片视频 | 欧洲精品码一区二区三区免费看 | 欧美在线成人影院 | 午夜精品一区二区三区在线观看 | 在线亚洲电影 | 一区二区日韩精品 | 亚洲福利在线观看 | 成人欧美一区二区 | 免费黄色的视频 | 97伦理影院| 国产精品伦一区二区三级视频 | 日韩www视频 | 国产亚洲www | 国产精品欧美一区二区 | 国产一级一片免费播放 | 九九久久久 | 91美女在线观看 | 精品一区在线 | 日本不卡免费新一二三区 | 91在线观看网址 | 久久久久国产精品午夜一区 | 欧美一级电影免费观看 | 天天摸天天看 | 日韩精品成人在线 | 国产区在线 | 成人一区在线观看 | 亚洲三区视频 | 国产一区二区三区四区三区四 | 亚洲在线一区 | 欧美一级淫片免费视频黄 | 亚洲天堂久久 | 福利社午夜影院 | 日韩精品一区二区三区免费观看 |