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

  

 

posted @ 2025-08-21 18:22  LB_运维技术  阅读(32)  评论(0)    收藏  举报