Percona-Tookit工具包之pt-pmp
2018-07-03 01:10:59来源:博客园 阅读 ()
1 pt-pmp [OPTIONS] [FILES]
1 --binary //Specify which binary program to trace(default 'mysqld'). 2 --pid //Specify a process id to trace. 3 --iterations //Specify trace times(default "1"). 4 --interval //Number of seconds every time(default "0"). 5 --lines //Specify the number of functions to trace(default "0" means infinite). 6 --save-samples //output aggregation into a file for later analysis.
1 [root@zlm1 03:01:30 ~] 2 #pt-pmp --save-samples pmp.log 3 Sun Jul 1 03:21:06 CEST 2018 4 /usr/bin/pt-pmp: line 665: gdb: command not found //gdb package is not installed. 5 1 6 7 [root@zlm1 03:21:06 ~] 8 #yum install gdb //Install gdb package first. 9 //Omitted 10 Installed: 11 gdb.x86_64 0:7.6.1-110.el7 12 13 Complete! 14 15 [root@zlm1 03:23:19 ~] 16 #pt-pmp --save-samples pmp.log 17 Sun Jul 1 03:23:22 CEST 2018 18 10 __io_getevents_0_4(libaio.so.1),LinuxAIOHandler::collect(os0file.cc:2500),LinuxAIOHandler::poll(os0file.cc:2646),os_aio_linux_handler(os0file.cc:2702),os_aio_handler(os0file.cc:2702),fil_aio_wait(fil0fil.cc:5835),io_handler_thread(srv0start.cc:311),start_thread(libpthread.so.0),clone(libc.so.6) 19 3 pthread_cond_wait,wait(os0event.cc:165),os_event::wait_low(os0event.cc:165),srv_worker_thread(srv0srv.cc:2520),start_thread(libpthread.so.0),clone(libc.so.6) 20 1 sigwait(libpthread.so.0),signal_hand(mysqld.cc:2120),pfs_spawn_thread(pfs.cc:2190),start_thread(libpthread.so.0),clone(libc.so.6) 21 1 sigwaitinfo(libc.so.6),timer_notify_thread_func(posix_timers.c:77),pfs_spawn_thread(pfs.cc:2190),start_thread(libpthread.so.0),clone(libc.so.6) 22 1 pthread_cond_wait,wait(os0event.cc:165),os_event::wait_low(os0event.cc:165),srv_purge_coordinator_suspend(srv0srv.cc:2676),srv_purge_coordinator_thread(srv0srv.cc:2676),start_thread(libpthread.so.0),clone(libc.so.6) 23 1 pthread_cond_wait,wait(os0event.cc:165),os_event::wait_low(os0event.cc:165),buf_resize_thread(buf0buf.cc:3016),start_thread(libpthread.so.0),clone(libc.so.6) 24 1 pthread_cond_wait,wait(os0event.cc:165),os_event::wait_low(os0event.cc:165),buf_dump_thread(buf0dump.cc:782),start_thread(libpthread.so.0),clone(libc.so.6) 25 1 pthread_cond_wait,native_cond_wait(thr_cond.h:140),my_cond_wait(thr_cond.h:140),inline_mysql_cond_wait(thr_cond.h:140),compress_gtid_table(thr_cond.h:140),pfs_spawn_thread(pfs.cc:2190),start_thread(libpthread.so.0),clone(libc.so.6) 26 1 pthread_cond_timedwait,os_event::timed_wait(os0event.cc:285),os_event::wait_time_low(os0event.cc:412),srv_monitor_thread(srv0srv.cc:1585),start_thread(libpthread.so.0),clone(libc.so.6) 27 1 pthread_cond_timedwait,os_event::timed_wait(os0event.cc:285),os_event::wait_time_low(os0event.cc:412),srv_error_monitor_thread(srv0srv.cc:1751),start_thread(libpthread.so.0),clone(libc.so.6) 28 1 pthread_cond_timedwait,os_event::timed_wait(os0event.cc:285),os_event::wait_time_low(os0event.cc:412),pc_sleep_if_needed(buf0flu.cc:2690),buf_flush_page_cleaner_coordinator(buf0flu.cc:2690),start_thread(libpthread.so.0),clone(libc.so.6) 29 1 pthread_cond_timedwait,os_event::timed_wait(os0event.cc:285),os_event::wait_time_low(os0event.cc:412),lock_wait_timeout_thread(lock0wait.cc:501),start_thread(libpthread.so.0),clone(libc.so.6) 30 1 pthread_cond_timedwait,os_event::timed_wait(os0event.cc:285),os_event::wait_time_low(os0event.cc:412),ib_wqueue_timedwait(ut0wqueue.cc:160),fts_optimize_thread(fts0opt.cc:3031),start_thread(libpthread.so.0),clone(libc.so.6) 31 1 pthread_cond_timedwait,os_event::timed_wait(os0event.cc:285),os_event::wait_time_low(os0event.cc:412),dict_stats_thread(dict0stats_bg.cc:428),start_thread(libpthread.so.0),clone(libc.so.6) 32 1 poll(libc.so.6),vio_io_wait(viosocket.c:786),vio_socket_io_wait(viosocket.c:77),vio_read(viosocket.c:132),net_read_raw_loop(net_serv.cc:672),net_read_packet_header(net_serv.cc:756),net_read_packet(net_serv.cc:756),my_net_read(net_serv.cc:899),Protocol_classic::read_packet(protocol_classic.cc:808),Protocol_classic::get_command(protocol_classic.cc:965),do_command(sql_parse.cc:938),handle_connection(connection_handler_per_thread.cc:300),pfs_spawn_thread(pfs.cc:2190),start_thread(libpthread.so.0),clone(libc.so.6) 33 1 poll(libc.so.6),Mysqld_socket_listener::listen_for_connection_event(socket_connection.cc:852),connection_event_loop(connection_acceptor.h:66),mysqld_main(connection_acceptor.h:66),__libc_start_main(libc.so.6),_start 34 1 nanosleep(libpthread.so.0),os_thread_sleep(os0thread.cc:279),srv_master_sleep(srv0srv.cc:2330),srv_master_thread(srv0srv.cc:2330),start_thread(libpthread.so.0),clone(libc.so.6) 35 36 //Above is the messages outupted on screen.All the contents is different functions relevent with linux and mysqld. 37 //The output sorts with rules of most-frequen first. 38 //The combination of function stacks lead by "__io_getevents_0_4(libaio.so.1)"(which is relvent with io) appears 10 times.
1 #more pmp.log 2 TS 845703637.1530408066 2018-07-01 03:21:06 3 [New LWP 3981] 4 [New LWP 3875] 5 [New LWP 3874] 6 [New LWP 3846] 7 [New LWP 3845] 8 [New LWP 3844] 9 [New LWP 3843] 10 [New LWP 3842] 11 [New LWP 3841] 12 [New LWP 3840] 13 [New LWP 3839] 14 [New LWP 3838] 15 [New LWP 3837] 16 [New LWP 3836] 17 [New LWP 3835] 18 [New LWP 3833] 19 [New LWP 3832] 20 [New LWP 3831] 21 [New LWP 3830] 22 [New LWP 3829] 23 [New LWP 3828] 24 [New LWP 3827] 25 [New LWP 3826] 26 [New LWP 3825] 27 [New LWP 3824] 28 [New LWP 3823] 29 [New LWP 3822] //We got 28 new LWP from 3822 to 3981. 30 [Thread debugging using libthread_db enabled] 31 Using host libthread_db library "/lib64/libthread_db.so.1". 32 0x00007f50efe74b7d in poll () from /lib64/libc.so.6 33 34 Thread 28 (Thread 0x7f50e7ec1700 (LWP 3822)): //It's the last thread in pmp.log file here. 35 #0 0x00007f50efdbf7da in sigwaitinfo () from /lib64/libc.so.6 36 #1 0x0000000000f5171b in timer_notify_thread_func (arg=<optimized out>) at /export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/mysys/posix_timers.c:77 37 #2 0x0000000000f707b4 in pfs_spawn_thread (arg=0x30cb000) at /export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/storage/perfschema/pfs.cc:2190 38 #3 0x00007f50f13c1df5 in start_thread () from /lib64/libpthread.so.0 39 #4 0x00007f50efe7f1ad in clone () from /lib64/libc.so.6 40 41 Thread 27 (Thread 0x7f50ded07700 (LWP 3823)): 42 #0 0x00007f50f11b8644 in __io_getevents_0_4 () from /lib64/libaio.so.1 43 #1 0x000000000106a514 in LinuxAIOHandler::collect (this=0x7f50ded06e10) at /export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/storage/innobase/os/os0file.cc:2500 44 #2 0x000000000106bc34 in LinuxAIOHandler::poll (this=0x7f50ded06e10, m1=0x7f50ded06ec8, m2=0x7f50ded06ec0, request=0x7f50ded06e90) at /export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/storage/innobase/os/os0file.cc:2646 45 #3 0x000000000106d65c in os_aio_linux_handler (request=0x7f50ded06e90, m2=0x7f50ded06ec0, m1=0x7f50ded06ec8, global_segment=0) at /export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/storage/innobase/os/os0file.cc:2702 46 #4 os_aio_handler (segment=0, m1=0x7f50ded06ec8, m2=0x7f50ded06ec0, request=0x7f50ded06e90) at /export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/storage/innobase/os/os0file.cc:6259 47 #5 0x000000000120196d in fil_aio_wait (segment=0) at /export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/storage/innobase/fil/fil0fil.cc:5835 48 #6 0x000000000110e980 in io_handler_thread (arg=<optimized out>) at /export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/storage/innobase/srv/srv0start.cc:311 49 #7 0x00007f50f13c1df5 in start_thread () from /lib64/libpthread.so.0 50 #8 0x00007f50efe7f1ad in clone () from /lib64/libc.so.6 51 52 Thread 26 (Thread 0x7f50de506700 (LWP 3824)): 53 #0 0x00007f50f11b8644 in __io_getevents_0_4 () from /lib64/libaio.so.1 54 #1 0x000000000106a514 in LinuxAIOHandler::collect (this=0x7f50de505e10) at /export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/storage/innobase/os/os0file.cc:2500 55 #2 0x000000000106bc34 in LinuxAIOHandler::poll (this=0x7f50de505e10, m1=0x7f50de505ec8, m2=0x7f50de505ec0, request=0x7f50de505e90) at /export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/storage/innobase/os/os0file.cc:2646 56 #3 0x000000000106d65c in os_aio_linux_handler (request=0x7f50de505e90, m2=0x7f50de505ec0, m1=0x7f50de505ec8, global_segment=1) at /export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/storage/innobase/os/os0file.cc:2702 57 #4 os_aio_handler (segment=1, m1=0x7f50de505ec8, m2=0x7f50de505ec0, request=0x7f50de505e90) at /export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/storage/innobase/os/os0file.cc:6259 58 #5 0x000000000120196d in fil_aio_wait (segment=1) at /export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/storage/innobase/fil/fil0fil.cc:5835 59 #6 0x000000000110e980 in io_handler_thread (arg=<optimized out>) at /export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/storage/innobase/srv/srv0start.cc:311 60 #7 0x00007f50f13c1df5 in start_thread () from /lib64/libpthread.so.0 61 #8 0x00007f50efe7f1ad in clone () from /lib64/libc.so.6 62 63 //Omitted. 64 65 Thread 4 (Thread 0x7f50deeb2700 (LWP 3874)): 66 #0 0x00007f50f13c8ec1 in sigwait () from /lib64/libpthread.so.0 67 #1 0x00000000007c357b in signal_hand (arg=<optimized out>) at /export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/sql/mysqld.cc:2120 68 #2 0x0000000000f707b4 in pfs_spawn_thread (arg=0x386a740) at /export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/storage/perfschema/pfs.cc:2190 69 #3 0x00007f50f13c1df5 in start_thread () from /lib64/libpthread.so.0 70 #4 0x00007f50efe7f1ad in clone () from /lib64/libc.so.6 71 72 Thread 3 (Thread 0x7f50be7fc700 (LWP 3875)): 73 #0 0x00007f50f13c5705 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 74 #1 0x0000000000ebe6f5 in native_cond_wait (mutex=<optimized out>, cond=<optimized out>) at /export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/include/thr_cond.h:140 75 #2 my_cond_wait (mp=<optimized out>, cond=<optimized out>) at /export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/include/thr_cond.h:195 76 #3 inline_mysql_cond_wait (src_line=874, src_file=0x15d92e0 "/export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/sql/rpl_gtid_persist.cc", mutex=<optimized out>, that=<optimized out>) at /export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/include/mysql/psi/mysql_thread.h:1184 77 #4 compress_gtid_table (p_thd=<optimized out>) at /export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/sql/rpl_gtid_persist.cc:874 78 #5 0x0000000000f707b4 in pfs_spawn_thread (arg=0x386a740) at /export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/storage/perfschema/pfs.cc:2190 79 #6 0x00007f50f13c1df5 in start_thread () from /lib64/libpthread.so.0 80 #7 0x00007f50efe7f1ad in clone () from /lib64/libc.so.6 81 82 Thread 2 (Thread 0x7f50dee81700 (LWP 3981)): 83 #0 0x00007f50efe74b7d in poll () from /lib64/libc.so.6 84 #1 0x00000000012bae8f in vio_io_wait (vio=<optimized out>, event=<optimized out>, timeout=300000) at /export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/vio/viosocket.c:786 85 #2 0x00000000012baf83 in vio_socket_io_wait (vio=<optimized out>, event=<optimized out>) at /export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/vio/viosocket.c:77 86 #3 0x00000000012bb5b8 in vio_read (vio=0x7f50b0000bb0, buf=0x7f50b000a3c0 "\001", size=4) at /export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/vio/viosocket.c:132 87 #4 0x0000000000c6de03 in net_read_raw_loop (net=0x7f50b0002570, count=4) at /export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/sql/net_serv.cc:672 88 #5 0x0000000000c6e69b in net_read_packet_header (net=0x7f50b0002570) at /export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/sql/net_serv.cc:756 89 #6 net_read_packet (net=0x7f50b0002570, complen=0x7f50dee80d38) at /export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/sql/net_serv.cc:822 90 #7 0x0000000000c6e94c in my_net_read (net=0x7f50b0002570) at /export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/sql/net_serv.cc:899 91 #8 0x0000000000c7c1dc in Protocol_classic::read_packet (this=0x7f50b0001e18) at /export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/sql/protocol_classic.cc:808 92 #9 0x0000000000c7af52 in Protocol_classic::get_command (this=0x7f50b0001e18, com_data=0x7f50dee80de0, cmd=0x7f50dee80e0c) at /export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/sql/protocol_classic.cc:965 93 #10 0x0000000000d1cf47 in do_command (thd=0x7f50b0000dc0) at /export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/sql/sql_parse.cc:938 94 #11 0x0000000000ded7ac in handle_connection (arg=<optimized out>) at /export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/sql/conn_handler/connection_handler_per_thread.cc:300 95 #12 0x0000000000f707b4 in pfs_spawn_thread (arg=0x382fa60) at /export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/storage/perfschema/pfs.cc:2190 96 #13 0x00007f50f13c1df5 in start_thread () from /lib64/libpthread.so.0 97 #14 0x00007f50efe7f1ad in clone () from /lib64/libc.so.6 98 99 Thread 1 (Thread 0x7f50f17e8740 (LWP 3817)): 100 #0 0x00007f50efe74b7d in poll () from /lib64/libc.so.6 101 #1 0x0000000000deeaf9 in Mysqld_socket_listener::listen_for_connection_event (this=0x30d96f0) at /export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/sql/conn_handler/socket_connection.cc:852 102 #2 0x00000000007c89c4 in connection_event_loop (this=0x373e050) at /export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/sql/conn_handler/connection_acceptor.h:66 103 #3 mysqld_main (argc=79, argv=0x2f897b8) at /export/home/pb2/build/sb_0-26514852-1514433850.9/mysql-5.7.21/sql/mysqld.cc:5122 104 #4 0x00007f50efdaaaf5 in __libc_start_main () from /lib64/libc.so.6 105 #5 0x00000000007be479 in _start () 106 TS 788084395.1530408210 2018-07-01 03:23:30 107 108 [root@zlm1 03:37:50 ~] 109 #
1 1.What's gdb? 2 gdb is tool of linux,a debugger of GNU project.It can help you to see what's going on inside the program while it executes.For example,the usual case is the program running slowly or almost to be crashed. 3 4 2.What can gdb do? 5 It can catch details in the act belowl: 6 1).Start the program and specify anything the might affect its behavior. 7 2).Let the program stop on specific conditions. 8 3).Check the details when the program stops. 9 4).Change things in the program and try to correct effect of potential problems. 10 11 3.What's LWP? 12 LWP is abbreviation of Light Weight Process. 13 Process:You'll find a process in background after you've executed a linux command(which can be observed by "ps -ef"). 14 Thread:It's nothing but a flow of execution of the linux process. 15 Light Weight Process:It's almost the same with "thread" but a term at kernal level. 16 17 Here's some detail of it: 18 What are Linux Processes, Threads, Light Weight Processes, and Process State 19 https://www.thegeekstuff.com/2013/11/linux-process-and-threads/
1 1.The second column in the file shows the detail of memory address with hex. 2 2.At the very beginning of the file in Thread 1(LWP 3817),it shows the detail of how MySQL process works. 3 "Mysqld_socket_listener::listen_for_connection_event" is a MySQL function defined in source code file "socket_connection.cc".This is a clue which can help you to findout where to servay the details if something happened and stucked here. 4 3.At every bottom of each thread(except thread 1),you can see the same contents below: 5 "#. 0x... clone () from /lib64/libc.so.6" //clone() is a function to create a new thread. 6 "#. 0x... start_thread () from /lib64/libpthread.so.0" //start_thread() is a function to start a poxis thread.
- pt-pmp is read-only tool and it depends on the linux gdb to collect stack traces.
- when pt-pmp works,it will attach gdb to the program you specified,what will probably freeze the program for a while.
- It's not recommend to run the tool on a very busy product system because of the potential freezing period and resource consumption.
- As a matter of fact,you can also do the stack tracing stuff by pstack tool but that's not today's motif.
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:MySQL基础
- Percona-Tookit工具包之pt-table-usage 2018-07-23
- Percona-Tookit工具包之pt-summary 2018-07-22
- Percona-Tookit工具包之pt-slave-find 2018-07-20
- Percona-Tookit工具包之pt-slave-restart 2018-07-19
- Percona-Tookit工具包之pt-slave-find 2018-07-18
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash