大晚上的,在床上躺着,突然腾讯云给我发个消息和邮件,如下:
吓我一跳,定睛一看,端口6379,不是radis的默认端口吗?前些阵子写项目就用自己的服务器搭了一个radis服务器,不会被黑了吧?百般纳闷,反正说是24小时内,不管,先睡觉
早上爬起来,想用Xshell登录一下服务器看看,结果死活登不上,再在控制台看看,结果还是登不上,心想:完了,不会真被黑了吧?用腾讯云自动实例检测,提示CPU近期占有率高达92%,但是我在服务器中就挂了一个radis和nginx,有鬼!我最后用VNC登录方式成功登录,书到用时方恨少,Linux的运维命令又忘了不少,下面记记Linux问题排查的命令吧
查看CPU状态:
top
分析进程 根据任务管理器中的进程,分析与排查问题,以采取对应解决方案。
如果是业务进程占用了大量 CPU 或内存资源,分析业务程序是否有优化空间,进行优化或者升级服务器配置。 如果是异常进程占用了大量 CPU 或内存资源,则可能中毒,需要自行终止进程或者使用安全软件进行查杀,必要时考虑备份数据,重装系统。
例如:
Top 命令的输出信息主要分为两部分,上半部分显示 CPU 和内存资源的总体使用情况:
第一行:系统当前时间,当前登录用户个数以及系统负载。 第二行:系统总进程数、运行中进程数、休眠、睡眠和僵尸进程数量。 第三行:CPU 当前使用情况。 第四行:内存当前使用情况。 第五行:Swap 空间当前使用情况。 下半部分以进程为维度显示资源的占用情况:
PID:进程 ID。 USER:进程所有者。 PR:进程优先级 NI:NICE 值,NICE 值越小,优先级越高。 VIRT:使用的虚拟内存大小,单位 KB。 RES:当前使用的内存大小,单位 KB。 SHR:使用的共享内存的大小,单位 KB。 S:进程状态。 %CPU:更新时间间隔内进程所使用的 CPU 时间的百分比。 %MEM:更新时间间隔内进程所使用的内存的百分比。 TIME+:进程使用的 CPU 时间,精确到 0.01s。 COMMAND:进程名称。
- 分析占有率异常的进程,记下第一个字段PID
- 输入k
- 输入需要终止进程的 PID ,按 Enter
流量检测小工具:
如下命令
yum install iftop -y
yum install lsof -y
安装好后,执行如下命令:
iftop
<=、=> 表示流量的方向 TX 表示发送流量 RX 表示接收流量 TOTAL 表示总流量 Cum 表示运行 iftop 到目前时间的总流量 peak 表示流量峰值 rates 分别表示过去2s、10s和40s的平均流量
根据 iftop 中消耗流量的 IP,执行以下命令,查看连接该 IP 的进程。
lsof -i | grep (你要看的那个ip)
然后就可以查询那个异常IP的归属地: 归属地查询
查看指定端口:
netstat -anp | grep 3306 #3306是你要查询的端口号
监控状态为LISTEN表示已经被占用,最后一列显示被服务mysqld占用,查看具体端口号,只要有如图这一行就表示被占用了
如下命令可以查看所有端口:
netstat -nultp
综上,你需要找到异常端口,然后想办法关闭它 如下,先查询6379端口
lsof -i:6379
然后kill它
kill -9 PID