天天看点

ProxySQL官档翻译__16_ProxySQL_Thread_02_Watchdog16_ProxySQL_Thread_02_Watchdog

16_ProxySQL_Thread_02_Watchdog

备注:文章编写时间201904-201905期间,后续官方在github的更新没有被写入

一、Watchdog

ProxySQL是多线程守护进程,每个模块有一个或多个线程,正如前一节 ProxySQL Threads 中已经指出的那样(15_ProxySQL_Thread_01_主要的线程.txt)。

最关键的线程是MySQL线程。

虽然关键部分的数量有限,但之前有少数的BUG导致了意外的锁定问题和停顿。出于这个原因,ProxySQL 1.4.4引入了一个监视MySQL线程和MySQL辅助线程(如果启用)的监视程序。

如果监视程序检测到这些线程的任何一个丢失了心跳,则会假定它们被阻塞并自动断言(判断true/false),从而导致核心转储并从父进程自动重启。

Watchdog 默认是启动的。

由于每个线程的阻塞时间不应超过 mysql-poll_timeout 毫秒(默认为2000),监视程序会每 mysql-poll_timeout+1000毫秒检查一次心跳(默认为3秒,2000毫秒+1000毫秒):

如果 restart_on_missing_heartbeats 为真,则丢失了心跳,监视程序 watchdog 会触发一个断言。

二、Note on proxysql and gdb