本文主要是介绍SuperMap iManager for K8S服务异常处理(2),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近在处理客户使用SuperMap iManager for K8S的过程中,出现了个比较奇怪的问题
1)问题现象
iManager运行一段时间后,服务无法访问了,远程查看服务器,发现ssh竟然连不上了,直接找到物理机查看,发现报了一些错误
cpu死锁soft lockup,或者是
2)原因排查
出现这些问题的客户都存在一个共同的特点,就是发布了大量的瓦片数据,并且瓦片数据是放在NFS共享目录中的,根据第二个截图中的报错可以看出是runc无法申请到内存,而客户的内存其实都是很大的还有很多闲置的内存可以使用,可以联想到大概是由于内存回收不及时,存在大量的碎片化。当某进程执行时,在 XFS(XFS Manager的内存管理) 的申请内存中有连续的大块内存申请请求,就会导致内存一直分配不到,会一直阻塞在 kmem_alloc 循环中, 反复申请内存,由于内存碎片没有被组合,因此就一直申请不到执行命令也会卡住,这也就验证了执行某些ssh 都会失败的原因。
而第一个截图中的soft lockup的错误,在网上查阅了相关资料后发现可能存在诸多的原因,不是很好排查,而且大概率是跟大量的碎片化瓦片发布有关。根据网上提供的解决方式,可以修改watchdog的超时时间来进行避免,于是我们可以将这两个报错按照一个办法来同时处理
3)解决办法
修改min_free_kbytes ,确定系统开始回收内存的阈值,控制系统的空闲内存。值越高,内核越早开始回收内存,空闲内存越高
vi /etc/sysctl.conf
#修改为4G
vm.min_free_kbytes=4194304
vm.vfs_cache_pressure=200
vm.swappiness=40
修改watchdog的超时时间
vi /etc/sysctl.conf
kernel.watchdog_thresh=30
每个节点都修改后重启机器
运行了很长一段时间后再也没出现类似的问题
参考文章:
min_free_kbytes_hanyingzhong的专栏-CSDN博客
BUG: soft lockup - CPU#0 stuck for s!_学海无涯的博客-CSDN博客
这篇关于SuperMap iManager for K8S服务异常处理(2)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!