日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

mysql hang_mysql夯hang死堆栈采集工具

發布時間:2023/11/27 生活经验 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql hang_mysql夯hang死堆栈采集工具 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這里我們的場景是mysql client已經無法登陸,無法執行sql。

基本思路是打出堆棧來分析

此時首先懷疑mysql內部發生了死鎖

1. 使用pstack打出堆棧,會有一定性能影響

yum install gdb

pstack mysql_pid > /tmp/pstack.out

也可以用gdb

gdb -batch -ex "thread apply all bt" -p mysql_pid > /tmp/gdb.log

堆棧可能比較多,需要耐心一點點排查,找出死鎖的調用路徑

2. 使用strace打出一段時間內的系統調用信息,會有一定性能影響

strace -o /tmp/strace_output.txt -T -tt -f -e trace=all -p {mysql_pid}

可以作為額外信息,輔助堆棧的排查

如果pstack或gdb也無法進入,那可能mysql已經不響應信號了

只能從操作系統提供的proc文件收集一些信息

cat /proc/mysql_pid/status

注意,status里除了進程狀態之外,也有信號處理相關的信息Sig*

cat /proc/mysql_pid/task/*/stack

cat /proc/mysql_pid/syscall

cat /proc/mysql_pid/stack

當前的系統調用信息,比如是不是某個系統調用一直沒有返回

ps -p{mysql_pid} -ocmd,stat,wchan

如果proc文件顯示進程處于Running狀態,沒有夯在任何系統調用上

我目前能找到的方法就是打coredump,會殺死進程,但是能留下堆棧

prlimit --p $(mysql pid) --core=unlimited

先調整core limit,保證coredump文件能正常生成(linux 內核版本 2.6.36 以后才能使用prlimit)

kill -SIGSYS mysql_pid

linux有很多默認行為是打coredump的信號,但是有些信號被mysql捕獲自己做了處理,比如SIGABRT,所以這里我們用SIGSYS

參考:http://man7.org/linux/man-pages/man7/signal.7.html

如果以上方法都沒有成功收集到堆棧

那可能是操作系統層面的問題(或許可以從redhat bug文檔中找類似問題),或者是硬件問題,不簡單是mysql bug導致的死鎖

文章來源: www.oschina.net,作者:comix,版權歸原作者所有,如需轉載,請聯系作者。

原文鏈接:https://my.oschina.net/u/3211934/blog/3190544

總結

以上是生活随笔為你收集整理的mysql hang_mysql夯hang死堆栈采集工具的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。