c3工具bug导致集群环境不可用
1) 问题严重程度:
出现该问题后会导致生产系统瘫痪。
2) 现象:
在集群节点上运行c3命令后,处于挂起状态;之后虽然通过ctrl + c 终止,但c3命令在后台仍在频繁启动python进程;python进程对内存消耗逐步加大,此时该集群节点接收的新连接与新任务将会由于内存资源不足而不断积压,随着内存消耗殆尽,集群最终将完全瘫痪。
3) 原因:
用户在通过hostname命令更改主机名称后, 对于/etc/hosts文件中的ip与主机名称映射信息修改不完全; 而后执行c3命令时,c3会自动通过/etc/hosts文件中的配置将hostname映射为ip地址,该ip地址与/etc/c3_conf中#head node行指定的ip地址不一致,则将产生上述现象。
注:该问题确定为c3的bug。
4) 重现:
A. 在安装c3后,通过hostname命令更改主机名称。
[root@g201 gcware]# hostname newname
[root@g201 gcware]# hostname
newname
B. 将/etc/hosts中的网卡地址对应的主机名称进行更新,但不对127.0.0.1对应的主机名进行更新。
[root@g201 gcware]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 g201
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.7.200 g200
192.168.7.202 g202
192.168.7.201 newname
192.168.7.203 g203
注:上面的newname是更新后的新主机名,而g201还是老的主机名(应该将g201改成newname), 这样在通过newname进行映射时会对应成192.168.7.201。
由于该ip地址和/etc/c3_conf中“127.0.0.1:127.0.0.1 #head node”的ip地址不一致,因此在运行c3命令后会出现下述现象。
C. 执行c3命令则会处于挂起状态,之后通过ctrl + c 终止,但c3命令在后台仍在频繁启动python进程。
[root@g201 gcware]# cexec date
^CKeyboard interrupt
Keyboard interrupt
[root@g201 gcware]# ps -ef | grep python | wc -l
71
[root@g201 gcware]# ps -ef | grep python | wc -l
81
[root@g201 gcware]# ps -ef | grep python | head -n5
root 36447 1 0 21:42 ? 00:00:00 python /usr/bin/cexec -f /tmp/192.168.7.201036420 date
root 36454 36447 0 21:42 ? 00:00:00 python /usr/bin/cexec -f /tmp/192.168.7.201036420 date
root 36480 36478 0 21:42 ? 00:00:00 python /usr/bin/cexec -f /tmp/192.168.7.201036454 date
root 36487 36480 0 21:42 ? 00:00:00 python /usr/bin/cexec -f /tmp/192.168.7.201036454 date
root 36513 36511 0 21:42 ? 00:00:00 python /usr/bin/cexec -f /tmp/192.168.7.201036487 date
5) 解决方法:
A. 在出现上述问题后,首先将类似“python /usr/bin/cexec -f /tmp/192.168.7.201036420 date”的进程杀掉。
B. 将/etc/hosts修改正确。
热门帖子
- 12025-12-01浏览数:182759
- 22023-05-09浏览数:25051
- 42023-09-25浏览数:18521
- 52020-05-11浏览数:17526