1、 杀毒软件的运行。各类的杀毒软件通常加入了对网页、插件、邮件的随机监控,无疑增大了系统负担。建议尽量使用最少的监控服务。
2、 自己的软件程序运行。检查程序最大线程数是否足够,程序代码不够优化,如死循环,死锁。
3、 病毒、木马、间谍软件导致。往往是由于大量的病毒在系统内部迅速复制,造成CPU占用资源率据高不下。同时检查部分系统进程是否占用大量CPU,例如svchost。exe、Services。exe、explorer。exe等进程,最好检查清楚进程的运行路径是否有异常,正是因为这些进程的特殊性和重要性,使它更容易成为了一些病毒木马的宿主。建议用可靠的杀毒软件彻底查杀;
4、 一些不完善的驱动程序也可以造成CPU使用率过高,定期升级更新驱动。
5、 网络连接导致CPU使用率高,服务器对外提供访问服务时,系统将分配内存和少量CPU资源来为这些连接提供服务,当负荷过重,就会出现上述情况。同时也有可能受到网络攻击,消耗大量的系统资源导致CPU使用率高。
以上的就是关于服务器里的CPU占用很高是什么原因的内容介绍了。
问题定位及解决步骤:1、free -m 查看内存使用状态 ,发现free基本没了。-->怀疑是服务有内存泄漏,开始排查
2、使用top命令观察,开启的服务占用内存量并不大,且最终文档在一个值,且服务为java应用,内存并没达到父jvm设置上限。按top监控占用内存排序,加起来也不会超过物理内存总量。查看硬盘使用量,占用20%。基本排除虚拟内存占用过大的原因。--->排除服务内存泄漏因素,怀疑mysql和nginx,开始排查
3、因为top命令看 mysql占用内存也再可控范围,是否存在connection占用过多内存,发现并不会,设置最大连接数为1000,最多也不会超过几M。 nginx占用一直非常小。但每次最先被kill的基本都是nginx进程。所以排查,但发现无非就是openfiles数量啥的调整。发现也一切正常。且之前niginx可以正常使用的。
4、最为费解的就是 通过free -m 查看的时候 基本全是used,cache部分很少,free基本没有。但top上又找不到有哪些进程占用了内存。无解
5、注意到有两个进程虽占用内存不多,但基本耗光了100%的cpu。开始想着占cpu就占了,没占内存,现在是内存不不够导致进程被kill的,就没注意这点。
6、实在搞不定,重启服务器,重启了所有服务,服务暂时可用,回家。在路上的时候发现又崩了。忐忑的睡觉。
7、早上起来继续看,这次留意注意了下那两个占用高cpu的进程,kdevtmpfsi 和 networkservice。本着看看是啥进程的心态,百度了下。真相一目了然,两个挖矿病毒。
突然后知后觉的意识到错误原因:
1、cpu占用率高,正常服务使用cpu频率较高的服务最容易最内存超标。(因为在需要使用cpu时没cpu资源,内存大量占用,服务瞬间崩溃),然后看top发现刚刚已经占用内存的进程已经被kill了,所以没发现内存有高占用的情况。
2、后面的应用继续使用cpu时也会发生类似情况,倒是服务一个一个逐渐被kill。
问题点基本定位好了,解决问题就相对简单很多:
通过百度,google,常见的病毒清除步骤基本都能解决。这两个挖矿病毒很常见,大致记录下要点。可能所有病毒都会有这些基础操作。
① 首先,查看当前系统中的定时任务:crontab -l
我服务器上有四个定时下载任务 通过wget 和 curl 下载病毒文件,把异常的删掉。要不然删了病毒文件还是会下载下来
crontab -r,全部删除命令(或根据需求删除定时任务)
② 查找病毒文件 可以全部模糊搜索 清除, 但病毒文件基本都用了chattr +i命令 使用chattr -i filename 后再使用rm -f filename 。可删除
③ kill 病毒进程,但注意kill了可能马上就重启了。因为有守护进程,需要把病毒进程的守护进程也kill掉
④ 检查是否root用户被攻击,可能系统配置信息被更改。
⑤ 最好能理解病毒脚本,通过看代码看它做了些什么。针对脚本取修复系统。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)