ssh怎么看服务器的运行状态?先分清这四个维度
SSH查看服务器运行状态,核心是按“CPU、内存、磁盘、网络”四个维度分别用命令采集,再结合系统负载和进程状态综合判断,没有一条命令能显示全部状态。
连接进来之后,先确认系统整体负载
服务器慢不慢,第一眼要看负载均值,运行uptime命令,输出末尾会显示1分钟、5分钟、15分钟三个负载数值,行业共识认为,负载值长期超过CPU核心数(比如4核机负载超过4.0)就说明系统在超负荷运转,这时候SSH操作都会觉得卡顿。
连接命令本身没什么神秘感,ssh root@服务器IP输密码就能进去,但连接慢、敲命令延迟高,往往不是服务器性能问题,而是网络链路问题。
cpu使用率要看进程而不仅仅是百分比
top命令是查看CPU和内存状态的标配工具,进去之后默认按CPU占用率排序,第一行能看到整体使用率,第三行能看到CPU各个状态的时间占比。
- us(用户态):应用程序消耗的计算资源
- sy(内核态):系统调用和驱动消耗的资源
- wa(IO等待):磁盘读写等待CPU的时间,这个数值高说明磁盘是瓶颈
- st(被偷走的时间):云服务器上被宿主机调度占用的CPU时间,这个数值高说明云厂商超卖或者实例规格不够用
按Shift+P按CPU排序,按Shift+M按内存排序,这两个快捷键是排查高占用进程的利器,top输出里的LOAD数值和CPU百分比是两回事:LOAD包含等待态的进程,CPU百分比只看实时计算量,如果你用云服务器,CPU核数越多能承受的LOAD越高,别拿单核标准去卡8核机器。
内存不够用比CPU满更麻烦
free -h命令查看内存,注意看available(可用量)这一列,别死盯used,Linux系统会尽量把空闲内存用作文件缓存,你看到used很高其实是缓存占了,真正需要的时候缓存会自动释放。
内存不足时系统会启用swap交换空间,一旦swap被大量使用,服务器性能会断崖式下降,你可以用vmstat 1 5连续采样看si和so两列,这两个数值持续大于0说明内存确实不够用了。
排查哪个进程吃内存,用ps aux --sort=-%mem | head -20这条组合命令,直接列出内存占用前20名,想精确看某个进程,就ps aux | grep java这类过滤命令。
linux查看服务器负载情况命令:uptime、top、free组合拳
磁盘空间和IO瓶颈的定位方式
df -h查看磁盘空间剩余,inode耗尽也会导致服务器无法写文件,用df -i单独检查,但这只能回答“还有没有空间”,回答不了“磁盘快不快”。
判断磁盘性能用iostat命令(需要安装sysstat包),重点看%util这一列,这个值接近100%说明磁盘已经满负荷运转,这时候数据库查询、日志写入都会排队,处理过WordPress站的运维都有体会,访问量稍涨磁盘IO先扛不住,CPU和内存反而还好。
系统运行时长和版本信息
uptime还顺带显示系统已运行时间,能看到服务器多久没重启过。cat /etc/os-release查看操作系统版本,排查软件兼容性问题时先确认这个。
网络连接状态和端口监控
网络层面的核心操作是监控端口和连接数:
ss -tunlp列出所有监听端口及对应进程,排查端口被占用、新服务是否启动成功ss -s汇总网络连接统计,TIME_WAIT连接数积压太多会拖慢新连接建立- 查看实时带宽占用,用
nload或iftop,这俩需要额外安装,但比cat /proc/net/dev直观得多
对外访问是否正常,用ping -c 4 网关IP测内网连通性,用curl -I https://目标网站测试外网链路。
ssh连接服务器卡顿怎么排查:按这三个顺序来
第一步:区分是网络问题还是机器问题
连接卡在输入密码之前,大概率是公网带宽拥堵或者被防火墙拦截,多花点时间观察规律:是否晚高峰卡、是否从某地域连接才卡,考虑使用国内服务器运维时,地域节点选择很关键,比如你的用户都在华东,服务器放华北和放东京延迟体感完全不一样。
第二步:登录后看系统资源占用
连上来之后按上面说的方法看top、free、df,多数情况下,卡顿的根源是某个应用吃满了CPU或磁盘IO,比如Web服务被刷流量、日志文件膨胀、数据库慢查询堆积。
第三步:查登录会话和异常进程
谁登录过服务器、执行过什么命令,这个容易被忽略,用last查看登录历史,用history看当前用户的命令历史,再配合ps aux过滤检查有没有陌生进程。
安全建议:如果你发现服务器被暴力破解、SSH端口被人扫,顺手把/etc/ssh/sshd_config里的PermitRootLogin改成no,然后systemctl restart sshd重启SSH服务,靠谱的云厂商一般自带安全组和入侵检测告警,遇到异常登录会有短信通知,这是排查服务器被黑的重要线索来源。
云服务器性能监控工具与命令行对比:谁更实用
生产环境排查问题时,SSH命令行的优势是直达底层、没有额外开销,具体如下:
命令行工具
- 优势:无需安装额外依赖,轻量,操作即时,适合快速定位
- 劣势:只能看到当前瞬间的状态,历史趋势不完整
云厂商控制台监控
- 优势:有历史曲线,能看一周甚至一个月的数据变化趋势
- 劣势:监控数据有几分钟延迟,部分指标需要付费开启
面板类工具(宝塔等)
- 优势:图形化展示简单直接,适合新手操作
- 劣势:自身占用系统资源,部分功能开启后会有安全隐患
这里建议你两条腿走路:日常用命令行摸清服务器脾气,持续监控和告警交给云监控存历史数据,如果你用的是性价比高的国内云厂商活动机,尤其要注意控制台自带的“云监控”是否在免费额度内,部分低价机型可能不包含基础监控告警。
一份可执行的服务器状态检查清单
每次SSH登录后,按以下顺序依次敲命令:
uptime看负载均值是否超过核数free -h看available是否吃紧df -h看根分区和业务分区是否快满top然后按Shift+P盯3秒,看CPU占用最高的进程ss -tunlp确认关键端口都在监听journalctl -xe拉最近系统日志,有错误会直接显示
这套流程30秒内能跑完,适合每天早上巡检一遍,或者在用户反馈“网站打不开”时第一时间执行。
常见问题解答
ssh登录后怎么看服务器是不是被攻击了?
运行last查看近期登录IP是否有陌生地址,用ss -tunlp检查是否开放了不在预期内的端口,再用ps aux过滤高CPU进程,如果发现异常进程但删不掉,先看进程PID,然后ls -l /proc/PID/exe确认可执行文件位置,不要贸然kill,先断网保守处理。
top命令里显示的load average高就一定是坏事吗?
不一定,多核服务器能承受的LOAD阈值是“核数×1.0”,4核机器LOAD到3.9仍然算正常,还有种情况是磁盘IO等待让进程排起长队,此时load高但CPU利用率并不高,需要看wa列来区分是CPU瓶颈还是磁盘瓶颈。
轻量应用服务器和云服务器ECS看状态有什么区别?
轻量应用服务器可以理解为买了个“带装修的房”,云服务器是“毛坯房”,轻量服务器通过SSH看到的内核指标和ECS完全一致,但资源配额、带宽上限这类维度控制台才能看到,比如流量配额耗尽导致的网卡限速,SSH里看CPU和内存都正常,但就是连接特别慢,这种场景需要登录云厂商控制台确认不是流量用超了。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/794059.html


