19 Jan 2017
数据库被多个线上discuz使用,突然某段时间论坛页面报错database error。
排查mysql日志,发现大量下面报错
# 大量warning 170119 14:04:07 [Warning] IP address '113.10.xxx.xxx' could not be resolved: Temporary failure in name resolution # 夹杂着以下warning 170118 20:34:54 [Warning] /usr/local/mysql/bin/mysqld: Forcing close of thread 3336563 user: 'someuser'
根据mysql错误日志中的第二个warning,综合网上的信息,得到的结论是,mysql积攒了大量的resolve线程(连接数很大),导致线程过多得不到释放,造成mysql的假死
# 使用skip-name-resolve关闭ip resolve # (仅限myisam)使用skip-external-locking跳过外部锁(系统锁),在linux上启动这个外部锁,会很容易导致mysql假死(也许是因为linux的锁机制,可参考官方文档) vim /etc/my.cnf ***************************************** [mysqld] skip-name-resolve skip-external-locking ***************************************** # 重启mysql service mysql restart