openstack计算节点,CPU占用率100%

1.1 现象

openstack计算节点上,如Figure-1所示,使用top工具发现某些个虚拟机的进程占用cpu核一直在100%,系统的负载load average:5.32,表明有5个task处于(可运行+不可中断阻塞状态);使用sar -q 2,如果Figure-2所示,runq-sz(Run queue length (number of tasks waiting for run time))的值为3、4、5,与top命令的结果也一一致。

 

                          Figure-1

 

                          Figure -2

1.2 分析步骤

通过下面的步骤,分析是什么原因造成了这种问题

1.2.1 查看进程、线程状况

选择了其中一个qemu-kvm进程进行分析,进程号为13623,查看该进程的线程状况:

top -H -p 13623

 

                      Figure-3

如图Figure-3所示,13791线程100%占用了一个CPU核,别的线程工作正常。

1.2.2 gdb查看该线程的栈的状况

通过下面的步骤查看线程栈的状况:

gdb attach 13623

info thread (看到13791的线程在gdb里显示的id为188)

thread 188  (切换到这个线程)

backtrace   (Print backtrace of all stack frames)

 

                       Figure-4

如图Figure-4所示,这个线程是个vcpu线程,通过ioctl(kvm_vcpu_ioctl)进入虚拟机运行状态,处于VM_Entry,说明guestos一直在忙。

1.2.3 查看下物理cpu的负载状况

    通过sar命令同样可以查看cpu的负载状况:  

sar -P ALL 2

sar -u 2

 

            Figure-5

 

                       Figure-6

对比Figure-1、Figure-5、Figure-6,CPU核的占用率,整体的负载状况,与top

命令的结果基本一致。

1.2.4 查看guestos状况

guestos里,通过top命令查看哪个进程在使用CPU:

ps -aux | grep -i 13623  (该进程号对应的虚拟机名称为:instance-000006f2;

或者在top过程中,按c键,会显示进程的命令行信息,该进程的虚拟机名称也可以

看到。

virsh vncdisplay instance-000006f2 (该虚拟机的vnc端口为:8),vnc客户端

连接访问该虚拟机

top -d 1查看进程状况,如Figure-7所示,一个名为wnTKYg的进程100%在使用

cpu。用pkill wmTKYg杀死该进程,cpu占有率马上就下降了。

 

                          Figure-7

1.3 解决问题

网络搜索后,了解到这个wnTKYg的程序,原来是个挖矿的木马病毒,利用系统的漏洞

侵入系统。

下面链接是解决该问题的经验,实验后问题得到解决。嘿嘿嘿嘿

http://blog.csdn.net/jay_1989/article/details/78468127

http://www.codingblog.cn/blog/8854.html

不过这个木马是通过哪个端口侵入系统的,源头还没有找到,嘟嘟嘟嘟


猜你喜欢

转载自blog.csdn.net/somyjun/article/details/79584522