linux服务器每秒并发处理数的计算方法[2010-04-13 11:10:14]
--------------------------------------------------------------------------------
1、利用网络处理量计算。
计算参考公式:
并发 = connection established / min(server keepalive, server timeout)
翻译一下:
并发 = 服务器传输链接数 除以 服务器软件的keepalive设置和服务器软件的超时设置之间的最小值
这个公式算出来的数字是keepalive时间段内的平均值,比真实平均值要小一点,如果想找最大值就要设定keepalive为0或1,然后多探测几次。
connection established是服务器当前正在传输的链接,但是keepalive打开时,新建立的传输链接会一直存在直到keepalive/timeout关闭链接;客户端主动关闭链接的话connection established也会关闭,不过这种链接一般比较少,多数浏览器都是支持keepalive并遵守服务器配置的。
在linux查看connection established数字的办法是在命令行执行:
netstat -est|grep "connections established"|cut -d "c" -f 1
keepalive和timeout数字查看办法要查看web server软件的配置文件
注意:这个方法只能用于最前端的服务器或7层交换机,前端之后的服务器因为缓存或链接方式的原因往往是不准确的。
2、利用服务器日志计算
因为服务器每处理一个请求,都会在日志里留下一条信息,所以利用服务器软件的日志来计算是最准确的,但是是这种计算方式浮动也可能会比较大,需要取最大值计算。
首先在确定服务器软件有将所有请求写入一个日志文件里,并确保该日志文件正在不停记录。
为节省时间和服务器资源,把log文件的最后一万条记录拿出来统计,我就用nginx默认的main格式作个例子:
执行命令:
tail -10000 nginx.log | awk '{print $4;}' | sort | uniq -c
命令的意思是取log文件的最后一万条记录,然后用awk取得日志文件中表示时间的一列($4),接着再对该列进行一次排序,最后是用uniq把这一列相邻的重复行合并,并计算合并的条数。
其中先sort再uniq是一种安全的做法,以确保同一秒的日志先被归到一起,然后再合并,这样就不会有同一秒种的日志会被切成几段这样的现象。
可以得到输出:
23 [09/Sep/2008:20:26:02
26 [09/Sep/2008:20:26:03
17 [09/Sep/2008:20:26:04
20 [09/Sep/2008:20:26:05
...
70 [09/Sep/2008:20:29:43
61 [09/Sep/2008:20:29:44
45 [09/Sep/2008:20:29:45
37 [09/Sep/2008:20:29:46
2 [09/Sep/2008:20:29:47
在这些输出中,第一条记录和最后一条记录因为时间有可能被切断,所以是完全不可靠之信息,可以忽略。
如果输出少于10行的话,要扩大一下范围,修改tail -10000为tail -100000取最后十万条数据统计。
如果只需要看最大值,可以再用sort命令进行排序,并用head命令取出前10行记录:
tail -10000 nginx.log | awk '{print $4;}' | sort | uniq -c | sort -nr | head
awk命令是一个功能比较强的命令,在这里只用到最简单的awk '{print $4;}',意思是将日志每行按空格切分开,然后切出来的结果依次从左到右就是$1 $2 $3 ...,nginx默认的main日志时间字段刚好是$4,所以在这里拿$4来计算。如果是别的格式的日志,依照这个办法去找到列数:
就拿apache默认的日志来看,首先:
head -1 apache.log
得到类似以下的输出:
60.8.207.86 - - [09/Sep/2008:21:03:58 +0800] "GET / HTTP/1.0" 200 11141 "http://www.sudone.com" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
用awk按空格来切分开之后,60.8.207.86就是$1,$2和$3都是-,[09/Sep/2008:21:03:58是$4,这就是需要拿出来统计的。嗯,怎么apache的日志和nginx的一样的?现在才发现。
那命令也基本没什么变化,执行一下:
tail -10000 apache.log | awk '{print $4;}' | sort | uniq -c | sort -nr | head
注意,如果是在squid服务器后面的apache,则日志会变成这样:
60.8.207.86, 127.0.0.1 - - [09/Sep/2008:21:03:58 +0800] "GET / HTTP/1.0" 200 11141 "http://www.sudone.com" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
因为日志的第一个段:x_forwarded_for中含有空格,所以时间的段会在$3、$4或$5之间变化,从而不能确定,可以先用一次awk或cut以[这个符号切分一下:
tail -10000 apache.log | awk -F"[" '{print $2;}' | awk '{print $1;}' | sort | uniq -c | sort -nr | head
或
tail -10000 apache.log | cut -d"[" -f 2 | awk '{print $1;}' | sort | uniq -c | sort -nr | head
这样统计就准确了。
--------------------------------------------------------------------------------
分享到:
相关推荐
基于大数据的数据分析系统架构 作者:李超宇 来源:《中国新通信》2020年第01期 摘 要:随着"互联网+"时代的发展,人们已经从各种信息数据的使用和接收方变为数据的发 送方,基于大数据的应用日渐成熟,各种行业类型...
Linux下架构日志服务器.docx
产品的架构演化过程及部分互联网公司架构分析。 客户层:支持PC浏览器和手机APP。差别是手机APP可以直接访问通过IP访问,反向代理服务器。 前端层:使用DNS负载均衡,CDN本地加速以及反向代理服务; 应用层:网站...
日志查看器是一款系统日志集中展示工具,提供日志解析和分类显示功能。 产品亮点 ...采用模块化、可插拔架构设计,每类日志组件能够以模块化横向扩展,对不 同类别日志独立维护,具有灵活易用、可维护特征。
整理的高性能高并发服务器架构文章,内容预览: 初创网站与开源软件 6 谈谈大型高负载网站服务器的优化心得! 8 Lighttpd+Squid+Apache搭建高效率Web服务器 9 浏览量比较大的网站应该从哪几个方面...
数据库系统:用于保存用户信息数据、游戏积分数据、游戏系统运行状态数据,系统日志数据等数据。 中心服务器控制系统:用于向客户端提供全局配置,初始化数据使用。 服务器登陆控制系统:用于房间服务控制系统登陆...
实验的关键在基于LAMP架构下搭建NFS、...但是到数据库查看日志的话非常不方便,所以这就需要单独搭建一台rsyslog日志服务器,再安装一款loganalyzer图形化工具,极大地方便运维人员查看和分析其他服务器日志内容;
如何建立LINUX日志管理服务器.pdf
资源管理系统架构设计及开发-L1(入库 2051018 单选 以下哪个表空间不能设置为OFFLINE? 2051019 多选 资管系统基础功能批量导入数据,系统会对数据进行校验,校验内容是()。 2051020 多选 资管系统承载的家客驻地...
2014年给某家公司开发一套基于集群的后台日志分析系统,操作系统linux,开发语言c++。程序分为三部分,我保存的是属于自己开发的控制server,另外还有日志server和媒体处理server。另外还有一套基于php的xmlweb展示...
资源包含文件:设计报告word+服务端客户端源码+演示视频 ...以及系统管理员查看销售额日志。 详细介绍参考:https://biyezuopin.blog.csdn.net/article/details/122442390?spm=1001.2014.3001.5502
项目简介:在线考试系统,采用vue与springcloud微服务架构开发,前后端完全分离,json格式数据交互,全部由本人独立开发完成。目前项目已部署在本人的学生版阿里云centos7服务器上。 主要功能有:对班级和科目的...
实战搭建Linux远程日志服务器.pdf
它提供了对日志的简单浏览、搜索、基本分析和一些图表报告的功能。数据可以从数据库或一般的syslog文本文件中获取,所以LogAnalyzer不需要改变现有的记录架构。基于当前的日志数据,它可以处理syslog日志消息,...
登陆服务器发现原来是公司的HR系统日志造成的(插个话题:我们公司的HR系统都实施两年多了还没上线,且不说软件功能如何,服务太TMD差劲了,更可气的是软件顾问把系统的组织架构都实施错误了,造成公司的大部分模块...
基于Python开发网络运行日志收集整理系统设计与实现.pdf
模块包括:定时任务调度、服务器监控、平台监控、平台设置、开发平台、单点登录、Redis分布式高速缓存、会员、营销、在线用户、日志、在线人数、访问次数、调用次数、直接集群、接口文档、生成模块、代码实例、安装...
基于VMware下的Linux环境构建日志服务器.pdf
基于数据挖掘的服务器日志预警方法研究.pdf
BMC的主要功能 通过系统的串口进行访问 故障日志记录和 SNMP 警报发送 访问系统事件日志 (System Event Log ,SEL) 和传感器状况 控制包括开机和关机 独立于系统电源或工作状态的支持 模拟KVM 通过远程连接服务器的...