亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

percona中pt-pmp怎么用

發布時間:2021-12-14 16:13:12 來源:億速云 閱讀:177 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關percona中pt-pmp怎么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

pt-pmp有兩方面的作用:一是獲取進程的堆棧信息,二是對這些堆棧信息進行匯總。

進程的堆棧信息是利用gdb獲取的,所以在獲取的過程中,會對mysql服務端的性能有一定的影響。

用官方的話說:

This will freeze the program for some period of time, ranging from a second or so to much longer on very busy systems with a lot of memory and many threads in the program.

In addition to freezing the server, there is also some risk of the server crashing or performing badly after GDB detaches from it.

pt-pmp腳本本身是用shell寫的,用法也比較簡單,唯一的要求是服務器上已安裝gdb包。

不然會報如下錯誤:

[root@localhost ~]# pt-pmp --binary mysqld
Sat Oct 29 17:32:34 CST 2016 /usr/local/bin/pt-pmp: line 663: gdb: command not found

下面看看其具體參數

--binary

指定分析的進程名,如果不指定,則默認是mysqld,從這個參數可以看出,pt-pmp不僅僅適用于mysqld。

short form: -b; type: string; default: mysqld
Which binary to trace.

--help

Show help and exit.

--interval

迭代時間之間的間隔,從源代碼也可以看出

for x in $(_seq $OPT_ITERATIONS); do gdb -ex "set pagination 0" \ -ex "thread apply all bt" \ -batch                    \ -p $OPT_PID               \ >> "$output_file" date +'TS %N.%s %F %T' >> "$output_file" sleep $OPT_INTERVAL done

$OPT_ITERATIONS是下面--iterations參數,而$OPT_INTERVAL即sleep的時間。

short form: -s; type: int; default: 0 Number of seconds to sleep between --iterations.

 --iterations

從上面的源代碼可以看出,所謂的迭代其實就是執行gdb命令的次數

short form: -i; type: int; default: 1 How many traces to gather and aggregate.

--lines

指定打印匯總后每一個分類中的頭幾個函數。

譬如原始匯總信息如下:

# pt-pmp 1.txt 1928 poll(libc.so.6),vio_io_wait(viosocket.c:771),vio_socket_io_wait(viosocket.c:68),vio_read(viosocket.c:123),net_read_raw_loop(net_serv.cc:669),net_read_packet_header(net_serv.cc:751),net_read_packet(net_serv.cc:751),my_net_read(net_serv.cc:894),do_command(sql_parse.cc:969),do_handle_one_connection(sql_connect.cc:982),handle_one_connection(sql_connect.cc:898),pfs_spawn_thread(pfs.cc:1860),start_thread(libpthread.so.0),clone(libc.so.6)  80 libaio::??(libaio.so.1),os_aio_linux_collect(os0file.cc:4977),os_aio_linux_handle(os0file.cc:4977),fil_aio_wait(fil0fil.cc:5809),io_handler_thread(srv0start.cc:492),start_thread(libpthread.so.0),clone(libc.so.6)  69 poll(libc.so.6),vio_io_wait,vio_socket_io_wait,vio_read,net_read_raw_loop,net_read_packet,my_net_read,do_command,do_handle_one_connection,handle_one_connection,pfs_spawn_thread,start_thread(libpthread.so.0),clone(libc.so.6)
   ...

如果指定--line參數,則輸出如下:

# pt-pmp --lines 2 1.txt 1928 poll(libc.so.6),vio_io_wait(viosocket.c:771) 80 libaio::??(libaio.so.1),os_aio_linux_collect(os0file.cc:4977) 69 poll(libc.so.6),vio_io_wait
short form: -l; type: int; default: 0 Aggregate only first specified number of many functions; 0=infinity.

--pid

指定進程的pid,該參數會覆蓋--binary參數。

short form: -p; type: int Process ID of the process to trace; overrides --binary.

--save-samples

是否將gdb獲取的原始堆棧信息(注意,沒有匯總)保存在文件中。

short form: -k; type: string Keep the raw traces in this file after aggregation.

--version

Show version and exit.

所以,總結其可用用法如下:

1. 匯總pstack獲取的結果

   # ps -ef |grep mysqld

   # pstack 10230 > 10230.info

   # pt-pmp 10230.info 

2. 直接根據進程名匯總堆棧信息

   # pt-pmp --binary mysqld

3. 上述命令只是一次迭代的結果,如果要迭代多次,且每次相隔1s,可指定如下:

   # pt-pmp --binary mysqld --iterations 2 --interval 1

4. 如果要同時保留匯總前的堆棧信息,可指定--save-samples參數

   # pt-pmp --binary sshd --save-samples sshd.txt

關于“percona中pt-pmp怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南通市| 巴东县| 平遥县| 喀喇沁旗| 南丰县| 泸州市| 湟中县| 侯马市| 宝山区| 墨竹工卡县| 潞城市| 车致| 新营市| 乐亭县| 宜黄县| 石柱| 西平县| 仙居县| 陇川县| 瑞昌市| 甘泉县| 海林市| 翁源县| 奉贤区| 靖江市| 会同县| 东乡县| 江阴市| 绥化市| 祁连县| 普安县| 定南县| 呼玛县| 雷波县| 宝丰县| 开鲁县| 澄城县| 古田县| 盈江县| 常山县| 泸西县|