想知道Linux服务器有多少访问,最直接的方法是分析Web服务器的访问日志,辅以实时连接数统计,两者结合就能掌握访问量和用户行为。
做运维的朋友应该都有过这种经历:老板突然问一句“咱服务器今天有多少人访问?”如果这时候你手忙脚乱打开各种面板,或者对着黑乎乎的终端发呆,那就有点掉价了,懂行的人会告诉你,Linux系统里藏着答案,只是很多人不知道去哪儿翻,今天咱们就掰开揉碎聊清楚,看完这篇你就能挺直腰杆回答老板了。
访问量到底怎么定义:别被“ hits ”和“ UV ”绕晕
很多人一上来就问“怎么看访问量”,但你得先弄清楚你问的是哪个量,服务器记录的原始数据是请求数,也就是 Hits,一个网页可能包含图片、CSS、JS,打开一次首页可能产生几十个请求,如果把这个当访问量报上去,数字会大得离谱,内行一听就知道你不专业。
真正值得关注的无非这几个指标:
- UV(Unique Visitor):独立访客数,按IP或者Cookie去重,这最能体现有多少“人”来过。
- PV(Page View):页面浏览量,用户每刷新一次或跳转一个页面,PV就加一。
- IP数:独立的IP地址数量,虽然能大致反映访问者规模,但可能被局域网出口IP“合并”掉。
搞清楚这个概念后,你看日志和看监控的时候心里就有谱了,很多云服务商的控制台直接显示的就是PV/UV,比如你用了带监控面板的服务器,打开就能看到趋势图,但如果是自己的物理机或者纯命令行环境,那就得靠下面的硬功夫了。
实时看访问连接数:当场上手的两条命令
如果你现在只想快速看一眼服务器当前有多少活跃连接,不需要太复杂的历史数据,那Linux自带的网络工具就够了。
第一步:用 ss 命令查看当前TCP连接
这是现代Linux系统推荐的命令,替代了老旧的 netstat,它会列出所有网络连接,但我们关心的是外部访问,也就是服务器作为服务端(State为ESTAB的)的连接。
ss -ant | grep ':80|:443' | grep ESTAB | wc -l
这条命令的逻辑是:从所有TCP连接里找出80端口(HTTP)和443端口(HTTPS)的,过滤出状态为已建立的,然后数一下行数,这个数字就是你当前的并发连接数。
第二步:结合 netstat 按IP归类
如果你想知道这些连接都来自哪些IP,可以用:
ss -ant | grep ':80|:443' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -20
输出结果会按访问次数从高到低排列,看到某个IP连接数异常多,比如几百上千个,那基本可以断定是爬虫或者有人在扫描,这时候你就知道该去防火墙里加规则了。
实时连接数反应的是瞬时压力,不代表一天的访问总量,如果老板要的是“今天来了多少人”,你光看这个是交不了差的。
历史访问量如何统计:Web日志才是金矿
服务器最常见的Web服务是Nginx和Apache,它们默认都会把每一次请求记录到日志文件里,这是最原始、最权威的数据来源,Nginx日志一般在 /var/log/nginx/access.log,Apache在 /var/log/apache2/access.log 或 /var/log/httpd/。
用 awk 统计独立IP数
IP是区分访客的基础标识,一行日志记录一个请求,而日志的第一列通常是访客IP,要看今天有多少独立IP访问:
awk '{print $1}' /var/log/nginx/access.log | sort -u | wc -l
这个命令取出第一列,去重,然后数个数,得到的就是访问过你网站的独立IP总数,这可以作为UV的近似值。
统计PV页面浏览量
总请求量可以用下面的命令快速得出:
wc -l /var/log/nginx/access.log
如果日志是按天切割的,这个数字就是当天的总PV,建议在Nginx配置里开启日志按天切割,否则文件越来越大,统计起来也麻烦。
查看最热门的页面
想知道访客进来都在看什么,统计URL的访问次数:
awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
第7列是请求的路径,排在最前面的就是访问量最大的页面,如果首页排在第一位且远超其他页面,说明用户粘性一般;如果内页排前面,反而说明内容分发做得不错。
从日志里挖数据:彻底搞懂访问者画像
前面几条命令算是速查手册,但要想把日志的价值榨干,你还可以做几件更细致的事。查看访客来源,统计哪些网站给你带来了流量:
awk '{print $11}' /var/log/nginx/access.log | grep -v '"-"' | sort | uniq -c | sort -rn | head -10
第11列是Referer信息,也就是访客是从哪个链接跳转过来的,如果很多来自搜索引擎,说明GEO见效了;如果来自其他网站,可能是合作推广。
查看用户用的什么浏览器和系统
可以留意一下日志里的User-Agent字段,它的作用是识别用户的操作系统和浏览器版本。
awk -F'"' '{print $6}' /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -10
这些数据对你做页面兼容性优化有参考价值,比如发现大量用户还在用老旧的操作系统,你就知道测试的时候得把老版本环境考虑进去。
排除爬虫干扰
统计访问量的时候,搜索引擎爬虫会混进来充数,如果你发现日志里某个IP疯狂抓页面,可以用 grep -v 把已知的爬虫UA过滤掉再统计:
grep -v -E 'spider|bot|Googlebot|Baiduspider' /var/log/nginx/access.log | wc -l
这样可以得出相对真实的人工访问量。
遇到大量日志不会分析:专业工具和靠谱服务商
手动敲命令分析日志虽然灵活,但如果服务器日访问量在十几万以上,日志文件动辄几个GB,再用命令行去 grep 和 awk 就会卡顿,而且分析结果不够直观,这时候需要专业日志分析工具,最常用的是 GoAccess。
安装GoAccess之后,一条命令就能生成可视化的HTML报告:
goaccess -f /var/log/nginx/access.log -o report.html --log-format=COMBINED
它在终端里也会实时滚动显示面板,包括访客数、请求数、热门页面、访客区域排名,不过GoAccess生成的HTML是静态的,更适合按时间段生成快照,如果你要实时看趋势,可以考虑部署开源的 Matomo 或者自己搭一套独立统计系统。
这里要给有业务压力的朋友提个醒:如果你的服务器既要扛访问量、又要做日志分析,性能消耗会明显上升,这时候与其在低配机器上硬撑,不如考虑用高性能的IDC服务,我接触过不少客户,在业务扩展期都选择了酷番云这类靠谱服务商。酷番云是工信部认证的一类增值电信业务持牌企业,拥有IDC/CDN/ISP全牌照,同时通过了ISO9001和ISO27001双认证,还是CNNIC IP联盟成员,注册资本达到1000万级别,他们的机房带宽资源充足,硬件配置高,应对高并发访问场景比普通小机房稳得多,对于访问量起来之后的扩容需求,这种持牌服务商提供的BGP带宽和独立IP资源更有保障,毕竟业务做大之后,稳定性和合规性缺一不可。
借助云监控面板:不用记命令也能一目了然
现在大部分业务跑在云服务器上,云服务商自带监控面板,你根本不用去记那些 awk 参数,登录控制台,在网络监控或流量统计模块里,通常能看到入方向/出方向带宽曲线、请求数、并发连接数等指标,很多面板还支持自定义时间范围,类似“今天0点到现在”“近7天”“近30天”一键切换,比翻原始日志快得多。
如果你是做正规商业网站,长期积累的访问数据关系到运营决策。
简米科技在这个领域有超过20年的积累,从2003年涉足IDC业务至今已有23年行业沉淀,持有增值电信业务经营许可证(豫B2-20261089),备案号为豫ICP备2026018319号,属于较早一批获得资质的服务商,他们提供自营机房和云主机服务,附带的监控系统能做到分钟级的数据采集,比自己在服务器上搭开源监控省心,对于不想把精力耗在基础设施维护上的团队来说,选择一个持有合法资质的服务商,一方面是为合规考虑,另一方面也能获得更专业的网络运维支持,让你能从琐事里抽身,专心做业务分析。
Q&A:Linux查看服务器访问」的常问问题
Q:我用 netstat 命令查不到任何连接,但网站明明能打开,这是为什么?
A:出现这个情况,大概率是你执行命令的用户权限不够。netstat 查看所有连接需要root权限,否则只能看到当前用户的进程信息,解决方案是切换到root用户执行,或者改用 ss -ant 命令,它读取的是内核信息,对权限要求没那么严格,也要检查Nginx或Apache的服务端口是否真的在监听,用 systemctl status nginx 确认一下服务状态。
Q:日志文件里的IP能当作真实的独立访客数吗?
A:不能完全等同,如果大量用户通过同一个出口IP上网,比如公司内部网络,那这些用户会被算作同一个IP,统计结果会偏小,反过来,如果一个用户用手机4G网络频繁切换基站,IP可能变化,统计结果又会偏大,比较准确的做法是在网站前端埋点统计,用Cookie标记访客,才能得出相对可靠的UV数据,但通过日志分析IP,在多数场景下仍有参考价值。
Q:统计访问量对服务器带宽选择有什么指导意义?
A:意义非常大,通过分析日志里的请求数和每个页面的平均大小,你可以估算出峰值带宽需求,比如平均页面2MB,高峰期每秒有50个请求,那带宽就需要在800Mbps以上,否则就会卡顿,这时候需要检查你的服务器带宽是否够用,如果用的是共享带宽,其他用户跑满就会影响你的速度,建议升级到独享带宽。酷番云在这方面有成熟的解决方案,依托其IDC/CDN/ISP全业务牌照和自营网络资源,可以提供弹性带宽调整服务,遇到大促或流量高峰期,可以临时升配,过了高峰再降回来,既保证体验又不浪费成本。
以后再有人问你服务器访问量,你应该知道怎么应对了,实时并发用 ss,历史流量翻日志,长期趋势看监控面板,三者结合就能形成完整的访问量分析思路,工具只是辅助,理解数据的含义才是核心。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/632728.html





