主要通過服務(wù)器性能、數(shù)據(jù)庫負(fù)載、Top事務(wù)三個(gè)維度進(jìn)行分析。其中,服務(wù)器性能分析可以對主機(jī)的CPU、內(nèi)存、SWAP、I/O等多個(gè)維度指標(biāo)進(jìn)行分析判斷,確認(rèn)問題后再通過相關(guān)日志(例如系統(tǒng)日志、OSW等)進(jìn)一步對問題排查;
數(shù)據(jù)庫負(fù)載分析可以對數(shù)據(jù)庫當(dāng)前的等待事件進(jìn)行歸類整理,通過性能圖表及Top會(huì)話可以很直觀的看出當(dāng)前數(shù)據(jù)庫存在的主要問題,并對引起數(shù)據(jù)庫負(fù)載升高的原因進(jìn)行排查。
Top事務(wù)可以對應(yīng)用程序/數(shù)據(jù)庫中響應(yīng)時(shí)間較長的事務(wù)進(jìn)行分析,并與應(yīng)用開發(fā)同事共同對引起事務(wù)響應(yīng)時(shí)間較長的原因進(jìn)行排查。
根據(jù)精細(xì)化運(yùn)維平臺提供的SQL信息,如執(zhí)行時(shí)間、物理讀、相關(guān)對象統(tǒng)計(jì)等信息判斷SQL對數(shù)據(jù)庫產(chǎn)生的影響,對SQL性能及能否優(yōu)化做出初步的判斷。如果可以優(yōu)化,那么再根據(jù)執(zhí)行計(jì)劃、索引等信息對SQL語句采取相應(yīng)的優(yōu)化措施。
下面主要通過3個(gè)實(shí)際工作中的案例,給大家介紹下借助精細(xì)化運(yùn)維平臺的優(yōu)化流程及解決方案,3個(gè)案例分別是:
案例1、某系統(tǒng)單據(jù)查詢優(yōu)化
案例2、某平臺ETLSQL優(yōu)化
案例3、某系統(tǒng)檔案查詢優(yōu)化
單據(jù)查詢是該系統(tǒng)的核心業(yè)務(wù)之一,該模塊自上線以后隨著數(shù)據(jù)量的不斷增大開始出現(xiàn)了性能問題,主要表現(xiàn)在:
1、模塊的響應(yīng)時(shí)間較長;
2、在業(yè)務(wù)高峰時(shí)段并發(fā)數(shù)較高時(shí),系統(tǒng)CPU使用率飆升,進(jìn)而影響了其他模塊的正常運(yùn)行。
收到用戶反饋后,通過精細(xì)化平臺對應(yīng)用程序在業(yè)務(wù)高峰期時(shí)占用系統(tǒng)資源較多的事務(wù)進(jìn)行抓取,并對事務(wù)中的SQL語句進(jìn)行定位。
selectt1.* from(select * fromau leftjoin ac onac.ct_number = au.agent_code whereau.repair_no like %XXXX%) t1, (selectform_id, max(task_id), max(audit_node) fromt whereform_type = 01 groupby form_id) t2 wheret1.id = t2.form_id orderby t1.repair_no |
該模塊對應(yīng)的SQL為一條簡單查詢語句,視圖t1和視圖t2做關(guān)聯(lián),從執(zhí)行計(jì)劃中可以看到,兩個(gè)視圖做了VIEWMERGE,ac表和au表關(guān)聯(lián)后,再去HASHt表。這里存在的問題是,每次au表模糊查詢返回的結(jié)果集數(shù)量非常少,但優(yōu)化器仍然將ID=5的Rows估算為1178(num_rows* 5%),進(jìn)而導(dǎo)致優(yōu)化器將NL的COST算多,導(dǎo)致T表(該表較大)進(jìn)行了全表掃描,而不是采用(acjoin au) NLT的連接方式,造成了性能瓶頸。
由于優(yōu)化器對雙邊模糊查詢Rows估算的特殊性,導(dǎo)致在統(tǒng)計(jì)信息準(zhǔn)確的前提下對執(zhí)行計(jì)劃的選擇出現(xiàn)了偏差。在應(yīng)用側(cè)暫時(shí)無法修改代碼的前提下,針對該問題我們主要做了如下優(yōu)化措施:對模糊查詢相關(guān)表的統(tǒng)計(jì)信息刪除,使用動(dòng)態(tài)采樣。
優(yōu)化后,通過精細(xì)化運(yùn)維平臺可以看到,系統(tǒng)CPU資源得到了較大的緩解,查詢模塊的響應(yīng)時(shí)間也由長時(shí)間卡頓優(yōu)化至1秒內(nèi)返回結(jié)果,較大程度的提升了用戶的體驗(yàn)。
該平臺每月月初會(huì)有定時(shí)調(diào)度對上個(gè)月的少數(shù)異常數(shù)據(jù)進(jìn)行刪除,每次執(zhí)行時(shí),系統(tǒng)性能問題較為明顯,主要表現(xiàn)在:
1、系統(tǒng)I/O資源占用明顯;
2、異常數(shù)據(jù)的清理模塊通常要執(zhí)行60小時(shí)左右,導(dǎo)致每月月初的前兩天該系統(tǒng)幾乎處于卡頓狀態(tài)。
下圖為該模塊執(zhí)行時(shí),系統(tǒng)的I/O情況:
在語句執(zhí)行期間,我們通過精細(xì)化運(yùn)維平臺TopSQL模塊快速定位至相關(guān)SQL:
SQL詳情頁顯示,相關(guān)會(huì)話的活動(dòng)百分比占用了42%,SQL語句的平均邏輯讀、物理讀及耗費(fèi)的DBTime等均占用較大。
deletefrom ci o whereexists (select t.machine_no, t.plat_flag fromci t wheret.machine_no = o.machine_no andt.plat_flag = o.plat_flag andt.month_time = 2019-02 groupby t.machine_no, t.plat_flag havingcount(*) > 1) andexists (select 1 froms_info s wheres.area_no = substr(o.machine_no, 1, 7) ando.cname <> s.cname); |
該模塊對應(yīng)的是一條delete語句,相關(guān)SQL語句及執(zhí)行計(jì)劃顯示出兩點(diǎn)問題:
1、分區(qū)表沒有做分區(qū)裁剪,體現(xiàn)在ID=5的PARTITIONRANGEALL操作,該表按月分區(qū),每月數(shù)據(jù)量為15G左右,目前有80個(gè)分區(qū),全分區(qū)掃描嚴(yán)重影響了系統(tǒng)資源;
2、對大表的IX_CI1索引掃描次數(shù)較多(exits中g(shù)roupby having寫法造成的filter操作,且連接列machine_no基數(shù)較大)。
了解用戶需求并定位至性能瓶頸后,我們對相關(guān)語句進(jìn)行了改寫,由于每月的異常數(shù)據(jù)量較少,因此我們采用了rowid的方式:
1、利用分析函數(shù)將異常數(shù)據(jù)提前計(jì)算,保存異常數(shù)據(jù)的rowid。
2、使用rowid驅(qū)動(dòng)主表進(jìn)行快速刪除。
delete/*+ use_nl(c) */ fromci c whererowid in (select /*+ full(t) leading(s) use_hash(t) */ t.rowid from(select t.cname, t.machine_no, count(*)over(partition by t.machine_no, t.plat_flag) cnt fromci t wheret.month_time = 2019-02) t, s_infos wheret.cnt> 1 andsubstr(t.machine_no, 1, 7) = s.area_no andt.cname <> s.cname); |
通過等價(jià)改寫后,整個(gè)模塊的性能開銷僅為對單個(gè)分區(qū)的掃描操作,性能得到大幅的提升,通過精細(xì)化運(yùn)維平臺顯示,優(yōu)化后,系統(tǒng)的性能得到了明顯的改善:
1、服務(wù)器的I/O資源得到了較大程度的緩解,iowait降至5%以內(nèi);
2、數(shù)據(jù)庫的整體負(fù)載降低約60%,物理I/O降低約80%;
3、解決了模塊執(zhí)行時(shí)間過長的問題,經(jīng)過優(yōu)化該模塊的執(zhí)行時(shí)間降至20分鐘左右完成,優(yōu)化效果較為明顯。
該模塊上線后,點(diǎn)擊查詢(由于總體返回的數(shù)據(jù)量不多,因此沒有設(shè)置過濾條件)按鈕長時(shí)間無響應(yīng),系統(tǒng)CPU資源飆升,占用明顯。通過精細(xì)化運(yùn)維平臺顯示,在模塊執(zhí)行期間,系統(tǒng)CPU使用率在90%左右。
通過TopSQL模塊定位至相關(guān)語句,通過SQL詳情頁顯示,該SQL語句占用了近75%的系統(tǒng)資源,總邏輯讀達(dá)到3億,執(zhí)行時(shí)間已超過50小時(shí),消耗了大量的DBTime,嚴(yán)重影響了數(shù)據(jù)庫性能。
selectws.id, wa.ct_number, ms.business fromws leftjoin wa onwa.ct_number = ws.ct_number leftjoin ms onms.station_code = ws.st_number wherews.status = 有效 and(select count(1) fromwb leftjoin wr onwr.wp_no = wb.wp_no wherewr.is_urgent = 1 andwr.service_no = ws.st_number) < ws.pg_number; |
該模塊對應(yīng)的是一條查詢語句,結(jié)構(gòu)相對比較簡單,關(guān)聯(lián)后通過標(biāo)量計(jì)算對結(jié)果集進(jìn)行過濾,通過相關(guān)執(zhí)行計(jì)劃可以看到,標(biāo)量部分的WB與WR表關(guān)聯(lián)了多次,造成了性能瓶頸。
確定了SQL語句存在的性能問題后,我們對相關(guān)SQL語句進(jìn)行了改寫,通常的優(yōu)化方案是對標(biāo)量部分進(jìn)行改寫,然后通過控制執(zhí)行計(jì)劃改變標(biāo)量的連接方式,提升性能:
selectws.id, wa.ct_number, ms.business fromws leftjoin wa onwa.ct_number = ws.ct_number leftjoin ms onms.station_code = ws.st_number leftjoin (selectwr.service_no, count(1) cnt fromwb leftjoin wr onwr.wp_no = wb.wp_no wherewr.is_urgent = 1 groupby wr.service_no)cc on(cc.service_no = ws.st_number) wherews.status = 有效 andnvl(cc.cnt,0)< ws.pg_number; |
通過等價(jià)改寫后,整體的系統(tǒng)性能得到大幅提升,從精細(xì)化運(yùn)維平臺對比優(yōu)化前后的系統(tǒng)負(fù)載:
1、系統(tǒng)CPU由90%的使用率降至10%以內(nèi),大幅降低了系統(tǒng)的整體負(fù)載;
2、系統(tǒng)邏輯讀由平均4K/s降至1.8k/s,有效的降低了I/O帶來的性能開銷;
3、相關(guān)模塊性能提升較為明顯,由長時(shí)間無響應(yīng)縮降至1秒左右完成;
本篇文章主要給大家介紹了借助精細(xì)化運(yùn)維平臺輔助優(yōu)化的總體流程,當(dāng)遇到性能方面的問題時(shí),我們可以借助現(xiàn)場已有平臺工具的各個(gè)分析模塊來快速的發(fā)現(xiàn)問題、分析定位并針對性的優(yōu)化,提高工作效率的同時(shí)也較大程度的縮短了利用傳統(tǒng)方式處理問題的時(shí)間,做到精細(xì)化運(yùn)維。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/130203.html
摘要:開啟驗(yàn)證上傳一張新圖片,使用手安卓版本訪問已支持域名的圖片,如果請求帶了,檢查返回圖片格式是否為如果舊的圖片未按預(yù)期返回,返回了或原圖可能是結(jié)點(diǎn)緩存,正常天后過期回源則會(huì)返回圖片。 對于圖片較多的網(wǎng)站,本文結(jié)合具體案例給出了如何基于CDN的sharpP自適應(yīng)圖片無痛接入方案,據(jù)統(tǒng)計(jì)效果可在原圖基礎(chǔ)上節(jié)省60%-75%的流量。作者:陳忱 出處:騰云閣文章 目前移動(dòng)端運(yùn)營素材大部分依賴圖...
摘要:基于云遷移的三個(gè)階段細(xì)分為八個(gè)主要步驟,評估階段主要包括項(xiàng)目啟動(dòng)現(xiàn)狀梳理以及應(yīng)用系統(tǒng)關(guān)聯(lián)關(guān)系分析三個(gè)步驟,設(shè)計(jì)階段包括云架構(gòu)優(yōu)化設(shè)計(jì)和云遷移方案設(shè)計(jì),實(shí)施階段包括目標(biāo)架構(gòu)遷移演練及實(shí)施和試運(yùn)行三個(gè)步驟。 在云計(jì)算市場規(guī)模不斷擴(kuò)大的大背景下,云遷移的需求越來越大且面臨挑戰(zhàn)。云遷移不是一個(gè)遷移軟件工具,而是一種服務(wù)。前IBM資深架構(gòu)師姜亞杰從云遷移的三個(gè)階段、四個(gè)維度到八個(gè)步驟的方法,簡述...
摘要:主要介紹了美團(tuán)智能支付業(yè)務(wù)在穩(wěn)定性方向遇到的挑戰(zhàn),并重點(diǎn)介紹在穩(wěn)定性測試中的一些方法與實(shí)踐。其中,智能支付作為新擴(kuò)展的業(yè)務(wù)場景,去年也成為了美團(tuán)增速最快的業(yè)務(wù)之一。 本文根據(jù)美團(tuán)高級測試開發(fā)工程師勛偉在美團(tuán)第43期技術(shù)沙龍美團(tuán)金融千萬級交易系統(tǒng)質(zhì)量保障之路的演講整理而成。主要介紹了美團(tuán)智能支付業(yè)務(wù)在穩(wěn)定性方向遇到的挑戰(zhàn),并重點(diǎn)介紹QA在穩(wěn)定性測試中的一些方法與實(shí)踐。 背景 美團(tuán)支付承載...
摘要:無代碼時(shí)代來臨業(yè)務(wù)問題,而不只是機(jī)器學(xué)習(xí)我們希望企業(yè)可以用的時(shí)間來解決業(yè)務(wù)問題,而不是機(jī)器學(xué)習(xí)問題,談到整個(gè)人工智能和數(shù)據(jù)行業(yè)的未來發(fā)展時(shí),黃一文這樣說道。 showImg(https://segmentfault.com/img/remote/1460000018912276); 瑪麗·雪萊在創(chuàng)作世界上第一部科幻小說《科學(xué)怪人》(又譯:弗蘭肯斯坦)的時(shí)候,恐怕沒法預(yù)見到在一個(gè)多世紀(jì)后...
閱讀 1353·2023-01-11 13:20
閱讀 1699·2023-01-11 13:20
閱讀 1211·2023-01-11 13:20
閱讀 1902·2023-01-11 13:20
閱讀 4161·2023-01-11 13:20
閱讀 2748·2023-01-11 13:20
閱讀 1397·2023-01-11 13:20
閱讀 3664·2023-01-11 13:20