您好,登錄后才能下訂單哦!
許多IT專業人員往往以為云優化只有一種方法。實際上,云端優化有多種方法,包括降低成本、改善性能、可靠性甚至環境可持續性的方法。
不同的優化目標往往會相互促進,因此廣泛考慮優化以充分發揮云戰略很有幫助。本文幫你熟悉各種優化方法,并了解它們如何相輔相成,讓你的云環境更高效。
1、性能優化價值
性能是一個應用系統最重要的指標,除非沒有選擇,否則沒有用戶會忍受一個響應緩慢的應用系統或網站。大量數據表明,每0.1秒的核心體驗響應時間延長會導致1%的營收下降。
應用系統上線運行后,隨著系統數據量的不斷增長、訪問量的不斷上升,系統的響應速度通常會越來越慢,尤其峰值情況下常不能滿足業務需要,甚至出現應用服務中斷,給企業造成巨大的品牌損失和經濟損失,因此性能優化會顯得至關重要。
通過性能優化,可以用更少的硬件資源,支撐更大量的業務發展,從而達到節省硬件成本的目的;同時,可以在有限資源的情況下,提升系統的響應能力,為用戶帶來更好的使用體驗,促進業務增長。
2、性能優化策略
對于應用系統來說,用戶從瀏覽器發出請求到數據庫完成事務操作,中間需要經過很多環節,如果系統響應慢,必須對請求經過的各個環節進行分析,排查可能出現性能瓶頸的地方,定位問題。
排查瓶頸的方法通常是檢查請求處理的各個環節的日志,分析哪個環節響應時間不合理、超出預期;然后檢查監控數據,分析影響性能的主要因素是CPU,還是內存、磁盤、網絡等基礎設施資源的問題,還是架構設計的問題,或是慢SQL語句的問題等。
定位出導致性能問題的具體原因后,再做針對性的性能優化。
1、性能優化體系
性能優化,簡而言之,就是在不影響系統運行正確性的前提下,使之運行的更快,完成特定功能所需的時間更短。
性能優化的維度很多,綜合來看可以從下面五個方面展開性能優化:資源層、架構層、應用層、數據庫層、中間件層。性能優化體系如下圖:
2、資源層優化
云資源層的優化包括云資源水平方向和垂直方向擴展,資源層面優化的依據可來自云監控的量化指標數據。
云監控可實時監控云資源動態指標,是所有云產品的監控管理總入口。可以通過云監控查看最全、最詳細的監控數據。云監控能夠實時對云服務器、云數據庫、負載均衡等云產品進行監控,提取云產品關鍵指標,以監控圖表形式展示。可以通過使用云監控全面地了解資源使用率、應用程序性能和云產品運行狀況。
水平方向擴展是增加云服務器、云數據庫等實例數量,垂直方向擴展是升級云服務器、云數據庫等云資源的規格配置,比如CPU、內存、磁盤、帶寬等參數配置,從解決資源瓶頸的角度來優化系統的訪問性能。
3、架構層優化
系統的性能問題也有可能是系統架構設計不合理造成的。比如在架構設計上,沒有考慮做讀寫分離、數據庫分庫分表、動靜分離、CDN加速、緩存加速、彈性伸縮等。
讀寫分離與數據庫分庫分表解決的是數據庫訪問性能問題,在云上實現讀寫分離非常方便,創建只讀實例后,在應用程序中配置讀寫分離地址,就可以使寫請求自動轉發到主實例,讀請求自動轉發到各個只讀實例。
動靜分離、CDN加速、緩存解決的是靜態文件或熱點數據快速讀取問題,比如圖片、視頻、熱門商品、庫存等等,企業上云時需要盡可能使用一些成熟的云原生解決方案,從架構設計層面去優化訪問性能的問題。
彈性伸縮解決的是應用服務器自動擴展的問題,通過提前配置伸縮規則與策略,在業務需求增長時自動增加云服務器實例以保證計算能力,避免訪問延時和資源超負荷運行。
4、應用層優化
應用層優化的關鍵是首先快速診斷出應用的問題瓶頸。
互聯網業務的高速發展帶來了日益增長的流量壓力,業務邏輯也日趨復雜,傳統的單機應用已經無法滿足需求。越來越多的網站或系統逐漸采用了分布式部署架構。
同時,隨著 Spring Cloud/Dubbo 等基礎開發框架不斷成熟,越來越多的企業開始對應用架構按照業務模塊進行垂直拆分,形成了更適合團隊協同開發、快速迭代的微服務架構。
分布式的微服務架構在開發效率上具備先進性,但給傳統的監控、運維、診斷技術帶來了巨大挑戰。主要挑戰包括:
定位問題難:
微服務分布式架構一個業務請求通常要經過多個服務/節點后返回結果,一旦請求出現錯誤,往往要在多臺機器上反復翻看日志才能初步定位問題,對簡單問題的排查也常常涉及多個團隊。
發現瓶頸難:
當用戶反饋系統出現卡頓現象,很難快速發現瓶頸在哪里:是用戶終端到服務端的網絡問題,是服務端負載過高導致響應變慢,還是數據庫壓力過大?即使定位到了導致卡頓的環節,也很難快速定位到代碼層面的根本原因。
架構梳理難:
在業務邏輯變得逐漸復雜以后,很難從代碼層面去梳理某個應用依賴了哪些下游服務(數據庫、HTTP API、緩存),以及被哪些外部調用所依賴。業務邏輯的梳理、架構的治理和容量的規劃也變得更加困難。
通常,需要使用性能壓測工具(比如PTS)、應用實時監控服務(比如ARMS)等工具,基于前端、應用、業務自定義等維度進行鏈路追蹤,實現完整的調用鏈路還原、調用請求量統計、鏈路拓撲和應用依賴分析等。鏈路追蹤能夠幫助快速分析和診斷分布式應用架構下的性能瓶頸,提高微服務時代下的開發診斷效率。
定位瓶頸問題后,展開針對性的優化工作,比如優化慢SQL語句、優化調用報錯程序代碼、優化調用異常API等。通常應用優化后可結合性能壓測工具對系統性能、容量水位進行再次壓力測試,通過壓測結果進一步分析系統瓶頸,對應用不斷迭代優化。
5、數據庫優化
影響數據庫系統性能主要有如下幾個因素:系統的硬件配置、數據庫文件的物理分布、數據庫實例的參數、數據庫的物理設計、應用的SQL語句。
數據庫性能優化,首先需要進行下述數據內容采集:
系統軟硬件環境:包括服務器的操作系統設置、硬件配置、網絡配置、軟件環境、啟動選項、進程信息、性能信息、磁盤使用情況等。
硬件運行情況:包括CPU、內存、磁盤、網絡的運行數據。
數據庫實例的配置: 實例配置參數。
數據庫配置:包括恢復模式、自動收縮、空間增長等信息。
數據庫磁盤使用:包括數據庫大小、表大小、記錄數、索引大小、占用空間等。
索引及碎片情況:包括表上的索引、索引的碎片情況、索引的維護計劃等。
SQL語句執行情況:包括SQL 語句執行時間、啟動時間、所在數據庫、語句內容、死鎖、阻塞等情況。
應用程序運行狀況:包括系統高峰時段、晚間的數據庫維護任務、用戶報告比較慢的業務、系統運行特點。
數據庫性能主要優化項見下圖:
6、中間件優化
在信息系統中,不少性能問題是由不起眼的應用中間件造成的。應用中間件之所以誕生,是為了幫助應用程序的編碼人員處理與業務邏輯沒有太大關系而又必須處理的經常性事物,比如處理應用程序和數據庫之間的關系,設置開啟多少個session來處理客戶請求,session的超時時間等等。
然而在享受便利的同時,應用中間件也會成為系統性能問題的締造者,開發人員和測試人員往往忽視了中間件本身對性能的影響,這種影響包括交易吞吐量的制約、響應時間的影響、交易成功率的影響等等。
中間件優化的目標是把耗費在中間件的時間縮短(提升用戶體驗),提高整個應用服務器的吞吐量。中間件優化,調什么參數,一定要了解其含義、原理、調整后的收益和風險是什么,最好是N個參數能在腦子里纏繞為一個整體。
高優先:調整JDBC連接池大小、線程池、JVM虛擬機的heap size。
中優先:會話數、垃圾回收GC策略。
另外還有高速緩存、數據源語句緩存大小。
不當的配置也會導致中間件處于假死狀態。比如某類資源(session或jdbc)被應用完全占滿了,并且短期不釋放,這樣新的請求就沒法執行,造成了假死的情況。這類情況,要做好超時放棄的參數配置。
性能優化是一個復雜的系統工程,首先需要定位性能瓶頸,然后從云資源、系統架構、應用程序、數據庫、中間件等方面進行綜合分析和優化;性能優化的最終目的是為了改善用戶的體驗,離開這個目的而追求技術上的所謂高性能是舍本逐末,沒有任何意義。
隨著系統數據量、訪問用戶量的不斷增加,以及系統功能的不斷迭代,系統需要持續進行性能優化,性能優化是一場持久戰,只有這樣才能讓用戶擁有更好的訪問體驗,從而支撐業務增長。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。