背景

某项目服务器响应慢,cpu严重超负荷运行,并且有大量的netstat进程,如图:

进程由oracle用户启动,说明是通过oracle用户并非root用户启动。

排查

这种情况,第一直觉就是中毒了,大概率是挖矿程序,Linux中毒第一步就是排查是否有cron记录,大部分病毒都是通过cron进行自启动,cron还能保证进程关闭后能够再次启动,达到死而复生的目的。crontab -l命令显示果然有病毒的定时任务程序脚本

Read the rest of this entry

背景

某项目生产环境负载过高,现象为系统响应慢,命令执行卡顿甚至无法通过ssh登录到服务器。

排查

uptime出系统当前负载情况

# uptime
 16:09:11 up 38 days,  5:40,  2 users,  load average: 73.33, 73.72, 73.66

uptime是检查当前系统负载情况非常重要的命令,它显示了当前操作系统从开机到当前运行了多长时间,当前有几个登录用户,最重要的是告诉我们当前系统的负载情况(load average),三个数字表示了系统在1分钟内,5分钟内,15分钟内的负载情况,平均负载表示当前系统平均运行的线程数,这些线程包括正在运行线程(runnable)和不可中断(uninterruptable)线程,正在运行线程表示当前正在使用CPU或者等待使用CPU的线程,不可中断线程指当前在等待IO的线程,比如当前正在读取文件线程,这样解释可能比较难懂,简单说

  • 对于一个CPU系统,如果负载是1,表示当前CPU使用率是100%,如果超过1表示当前处于超载状态,有线程需要等待。
  • 对于多核CPU系统,如果CPU个数是N,那么负载如果=N表示所有的CPU使用率都处于满载状态,如果>N表示处于超载状态,如果

Read the rest of this entry