溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

分析MYSQL服務(wù)磁盤(pán)IO高問(wèn)題及優(yōu)化對(duì)策

發(fā)布時(shí)間:2020-04-25 14:06:47 來(lái)源:億速云 閱讀:325 作者:三月 欄目:MySQL數(shù)據(jù)庫(kù)

下文內(nèi)容主要給大家?guī)?lái)分析MYSQL服務(wù)磁盤(pán)IO高問(wèn)題及優(yōu)化對(duì)策,這里所講到的知識(shí),與書(shū)籍略有不同,都是億速云專業(yè)技術(shù)人員在與用戶接觸過(guò)程中,總結(jié)出來(lái)的,具有一定的經(jīng)驗(yàn)分享價(jià)值,希望給廣大讀者帶來(lái)幫助。

MYSQL數(shù)據(jù)庫(kù)服務(wù)磁盤(pán)IO高問(wèn)題分析與優(yōu)化

     壓力測(cè)試過(guò)程中,如果因?yàn)橘Y源使用瓶頸等問(wèn)題引發(fā)最直接性能問(wèn)題是業(yè)務(wù)交易響應(yīng)時(shí)間偏大,TPS逐漸降低等。而問(wèn)題定位分析通常情況下,最優(yōu)先排查的是監(jiān)控云服務(wù)器資源利用率,例如先用TOP 或者nmon等查看CPU、內(nèi)存使用情況,然后在排查IO問(wèn)題,例如網(wǎng)絡(luò)IO、磁盤(pán)IO的問(wèn)題。 如果是磁盤(pán)IO問(wèn)題,一般問(wèn)題是SQL語(yǔ)法問(wèn)題、MYSQL參數(shù)配置問(wèn)題、服務(wù)器自身硬件瓶頸導(dǎo)致IOPS吞吐率問(wèn)題。

今天主要是講解MYSQL 參數(shù)配置不合理導(dǎo)致在高并發(fā)下磁盤(pán)IO問(wèn)題,而MYSQL整體監(jiān)控優(yōu)化方案后面會(huì)整理《如何輕量化MYSQL服務(wù)性能監(jiān)控》文章出來(lái)。

1、 打開(kāi)日志跟蹤引起的磁盤(pán)IO問(wèn)題

      例如:MySQL的日志包括錯(cuò)誤日志(ErrorLog),更新日志(UpdateLog),二進(jìn)制日志(Binlog),查詢?nèi)罩荆?/span>QueryLog),慢查詢?nèi)罩荆?/span>SlowQueryLog)等,正常情況下,在生產(chǎn)系統(tǒng)或者壓力測(cè)試環(huán)境中很少有系統(tǒng)會(huì)時(shí)時(shí)打開(kāi)查詢?nèi)罩?。因?yàn)椴樵內(nèi)罩敬蜷_(kāi)之后會(huì)將MySQL中執(zhí)行的每一條Query都記錄到日志中,會(huì)該系統(tǒng)帶來(lái)比較大的IO負(fù)擔(dān),而帶來(lái)的實(shí)際效益卻并不是非常大。

2、 SQL寫(xiě)法問(wèn)題引起磁盤(pán)IO

     例如:曾經(jīng)在做某一個(gè)項(xiàng)目時(shí),在看到數(shù)據(jù)庫(kù)磁盤(pán)IO使用率偏高,前端查詢業(yè)務(wù)交易loadrunner顯示事物響應(yīng)時(shí)間偏長(zhǎng),通過(guò)監(jiān)控工具抓取對(duì)應(yīng)SQL,通過(guò)計(jì)劃分析,發(fā)現(xiàn)該SQL 中使用distinct 又多表關(guān)聯(lián)且是大表、然后使用order by,最終顯示10筆數(shù)據(jù),而在產(chǎn)生中間過(guò)程數(shù)據(jù)進(jìn)行篩選時(shí),使用的是臨時(shí)表,并把數(shù)據(jù)放入臨時(shí)表中,內(nèi)存剛好設(shè)置不大,于是放到磁盤(pán)中導(dǎo)致IO偏高。

          備注MySQL在執(zhí)行SQL查詢時(shí)可能會(huì)用到臨時(shí)表,臨時(shí)表存儲(chǔ),MySQL會(huì)先創(chuàng)建內(nèi)存臨時(shí)表,但內(nèi)存臨時(shí)表超過(guò)配置指定的值后,MySQL會(huì)將內(nèi)存臨時(shí)表導(dǎo)出到磁盤(pán)臨時(shí)表;

3、 MYSQL參數(shù)配置問(wèn)題

      MYSQL默認(rèn)配置性能低下,只能通過(guò)并發(fā)下嘗試調(diào)整參數(shù)配置來(lái)逐步優(yōu)化數(shù)據(jù)庫(kù)性能,2017年底根據(jù)公司要求配合幫助某一家銀行業(yè)務(wù)系統(tǒng)做性能測(cè)試,因?yàn)闇y(cè)試環(huán)境硬件資源有限,我跟公司申請(qǐng)了幾臺(tái)過(guò)時(shí)的筆記本,然后根據(jù)生產(chǎn)環(huán)境軟件版本等配置要求,進(jìn)行模擬搭建性能測(cè)試環(huán)境,基礎(chǔ)軟件包含:MYSQL5.6 centos7.2、tomcat7 JDK1.7、redis。使用的是聯(lián)想L421 筆記本當(dāng)MYSQL數(shù)據(jù)庫(kù)服務(wù)器、L440當(dāng)tomcat應(yīng)用服務(wù)器,壓力測(cè)試工具loadrunner、并發(fā)用戶100,壓力測(cè)試業(yè)務(wù)場(chǎng)景:用戶登錄退出、相關(guān)票據(jù)信息查詢、電子匯票交易流程等,在壓力測(cè)試過(guò)程中發(fā)現(xiàn)部分交易在50用戶并發(fā)時(shí),數(shù)據(jù)庫(kù)磁盤(pán)I0使用率都偏高,特別是寫(xiě)操作一直很高,例如測(cè)試登錄退出交易,經(jīng)監(jiān)控?cái)?shù)據(jù)庫(kù)磁盤(pán)IO率一直偏高,如下案例分析講解:

優(yōu)化前

  壓力測(cè)試時(shí),數(shù)據(jù)庫(kù)磁盤(pán)IO使用率大于75%,響應(yīng)時(shí)間1.6秒,通過(guò)NMON監(jiān)控到的數(shù)據(jù)庫(kù)資源使用情況,如下圖一與圖二:

圖一:


 分析MYSQL服務(wù)磁盤(pán)IO高問(wèn)題及優(yōu)化對(duì)策

圖二


 分析MYSQL服務(wù)磁盤(pán)IO高問(wèn)題及優(yōu)化對(duì)策

優(yōu)化后

數(shù)據(jù)庫(kù)服務(wù)器資源使用率:

 圖四

分析MYSQL服務(wù)磁盤(pán)IO高問(wèn)題及優(yōu)化對(duì)策

圖五

分析MYSQL服務(wù)磁盤(pán)IO高問(wèn)題及優(yōu)化對(duì)策

1.3 優(yōu)化內(nèi)容

  通過(guò)優(yōu)化innndb等影響IO、內(nèi)存的一些參數(shù)后,性能問(wèn)題明顯解決,優(yōu)化參數(shù)內(nèi)容,例如:innodb_write_io_threads、 innodb_read_io_threads、

 innodb_flush_log_at_trx_commi等InnoDB 引擎優(yōu)化IO 子系統(tǒng)參數(shù)配置若干。

對(duì)于以上關(guān)于分析MYSQL服務(wù)磁盤(pán)IO高問(wèn)題及優(yōu)化對(duì)策,如果大家還有更多需要了解的可以持續(xù)關(guān)注我們億速云的行業(yè)推新,如需獲取專業(yè)解答,可在官網(wǎng)聯(lián)系售前售后的,希望該文章可給大家?guī)?lái)一定的知識(shí)更新。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI