日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

概述

針對IO密集型應用做系統調優的時候,我們通常都需要知道系統cpu 內存 io 網絡等系統性能 和 使用率,結合應用本身的訪問量,以及 MySQL的性能指標來綜合分析。比如說:我們將系統壓力情況分為三個階段:從用戶端開始到web server,再到mysql。

1. 客戶量:我們可以從web App的訪問log,查看訪問量(通常會記錄時間),

2. 系統指標: 對比dstat、 IOStat/ mpstat pidstat 等搜集對應的系統性能指標,

3. mysql: 使用mysql status ,或者 mycheckpoint等工具搜集mysql的cache , query等數據。

我們很容易搜集到了系統層、設備層的IO數據,但是缺少一個工具來告訴你應用打開了多少文件,文件讀寫比例,執行了多少次fsync,是隨機讀寫還是順序讀寫,另外,mysql是一個龐大而精心設計的系統,使用了一些列的方案如table cache, thread cache 等來提升IO,我們比較容易獲得他的緩存量,命中率,文件數,但是卻不好直觀的知道它到底對物理IO設備讀寫了多少數據。到底是數據庫的那部分操作使IO這么忙,或者說到底是哪個表,哪個數據文件的IO動作最頻繁,以及他到底是什么樣的系統調用。

所以今天主要分享一個實用工具幫助我們獲取這些信息--pt-ioprofile。


一、原理

pt-ioprofile主要做了兩件事情,

1. lsof+strace每秒

2.對輸出結果做聚合計算。

對某個pid附加一個strace進程進行IO分析, --profile-pid指定pid, --cell=sizes,該參數將結果已 B/s 的方式展示出來

分享一款mysql數據庫數據文件IO監控神器--pt-ioprofile

 

total:該列是對后面所有列相加得到的和。

read/write:read系統調用從文件描述符fd所代指的打開文件中讀取/寫入數據,通常會配合lseek系統調用來使用,首先使用lseek來定位偏移量,然后進行read/write操作。

ssize_t read(int fd, void *buf, size_t count);
ssize_t write(int fd, void *buf, size_t count);
分享一款mysql數據庫數據文件IO監控神器--pt-ioprofile

 

pread/pwrite:該系統調用讓我們在fd文件的offset處開始讀取/寫入,讀取count個字節,并將這些數據放入*buf中,但是不改變文件文件的當前偏移量

pwrite主要使用在多線程并發讀寫文件的場景,多個線程同時讀寫文件彼此不受影響。

ssize_t pread(int fd, void *buf, size_t count, off_t offset);
ssize_t pwrite(int fd, const void *buf, size_t count, off_t offset);
分享一款mysql數據庫數據文件IO監控神器--pt-ioprofile

 

fsync=數據+元數據(屬主,屬組,文件權限文件大小,文件鏈接)

#include 
int fsync(int fd);

fsync的功能是確保文件fd所有已修改的內容已經正確同步到硬盤上,該調用會阻塞等待直到設備報告IO完成。

除了同步文件的修改內容(臟頁),fsync還會同步文件的描述信息(metadata,包括size、訪問時間st_atime & st_mtime等等),因為文件的數據和metadata通常存在硬盤的不同地方,因此fsync至少需要兩次IO寫操作,變向隨機IO.

fdatasync=數據,fdatasync的功能與fsync類似,但是僅僅在必要的情況下才會同步metadata,因此可以減少一次IO寫操作。

fdatasync,放寬了同步的語義以提高性能:

#include 
int fdatasync(int fd);

open/lose/seek:這是最基本的三種文件系統調用,分別是open打開文件描述符,close是關閉文件描述符,lseek是改變文件偏移量。

fcntl:函數可以改變已打開的文件性質,較復雜

filename:對應的數據文件。


二、相關參數

分享一款mysql數據庫數據文件IO監控神器--pt-ioprofile

 

--aggregate:sum|avg:可以算平均值和總和

--cell:count|sizes:times:可以算系統調用次數,系統調用傳輸數據量,系統調用耗費的時間

--group-by:all|filename|pid:聚合方式,所有聚合在一起還是按照文件聚合

--profile-piid:跟蹤的進程pid

--profile-process:mysqld進程名

--run-time:采集時間

--save-samples:將輸出保存到文件,供后續分析。


三、安裝

yum -y install strace
yum -y install https://www.percona.com/downloads/percona-toolkit/3.0.1/binary/redhat/7/x86_64/percona-toolkit-3.0.1-1.el7.x86_64.rpm

四、常用命令

1、60s內數據庫有IO活動的文件產生的各種系統調用次數

pt-ioprofile --profile-process=mysqld --run-time=60 --save-samples=/tmp/mysql_ioprofile.txt --group-by=filename --cell=count --aggregate=sum
分享一款mysql數據庫數據文件IO監控神器--pt-ioprofile

 


分享一款mysql數據庫數據文件IO監控神器--pt-ioprofile

 

2、60s內數據庫中有IO活動的文件,各種系統調用平均每秒產生的數據量

pt-ioprofile --profile-process=mysqld --run-time=60 --save-samples=/tmp/mysql_ioprofile.txt --group-by=filename --cell=sizes --aggregate=avg
分享一款mysql數據庫數據文件IO監控神器--pt-ioprofile

 

3、數據庫有IO活動的文件,各種系統調用平均耗費的時間

pt-ioprofile --profile-process=mysqld --save-samples=/tmp/mysql_ioprofile.txt --group-by=filename --cell=times --aggregate=avg
分享一款mysql數據庫數據文件IO監控神器--pt-ioprofile

 

注意在生產環境使用的時候一定要謹慎,建議在業務空閑時使用。

分享到:
標簽:mysql
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定