mysql hang住 原因_MySQL客户端连接登入hang住原因分析

本文分析了MySQL客户端在尝试连接时hang住的问题。通过pstack和netstat检查,发现连接处于CONNECTING状态,mysqld服务端的监听线程被SIGSTOP信号暂停。解决方法是发送SIGCONT信号恢复mysqld进程。文章还简述了Linux信号处理、pstack工具的影响及如何捕获所有信号。
摘要由CSDN通过智能技术生成

作者:八怪(高鹏) 中亦科技数据库专家

原文:https://www.jianshu.com/p/93b69955344b

一、问题来源

问题来自一位朋友,如下:

541042a0310f73a1ebdfb6fd1f7b8711.pngmysql客户端无法登陆,查看服务器负载没有发现高负载信息。通过pstack查看线程栈信息,没有发现异常信息。

二、问题诊断和解决

一般来讲出现这种情况,我们会使用pstack看看新建立的线程为在什么函数上卡住了,然后很容易就能找到原因。但是出现这个问题过后,当mysql发起连接后卡住后,使用pstack查看mysqld服务端的进程,发现根本就没有线程与之进行交互,因此mysqld怀疑监听线程是不是出了什么问题,因此对mysql客户端连接进程进行了pstack发现如下:#0  0x00007f262e7889c0 in __connect_nocancel () from /lib64/libpthread.so.0#1  0x0000000000435123 in inline_mysql_socket_connect (src_file=0x504490 "../../mysql-8.0.20/vio/viosocket.cc", src_line=1054, len=110, addr=0x7fffb38daa20, mysql_socket=...) at ../../mysql-8.0.20/include/mysql/psi/mysql_socket.h:647#2  vio_socket_connect (vio=0x110d2c0, addr=addr@entry=0x7fffb38daa20, len=len@entry=110, nonblocking=, timeout=-1, connect_done=connect_done@entry=0x7fffb38da9ef) at ../../mysql-8.0.20/vio/viosocket.cc:1054#3  0x0000000000422ad6 in csm_begin_connect (ctx=0x7fffb38daad0) at ../../mysql-8.0.20/sql-common/client.cc:250#4  0x000000000041fe99 in mysql_real_connect (mysql=mysql@entry=0xaf16a0 , host=host@entry=0x0, user=user@entry=0x10defc0 "root", passwd=passwd@entry&#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值