linux 服务器执行命令异常慢

# 注意
本文章,是针对于服务器执行命令异常慢,且开放的服务不能正常提供功能
并不是
针对于服务器中,java项目启动异常慢,这个问题,在我的其他文章里面有描述


# 情景
昨天上服务器的时候,登录都特别的慢,而且前端反映gitlab提交不了代码,显示502
等我登录服务器之后,竟然执行ls命令,都要等一会,简直不能忍,按照之前一般重装了
这么多代码,重新搞,很费时,而且好不容易遇到这个问题,绝不能放过


# 场景复现
1. 先使用w命令,查看系统负载 (如下图所示)

2. 同样也可以使用uptime查看系统平均负载 (如下图所示)
   注: 这里的数值偏小,是由于本文是解决问题之后做的记录,当时没有截图
       具体的数字,大致和通过w命令运行的结果相差无几

3. 当时查看内存也是充足的 (如下图所示)

3.1 可见此时内存buff/cache区域数值较大,我们可以处理下
    这个地方,可能会造成gitlab的502问题

    执行命令:sync && echo 3 > /proc/sys/vm/drop_caches
    效果如下图所示

4. 查看系统总体的上下文切换情况 (cs(context switch)是每秒上下文切换的次数)

5. 查找R或D状态的进程
   注:R: 可运行状态(Running或Runnable)

      D: 不可中断状态(Uninterruptible Sleep,也称为 Disk Sleep)

这里多说一些,我这边主要是由于项目当中设置了定时任务,每秒将日志文件同步到指定目录
所以,执行当前命令后,出现了一堆任务,导致CPU频繁的切换上下文去执行,大量的进程堆积

命令如下:ps aux | awk '{if($8 ~ /R|D/) print $0 }'

6. 显示当前服务器所有运行中的进程 (可参考命令)
   ps aux | less
7. 其他命令

7.1. 查看占用CPU资源最多的10个进程
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head

7.2. 占用内存资源最多的10个进程
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head

7.3. 查看硬盘大小
df -h

7.4. 常用查看命令
top

7.5 查看当前服务器开放的进程端口
netstat -nutlp
8. 小结
上面的命令,主要是查看当前系统的异常值,以及异常进程

主要思想就是,查看当前服务器的磁盘,内存,CPU,负载等情况

影响的可能是:定时任务,代码因素等

最直接的办法还是杀进程,不过可以根据杀的进程,进一步的追踪,

到底是什么因素影响的

我这个是由于我每秒钟执行一次同步的定时任务堆积导致的

总之一句话,不要老想着装系统,不过重启服务器也是常规的解决方法
我这种是重启服务器都不好使的,所有问题,又因必有果,一定有方法可以解决

 

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值