参考链接:https://www.centos.org/forums/viewtopic.php?f=47&t=60087#p253854
问题:
MongoDB服务器卡死,无法ping通,无法远程连接,无法登陆终端,终端显示:
CentOS 7- kernel: BUG: soft lockup - CPU#3 stuck for 30s! [xxx:xxx]:
原因分析:
原因1:系统缓存过大引起内存使用率高
原因2:内核bug或者内核参数设置不合理
原因3:MongoDB参数配置不合理
解决方法:
1.修改内存强制回收等级
先设置
# echo 3 > /proc/sys/vm/drop_caches
再设置
# echo 1 > /proc/sys/vm/drop_caches
2.增加内核参数
# vi /etc/sysctl.conf
##内核默认参数(循环超时)
kernel.watchdog_thresh=30
##内存回收
vm.min_free_kbytes=409600
vm.vfs_cache_pressure=200
3.内核循环超时(s)
# echo 30 >/proc/sys/kernel/watchdog_thresh
4.修改mongodb.conf
# vi /usr/local/mongodb/conf/mongodb.conf (以实际目录为准)
#限制内存使用
wiredTigerCacheSizeGB=10
5.关闭大叶内存
6.定时查看日志:
# grep ‘soft lockup’ /var/log/messages*
7.设置死循环宕机重启
# echo 1 > /proc/sys/kernel/softlockup_panic
持续观察中。。。