sudone.com 服务器系统架构分析日志
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
这样统计就准确了。
站名:sudone.com; 站长:Ayou; 服务器:ubuntu+nginx+squid+php
分享到:
相关推荐
本资源"Linux下编程的三个重要工具(ZT)"似乎提供了一些关键工具的介绍,虽然具体细节未在描述中详述,但我们可以根据常见的编程工具来探讨这三个可能的重要工具。以下是Linux编程中经常使用的三大工具的详细讲解:...
这份中文手册详细地介绍了ZT411和ZT421的操作、维护以及常见问题的解决方法,对于用户来说是一份非常重要的参考资料。 一、打印机概述 ZT411和ZT421是斑马技术公司推出的一系列高级热转印桌面打印机,具备高速打印...
这篇博客文章"Apache自动启动及添加为Linux的服务 ZT"似乎提供了一个比标准方法稍微改进的shell脚本来实现这个目标。下面将详细解释这个过程。 首先,确保Apache已经安装在你的Linux系统上。你可以通过运行以下命令...
《ZT213/ZT213LEEA:低功耗RS232多通道USB收发器/驱动器芯片详解》 ZT213/ZT213LEEA是一款专为低功耗应用设计的RS232多通道USB收发器和驱动器芯片,广泛应用于数据通信、工业控制、物联网设备等领域。本文将深入...
“ZT Linux登录器”可能是一个定制化的系统,专为特定用户群体设计,比如游戏服务器或者社区平台。"pilotmds"可能是开发团队的名字或产品代号,它可能在整个登录器中扮演着核心组件的角色,负责处理用户认证、权限...
斑马(Zebra)ZT230条码打印机是一款广泛应用在工业环境中的高效设备,其驱动程序是确保打印机正常工作的重要组成部分。本驱动程序专为Zebra的ZT210、ZT220及ZT230系列打印机设计,提供了全面的功能支持,以实现高...
本用户指南旨在为Zebra ZT210/ZT220/ZT230打印机的用户提供操作和维护指南,该设备是一种工业级的条码打印机,具有高速打印、高速处理和高质量打印输出等特点。 版权信息 本手册的版权和这里描述的打印机软件和/或...
斑马(Zebra)ZT410是一款先进的桌面级条码打印机,被广泛应用于物流、零售、医疗、制造业等多个行业。这款打印机以其高效、耐用和易于操作的特点深受用户喜爱。"斑马zt410中文库"指的是为ZT410打印机特别设计的中文...
ZT7548是一款第五代电容式触控屏幕控制器,支持30x18或18x30的通道配置,可以同时检测最多10个触点。该控制器能够与最多8个键与TSP(触控屏面板)或FPC(柔性印刷电路板)模式一起工作,在多点触控时无扫描率下降的...
ZT410打印机IP地址设置网络打印机ZT410打印机IP地址设置网络打印机ZT410打印机IP地址设置网络打印机ZT410打印机IP地址设置网络打印机ZT410打印机IP地址设置网络打印机
对于初学者来说,通过阅读和理解这些代码,可以更快地掌握ZT598键盘的使用方法。然而,由于调用过程可能较为复杂,开发者需要有扎实的嵌入式系统知识和编程基础,以便顺利地集成到自己的项目中。 压缩包内的...
斑马ZT510打印机驱动文件
- 碳带类型:ZT210和ZT230支持中心穿孔或边穿孔的碳带,材质有蜡基、混合基和树脂基,每种类型对应不同的耐用性和打印清晰度。 - 尺寸匹配:碳带的宽度应与介质相同或稍宽,长度则应足够覆盖所有打印需求。 - ...
在《ZT598命令集技术手册》中,每个指令通常会有详细的格式说明、参数解释以及响应格式,以便开发者正确地构造和解析通信报文。此外,文档可能还包含了实例代码和常见问题解答,帮助用户快速理解和应用这些指令。 ...
RS485通信芯片ZT13085E是一种常用的工业级串行通信接口芯片,主要用于构建远程、多节点的通信网络。在工业自动化、楼宇自动化、物联网设备等领域有广泛应用。ZT13085E的设计目标是提供一种高效、可靠的数据传输方式...
赠送jar包:zt-exec-1.9.jar; 赠送原API文档:zt-exec-1.9-javadoc.jar; 赠送源代码:zt-exec-1.9-sources.jar; 赠送Maven依赖信息文件:zt-exec-1.9.pom; 包含翻译后的API文档:zt-exec-1.9-javadoc-API文档-...
斑马打印机ZT210是一款专业的工业级条形码和标签打印机,广泛应用于物流、零售、医疗等行业的标签制作。以下是对如何设置和使用斑马ZT210打印机的详细步骤: 首先,我们需要安装电脑驱动。双击下载好的驱动程序文件...