ssh登录很慢时排查
1、检查系统资源
top
htop
dmesg | tail
2、排查初始化文件 & 测试登录
systemctl status sshd
time ssh user@host ‘exit’
3、检查系统日志
sudo tail -f /var/log/secure
sudo tail -f /var/log/auth.log
4、立即检查网络连接状态
(1)查看当前所有的网络连接情况,看看数量是否异常:
netstat -an | wc -l
netstat -tunp | awk '{print $7}' | cut -d'/' -f1,2 | sort | uniq -c | sort -rn | head -10
(2)顶部会直接显示总连接数
ss -s
(3)检查内核网络参数
# 检查系统允许的本地端口范围 sysctl net.ipv4.ip_local_port_range cat /proc/sys/net/ipv4/ip_local_port_range # 检查 socket 相关内核参数 sysctl net.core.somaxconn sysctl net.core.netdev_max_backlog sysctl net.ipv4.tcp_max_syn_backlog
(4)临时增加限制(治标)
# 增加最大 socket 缓冲区内存 echo 'net.core.wmem_max = 12582912' >> /etc/sysctl.conf echo 'net.core.rmem_max = 12582912' >> /etc/sysctl.conf # 增加待处理连接队列的最大长度 echo 'net.core.somaxconn = 1024' >> /etc/sysctl.conf echo 'net.core.netdev_max_backlog = 2000' >> /etc/sysctl.conf # 使配置立即生效 sysctl -p
(5)查找建立了大量连接的进程:
# 使用 ss 或 netstat 统计
ss -tnp | awk '{print $6}' | grep -vE '(Peer|Address)' | sort | uniq -c | sort -nr | head -10
# 或者使用更直观的 lsof (如果没有请安装 yum install lsof)
lsof -n -i | awk '{print $1,$2,$3,$8,$9}' | sort | uniq -c | sort -nr | head -20
(6)重启 SSH 服务
systemctl restart sshd
(7) Socket 内存使用情况(内核层面)
# 查看内核为所有 socket 分配的内存情况
cat /proc/net/sockstat
(8)按状态筛选 Socket(发现异常状态)
# 查看所有TCP连接的各种状态数量分布 (这是非常强大的诊断命令)
ss -t -a | awk '{print $1}' | grep -vE '(State|Address)' | sort | uniq -c | sort -rn
# 查看所有LISTEN(监听)状态的端口,检查是否有不熟悉的异常服务
ss -tlnp | head -20
# 查看所有ESTAB(已建立)状态的连接,看主要和哪些IP通信
ss -tn | grep ESTAB | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -10
(9)sar 查看历史数据
(1)分批查看不同的网络统计
# 1. 先查看网络设备错误 (EDEV)
sar -f /var/log/sa/sa21 -n EDEV -s 18:00:00 -e 18:30:00
# 2. 查看 socket 统计 (SOCK)
sar -f /var/log/sa/sa21 -n SOCK -s 18:00:00 -e 18:30:00
# 3. 查看丢包统计 (EDISC)
sar -f /var/log/sa/sa21 -n EDISC -s 18:00:00 -e 18:30:00
(2) 查看CPU整体使用率(默认选项)
sar -f /var/log/sa/sa21
# 查看每个CPU核心的详细使用情况
sar -P ALL -f /var/log/sa/sa21
# 查看CPU中断和上下文切换
sar -I SUM -f /var/log/sa/sa21
# 查看CPU运行队列长度和负载平均值
sar -q -f /var/log/sa/sa21
(3)查看物理内存和交换空间使用情况
sar -r -f /var/log/sa/sa21
# 查看系统交换活动(swap in/out)
sar -W -f /var/log/sa/sa21
# 查看内核分页统计
sar -B -f /var/log/sa/sa21
# 查看内存使用率(包括缓存和缓冲区)
sar -r ALL -f /var/log/sa/sa21
(4)查看所有块设备的I/O统计
sar -d -f /var/log/sa/sa21
# 查看磁盘使用率统计
sar -d -p -f /var/log/sa/sa21 # -p 显示更友好的设备名
# 查看特定磁盘(如sda)的统计
sar -d -p -f /var/log/sa/sa21 | grep sda
# 查看文件系统inode使用情况
sar -v -f /var/log/sa/sa21
(5)进程和任务调度监控
# 查看进程创建和上下文切换
sar -w -f /var/log/sa/sa21
# 查看系统负载和运行队列
sar -q -f /var/log/sa/sa21
# 查看任务创建速率和调度统计
sar -w -f /var/log/sa/sa21
# 查看所有网络接口的流量统计
sar -n DEV -f /var/log/sa/sa21
(6)查看网络错误统计
sar -n EDEV -f /var/log/sa/sa21
# 查看NFS客户端统计(如果使用NFS)
sar -n NFS -f /var/log/sa/sa21
# 查看NFS服务端统计
sar -n NFSD -f /var/log/sa/sa21
(7)特殊功能监控
# 查看大页(Hugepage)使用情况 sar -H -f /var/log/sa/sa21 # 查看电池状态(笔记本适用) sar -m -f /var/log/sa/sa21 # 查看USB设备活动 sar -u USB -f /var/log/sa/sa21
(8)使用sar -q查看历史负载和队列数据
# 查看今天(21号)全天的队列和负载历史
sar -q -f /var/log/sa/sa21
(9)对比不同时间段
# 对比今天和昨天同一时间的CPU使用率
sar -f /var/log/sa/sa21 -s 14:00:00 -e 14:30:00 | grep Average
sar -f /var/log/sa/sa20 -s 14:00:00 -e 14:30:00 | grep Average

浙公网安备 33010602011771号