热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

linux服务器每秒并发处理数的计算方法

1、利用网络处理量计算。计算参考公式:并发connectionestablishedmin(serverkeepalive,servertimeout)翻译一下:并发服务器传输链接数除以服务器软件的keepalive设置和服务器软件的超时设置之间的最小值这个公式算出来的数字是keepaliv

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

这样统计就准确了。


推荐阅读
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • Apache Shiro 身份验证绕过漏洞 (CVE202011989) 详细解析及防范措施
    本文详细解析了Apache Shiro 身份验证绕过漏洞 (CVE202011989) 的原理和影响,并提供了相应的防范措施。Apache Shiro 是一个强大且易用的Java安全框架,常用于执行身份验证、授权、密码和会话管理。在Apache Shiro 1.5.3之前的版本中,与Spring控制器一起使用时,存在特制请求可能导致身份验证绕过的漏洞。本文还介绍了该漏洞的具体细节,并给出了防范该漏洞的建议措施。 ... [详细]
  • 本文介绍了在RHEL 7中的系统日志管理和网络管理。系统日志管理包括rsyslog和systemd-journal两种日志服务,分别介绍了它们的特点、配置文件和日志查询方式。网络管理主要介绍了使用nmcli命令查看和配置网络接口的方法,包括查看网卡信息、添加、修改和删除配置文件等操作。 ... [详细]
author-avatar
bakurei_492
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有