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
这样统计就准确了。
--------------------------------------------------------------------------------
分享到:
相关推荐
安全保密设计是系统架构设计的重要组成部分,包括网络安全、系统用户安全、防攻击机制、数据安全、应用服务器配置安全、文档安全和安全日志等方面的设计思想和实现方案。 10. 附录 附录是系统架构设计的重要组成...
此工具的核心目标是帮助管理员快速定位和分析系统运行过程中可能出现的问题,从而提高故障排查的速度和准确性。 2. 产品亮点 (1) 智能化收集展示:日志查看器能够实时同步收集系统内各类日志,并依据日志类型进行...
Linux 下架构日志服务器 一、原理 日志对于系统的安全来说非常重要,它记录了系统每天发生的各种各样的事情,...架构日志服务器可以帮助我们更好地管理多台服务器的日志,并实时地监测系统状态,监测和追踪侵入者。
可观测性的设计原则可以对系统进行健康检查、指标监控、日志管理和链路追踪,提高系统运维、管理和排错能力。自动化的设计原则可以实现系统的自动化部署、自动化扩展伸缩、自动化运维、持续交付和集成,有效减少人工...
系统架构图中,网络日志服务器接口是系统的核心组件之一,负责接收和处理来自网络的日志数据,并将其存储到数据库中。该接口需要满足一定的规范和要求,以确保系统的稳定运行和安全性。 二、接口功能 网络日志...
7. **日志服务器**:记录服务器活动,用于监控、调试和故障排查。 在部署方案中,根据成本和性能需求,可以选择单服务器部署(方案1),虽然成本较低,但可能牺牲一定的性能和扩展性。多服务器部署可以提供更好的...
在此基础上,对常用的系统日志分析方法进行改进,并提出一种基于KNN(K最近邻)算法改进型文本挖掘方法,设计出一个服务器日志安全预警系统架构,旨在提供对服务器系统的安全监管可行解决方案。 服务器日志是信息...
本资源"开发技术-硬件-服务器系统架构云的移植商品交易系统应用.zip"包含了对这一主题的深入探讨,主要文件为"服务器系统架构云的移植商品交易系统应用.pdf"。 在将商品交易系统从传统的硬件环境迁移到云环境中时,...
"三层架构机房维护日志系统"是一个基于三层架构设计的软件应用,主要用于管理和记录机房的日常操作日志。这个系统虽然在功能上可能相对简单,但它全面体现了三层架构的设计理念,旨在提高代码的可维护性、可扩展性和...
AWS无服务器架构适用于多种场景,比如后端逻辑的实现、事件处理引擎的构建、数据处理系统的设计等。由于无服务器架构具有无需运维服务器、持续扩展、按实际使用量计费等特点,它非常适合于需求波动较大或者开发周期...
游戏服务器架构是游戏开发中的核心组成部分,它负责处理玩家交互、游戏逻辑、网络通信以及数据存储等一系列关键任务。一个高效且稳定的游戏服务器架构对于提供流畅的游戏体验至关重要。下面将详细探讨游戏服务器架构...
- **7.4 新旧系统的分析和比较** - **7.4.1 遗留系统的评价方法** - 对现有系统的评估指标。 - **7.4.2 遗留系统的演化策略** - 逐步替换或完全重构的选择。 #### 第8章 系统分析与设计方法 - **8.1 定义问题...
因此,需要建立一个中央的日志管理服务器,来收集、存储和分析所有的日志记录,使系统管理员能够更好地管理和分析日志记录。 二、如何建立LINUX日志管理服务器? 在建立LINUX日志管理服务器时,我们需要选择合适的...
【基于MongoDB分布式集群架构的日志系统及分片方法】 MongoDB是一种流行的开源文档数据库,...通过对分片策略的优化,系统能够适应不断增长的数据量,同时保持高可用性和性能,为大规模日志分析和管理提供了强大支持。
### 日志管理和分析系统的设计与实现 #### 一、引言 随着信息技术的快速发展和互联网规模的不断扩大,网络系统变得日益复杂。这种复杂性不仅体现在网络结构上,也体现在网络应用和服务的多样性上。面对这样的挑战...
高性能服务器架构设计是IT行业中一个至关重要的领域,特别是在互联网服务、大数据处理以及实时通信系统中。本实例聚焦于构建能够处理大量并发连接的服务器,单机测试已经达到了惊人的3万个连接,这无疑是对服务器...