一、问题表现
1、大量unauthenticated user状态进程,如下图
2、unauthenticated user状态进程的TIME都很大,如下图
二、问题分析
如下图pstack栈信息。
线程池中的线程进行等待超时,使用了pthread_cond_timedwait上的第三个参数是绝对时间。
比如需要等待3分钟,现在7点,则传递7:03,如果调整了系统时间,比如系统时间调整到6点,该函数同样要等到7:03,造成等待了1个小时。
因为以上绝对时间是dump线程传进来的,新建连接 检查到线程池队列里有挂起的event 所以都等待了,造成以上现象。
三、观点验证
将binglog dump进程停掉之后,发现unauthenticated user状态进程降为0,以上分析得到确认。
四、问题原因
手动调整了数据库服务器时间,或NTP时间跳变。
五、可能的解决方案
1、确认ntp服务同步正常,避免time step;
2、关闭线程池来规避以上问题, 配置文件中thread_handling = one-thread-per-connection