關於效能調優

2022-08-23 21:39:10 字數 2539 閱讀 2523

*****====

效能是指程式的處理效率無法達到預期值.

導致效能問題的原因總的分為兩種, 外部原因和內部原因. 內部原因是指程式**本身有問題, 無法高效地利用資源來完成計算. 外部原因是指程式**以外的因素, 比如硬體配置和程式的負載.

解決效能問題的關鍵在於把瓶頸找出來, 然後消滅瓶頸.

預備**********

為了防止進入永無止境的效能優化圈(客戶提出瓶頸, 你分析瓶頸, 解決瓶頸, 客戶再次提出瓶頸, 你再次進行調優, 如此反覆)之中, 可以詢問客戶下面的問題:

為什麼接近某個時間(比如說1分鐘)才能開啟就是不正常的? 根據你的設計, 所有請求應該在多少時間內返回才算合理? 平均返回時間是多少才合理?

沒有文獻說明所有情況下, 某事件(比如說request_begin)與某事件(比如說page_load)之間應該在某時間限制(比如說20秒)內完成. 例如, 在gc發生的時候所有執行都會被掛起, 所以某些函式之間停滯20秒是完全正常的事情, 我並不認為這個問題跟接近1分鐘才能開啟頁面有直接聯絡. 如果懷疑是整體的效能問題, 我建議先不考慮request_begin和page_load之間的細節.

問題發生時候的外部環境是什麼? 程式的負載是不是在理想的範圍內? 有沒有第三方的程式干擾?

有沒有具體資料來說明到底有多少請求超過了1分鐘? 這些請求具體的返回時間是多少?

你的期望值是多少? 這個期望值是如何計算出來的?

你設計的是乙個實時系統麼? 如果是, 可能windows和asp.net並不是乙個好的平台. 如果不是, 某些個別請求無法再期望時間內返回是無法避免的. 你能接受這樣的事實麼?

行動*****====

總的來說, 效能調優的步驟是:

獲取當前的效能指標, 比如平均反應時間.

獲取測試時外部因素的量化資料, 比如每秒鐘請求數.

根據程式的設計, 判斷上面的外部環境是否符合預期. 如果不符合預期, 那麼在改善外部環境後重新測試.

如果外部環境符合預期, 理想的效能指標是多少? 結果是否在理想範圍之內?

如果不在理想範圍之內, 那麼問題是由於內部因素導致的. 接下來應該努力找到瓶頸來解決問題.

觀察效能相關的指標是否滿足預期值, 比如cpu利用率和程式響應時間.

分析效能日誌以獲得巨集觀認識.

制定步驟, 在問題發生的關鍵點抓取dump檔案. 比如當cpu利用率達到100%的時候, 或者系統沒有響應的時候.

分析dump來獲取問題的線索.

有條件的時候, 可以結合profiler工具完成細節統計和比較, 簡化分析過程.

摘自*****====

效能是指程式的處理效率無法達到預期值.

導致效能問題的原因總的分為兩種, 外部原因和內部原因. 內部原因是指程式**本身有問題, 無法高效地利用資源來完成計算. 外部原因是指程式**以外的因素, 比如硬體配置和程式的負載.

解決效能問題的關鍵在於把瓶頸找出來, 然後消滅瓶頸.

預備**********

為了防止進入永無止境的效能優化圈(客戶提出瓶頸, 你分析瓶頸, 解決瓶頸, 客戶再次提出瓶頸, 你再次進行調優, 如此反覆)之中, 可以詢問客戶下面的問題:

為什麼接近某個時間(比如說1分鐘)才能開啟就是不正常的? 根據你的設計, 所有請求應該在多少時間內返回才算合理? 平均返回時間是多少才合理?

沒有文獻說明所有情況下, 某事件(比如說request_begin)與某事件(比如說page_load)之間應該在某時間限制(比如說20秒)內完成. 例如, 在gc發生的時候所有執行都會被掛起, 所以某些函式之間停滯20秒是完全正常的事情, 我並不認為這個問題跟接近1分鐘才能開啟頁面有直接聯絡. 如果懷疑是整體的效能問題, 我建議先不考慮request_begin和page_load之間的細節.

問題發生時候的外部環境是什麼? 程式的負載是不是在理想的範圍內? 有沒有第三方的程式干擾?

有沒有具體資料來說明到底有多少請求超過了1分鐘? 這些請求具體的返回時間是多少?

你的期望值是多少? 這個期望值是如何計算出來的?

你設計的是乙個實時系統麼? 如果是, 可能windows和asp.net並不是乙個好的平台. 如果不是, 某些個別請求無法再期望時間內返回是無法避免的. 你能接受這樣的事實麼?

行動*****====

總的來說, 效能調優的步驟是:

獲取當前的效能指標, 比如平均反應時間.

獲取測試時外部因素的量化資料, 比如每秒鐘請求數.

根據程式的設計, 判斷上面的外部環境是否符合預期. 如果不符合預期, 那麼在改善外部環境後重新測試.

如果外部環境符合預期, 理想的效能指標是多少? 結果是否在理想範圍之內?

如果不在理想範圍之內, 那麼問題是由於內部因素導致的. 接下來應該努力找到瓶頸來解決問題.

觀察效能相關的指標是否滿足預期值, 比如cpu利用率和程式響應時間.

分析效能日誌以獲得巨集觀認識.

制定步驟, 在問題發生的關鍵點抓取dump檔案. 比如當cpu利用率達到100%的時候, 或者系統沒有響應的時候.

分析dump來獲取問題的線索.

有條件的時候, 可以結合profiler工具完成細節統計和比較, 簡化分析過程.

摘自

關於效能調優的總結和思考

效能調優切入點 大量硬碟i o,比如讀寫資料庫或檔案,超過10ms的操作都是耗時操作。可對複雜的sql語句進行優化。網路i o,在發起請求 等待答覆的地方可能會引起長時間的中斷,導致效能下降。執行緒資源的申請和銷毀,所以很多高階程式語言底層預設使用了執行緒池。記憶體資源的申請和 比如短時間內大量ne...

關於網路效能調優

這兩天閱讀 wireshark網路分析就這麼簡單 一書,作者在 patrick故事 一節中提到乙個問題分析的細節,於是決定記下 有一台檔案伺服器的讀效能只有10mb s,遠低於客戶的期望。我嘗試過很多調優方式,效能卻只降不公升。徒勞三天之後,我對自己徹底失去了信心。這時候我又想起了patrick,於...

關於MySQL效能調優

關於mysql處理百萬級以上的資料時如何提高其查詢速度的方法,有時候經常會忘記,所以在這裡做一些筆記,方便以後遇到問題的時候檢視。應盡量避免在 where 子句中使用 或 操作符,否則將引擎放棄使用索引而進行全表掃瞄 對查詢進行優化,應盡量避免全表掃瞄,首先應考慮在 where 及 order by...