运维网站、接口服务或数据库时,很多人都会碰到这个问题:云主机怎么查看连接数值?服务器突然变慢、CPU飙高、带宽异常,或者用户反馈页面打不开,连接数通常都是要先确认的指标。

不过“连接数”不是一个单独的数。它可能是TCP连接总量,也可能是某个端口的连接数、某个来源IP的会话数,或者Nginx、MySQL、Redis这类服务自己的连接指标。对象没分清,命令敲出来也未必能说明问题。
排查前先确认你到底要看什么。
- 系统层连接数:主机当前建立了多少网络连接,适合先判断有没有连接堆积、高并发冲击或异常访问。
- 某端口连接数:比如80、443、3306当前有多少连接,用来对应Nginx、Apache、MySQL这类服务。
- 某IP连接数:看是不是某个来源IP请求特别多,排查恶意爬虫、CC攻击或异常脚本时很常用。
- 应用层连接数:例如Nginx活跃连接、MySQL已使用连接、Redis客户端连接数,这些更接近业务状态。
- 云平台监控里的连接指标:有些控制台能看到趋势图,但粒度通常不如系统命令细。
查云主机怎么查看连接数值时,别急着统计总数。先确认你看的是主机整体、某个端口、某个服务,还是某个外部来源。
Linux云主机查看连接数值,常用命令就这几类
大多数云主机都是Linux环境,实际排查时还是以命令行为主。先看总量,再看端口和状态,基本就能把范围缩小一大截。
用 netstat 快速看当前连接
想先知道云主机当前建立了多少TCP连接,可以用
netstat -an | grep ESTABLISHED | wc -l
这个结果是当前处于ESTABLISHED状态的连接数,也就是已经建立完成、正在通信的连接。很多人问云主机怎么查看连接数值,实际先要的就是这个数。
如果只想看某个端口,例如80端口
netstat -an | grep :80 | wc -l
要看某个IP发起了多少连接
netstat -an | grep 192.168.1.10 | wc -l
netstat的好处是直观,很多老系统上也顺手就能用。问题也很明显:部分新系统默认没装,而且连接数很高时,效率一般。临时看一眼可以,长期排查更建议换成ss。
用 ss 替代 netstat 更省事
现在更常见的是ss,速度快,输出也更适合新版本Linux。
查看已建立连接数
ss -ant | grep ESTAB | wc -l
查看80端口连接数
ss -ant | grep :80 | wc -l
直接看连接状态分布
ss -s
ss -s很适合先做总览。除了总连接数,它还会把TCP状态分开列出来,比如ESTAB、TIME-WAIT、CLOSE-WAIT。很多时候,是某一种状态堆得不正常。只盯一个总数,很容易误判。
看监听端口和对应进程
如果已经怀疑某个服务有问题,先确认它到底在不在正常监听
ss -lntp
这条命令能看到当前监听端口和对应进程。比如80、443是不是Nginx在监听,3306是不是MySQL在监听。监听正常,再去统计端口连接数,信息才对得上;不然你统计了半天,可能查的根本不是出问题的服务。
网站服务的连接数,不能只看系统总量
如果云主机主要跑网站或API,只看TCP总连接数不太够。业务受影响时,更有参考价值的通常是Web服务自己的活跃连接、请求处理状态和等待情况。
Nginx怎么查
如果Nginx开了status模块,可以直接看状态页。常见几个值
Active connections:当前活跃连接数
Reading:正在读取请求头
Writing:正在向客户端返回响应
Waiting:处于等待中的空闲长连接
这组数据比系统层“总连接”更接近真实业务状态。比如连接数看起来很高,但Waiting占比也高,往往说明大量是Keep-Alive长连接,不一定就是故障。反过来,如果Writing一直高,响应又慢,就要怀疑后端处理跟不上了。
Apache怎么查
Apache通常通过server-status看当前请求处理情况,重点留意BusyWorkers和IdleWorkers。BusyWorkers长期逼近上限,同时系统连接数还在涨,说明服务处理能力已经很紧张。这个时候单纯加大连接上限未必能解决问题,还得看后端程序、数据库或者磁盘I/O有没有拖慢响应。
数据库连接数值怎么查看
很多场景里,大家问的是“云主机怎么查看连接数值”,实际卡住的是数据库。业务高峰一来,连接池配置不合适、连接释放不及时,就很容易碰到连接耗尽。
MySQL连接数
登录MySQL后执行
show status like ‘Threads_connected’;
这个值表示当前打开的连接数。再查一下最大连接上限
show variables like ‘max_connections’;
如果Threads_connected长期逼近max_connections,就不能只看表面数字了。要继续分辨:是业务访问真的上来了,还是程序没有复用连接、连接回收太慢,或者慢SQL把连接占住了。很多“数据库突然连不上”的问题,最后都是连接被占满。
Redis连接数
Redis可以执行
info clients
重点看connected_clients。如果这个值一直高,常见方向有两个:应用在频繁创建短连接,或者代理层配置有问题。Redis本身处理快,但连接建立和释放如果很乱,照样会把问题放大。
云平台控制台能不能直接看
不少云平台控制台会给CPU、内存、带宽、网络包量这些监控图,但“连接数值”不一定默认就有。有些要靠监控插件,有些只能看到比较粗的会话趋势,或者负载均衡后端连接数。
如果你只是想先判断服务器是不是在承压,控制台图表已经够用;但如果你要精确回答云主机怎么查看连接数值,还想知道到底是哪个端口、哪个IP、哪种连接状态异常,还是得进主机里查。
一个很常见的排查场景:网站变慢,连接数怎么用
比如一台4核8G云主机,跑的是Nginx+PHP+MySQL。活动期间页面明显变慢,但CPU只有70%左右,没有完全打满。这种情况先看连接。
先执行ss -s,如果发现TCP连接总量明显升高,再看状态分布。假设TIME-WAIT很多,说明短连接请求可能很密。接着看80和443端口连接数,发现HTTPS连接涨得更快。再去查Nginx状态页,如果Waiting很多、Writing不高,说明前端长连接占了不少,但真正正在返回内容的请求没那么多。最后查MySQL,发现Threads_connected已经快碰到max_connections。
这种组合信息就比较清楚了:活动页触发了大量短请求,应用侧数据库连接复用不足,MySQL连接很快被占满;同时前端Keep-Alive还在,Nginx活跃连接看起来也高。表面上像是“网站连接数爆了”,实际是数据库连接先成了瓶颈。
这个场景里,单看系统总连接数不够,单看MySQL也不够。系统连接、Web连接、数据库连接要连起来看,才知道问题卡在哪一层。
看到连接数高,别急着下结论
连接数高不一定等于故障,先判断它是短时波动,还是持续堆高。
- 看持续时间:瞬时高峰很常见,尤其是活动、爬虫抓取、批量任务触发时。持续高位更危险,说明请求消化不过来或者连接没及时释放。
- 看状态分布:TIME-WAIT多,常见于短连接频繁;CLOSE-WAIT多,常要怀疑程序关闭连接不及时;SYN-RECV偏多,则要留意半连接堆积或异常流量。
- 看端口集中在哪:连接都堆在80/443,大概率先看Web层;堆在3306,就优先查数据库;端口分布很散,再考虑是否有异常扫描或别的服务被牵连。
- 看是不是单一IP触发:如果某个IP连接特别高,要先确认是合法业务来源、内部服务调用,还是恶意请求。别一上来就封,先看访问路径和时间段。
- 对照应用日志:502、504、数据库连接失败、连接超时,这些报错和连接数变化能不能对上,决定你后面该看Web、程序还是数据库。
排查连接异常时,几个实用提醒
- 先看总览,再往下钻:先用ss -s看总量和状态,再查具体端口、具体服务。上来就翻日志,容易绕远。
- 别把连接数当成唯一根因:连接变高,有时只是结果。磁盘慢、数据库慢、接口超时,都会让请求挂着不结束,连接自然越来越多。排查时最好和top、sar、iostat一起看。
- 高峰期数据要留住:很多故障恢复得很快,事后再查什么都正常。可以用定时脚本把ss、netstat或服务状态页定期落盘,至少能留下高峰时段的数据。
- 长连接参数要结合业务看:Web、数据库、代理层的超时设置都会影响连接数。Keep-Alive时间过长,Waiting会很多;数据库空闲连接回收太慢,也会把上限吃掉。
- 监控告警要提前做:等用户报错了再手工登录查,通常已经晚了一步。给总连接数、关键端口连接数、MySQL连接使用率设阈值,排障会省很多时间。
回到题目,云主机怎么查看连接数值,并不是记住一条命令就结束了。Linux主机上常用的是netstat和ss;如果查网站,要结合Nginx或Apache状态页;如果怀疑数据库,还要同时看MySQL、Redis这类应用层连接。
连接数本身只是线索。排查时先分清连接类型,再把系统、服务和数据库的数据对着看,查出来的就不只是一个孤零零的数字,而是能直接拿来定位故障的依据。
内容均以整理官方公开资料,价格可能随活动调整,请以购买页面显示为准,如涉侵权,请联系客服处理。
本文由星速云发布。发布者:星速云小编。禁止采集与转载行为,违者必究。出处:https://www.67wa.com/301528.html