天天看點

mysql too many connections 分析現象分析修複方法如何避免

執行個體出現too many connections

gdb修改max_connections後檢視processlist, 有waiting for backup lock,sql線程被阻塞,同時大量show slave status連接配接

檢視存在備份程序

pt-pmt 分析線程堆棧資訊,

show slave status等待lock_msr_map

stop slave持有lock_msr_map等待stop_cond io和sql退出

sql線程等待 worker線程執行完事務( slave_worker_hash_cond)

worker等待backup_tables_lock 鎖

而我們備份又持有backup_tables_lock鎖

以鎖等待依賴順序導緻大量的show slave status被阻塞,進而占滿root連接配接

可以通過kill備份的方式修複

1 盡量不要使用myisam,減少備份持有lock tables for backup的時間。本例中myisam有200多個

2 備份期間盡量不要執行stop slave操作。