1、利用网络处理量计算。

计算参考公式:

并发 = connection established / min(server keepalive, server timeout)

翻译一下:

并发 = 服务器传输链接数 除以 服务器软件的keepalive设置和服务器软件的超时设置之间的最小值

这个公式算出来的数字是keepalive时间段内的平均值,比真实平均值要小一点,如果想找最大值就要设定keepalive为0或1,然后多探测几次。

connection established是服务器当前正在传输的链接,但是keepalive打开时,新建立的传输链接会一直存在直到keepalive/timeout 关闭链接;客户端主动关闭链接的话connection established也会关闭,不过这种链接一般比较少,多数浏览器都是支持keepalive并遵守服务器配置的。
[separator]
在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

这样统计就准确了。

转载于:https://blog.51cto.com/skypeng/672057

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

  1. 如何有效的在 60 秒内进行 Linux 服务器性能故障分析

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 感谢前辈,光荣属于前辈. 掌握一些性能优化工具和方法,这就需要在工作中不断地积累:计算机基础知识很重要,比如说网络 ...

  2. 极速60秒!用10条命令检查Linux服务器性能

    如果你的Linux服务器突然负载暴增,告警短信快发爆你的手机,如何在最短时间内找出Linux性能问题所在?Netflix性能工程团队的Brendan Gregg写下了这篇博文,来看他们是怎样通过十条命 ...

  3. jq fileupload 设置最大文件大小5m_如何在 Linux 服务器上设置 ulimit 和文件描述符数限制 | Linux 中国...

    在生产环境中遇到打开文件数这类的挑战如今已是司空见惯的事情了.-- Shashidhar Soppin 
简介:在生产环境中遇到打开文件数这类的挑战如今已是司空见惯的事情了.因为许多应用程序是基于 J ...

  4. php 获取服务器进程数,PHP 获取linux服务器性能CPU、内存、硬盘、进程等使用率...

    数据库配置文件: conn.php define("MONITORED_IP", "172.16.0.191"); //被监控的服务器IP地址 也就是本机地址 ...

  5. js将毫秒数转换为天数、小时数、分钟数和秒数的计算方法

    js将毫秒数转换为天数.小时数.分钟数和秒数的计算方法如下,参数为毫秒数: function formatDuring(millisecond) { var days = parseInt(milli ...

  6. jmeter-监听器之每秒事务数响应时间活动的线程数服务器性能指标监控

    目录 一.插件安装 二.监听器-jp@gc - Transactions per Second 三.监听器之响应时间Response Times Over Time 四.监听器之活动的线程数(Acti ...

  7. linux下查看服务器进程数,linux服务器查看进程数量

    Linux系统的进程是由线程组成的,当然Linux进程下的线程数是不固定的,可以是一个进程,也可以是多个进程. 一.使用命令查看Linux进程的线程数 1.使用top命令,具体用法是 top -H 加 ...

  8. Linux服务器优化(转)

    一 linux服务器性能查看 1.1 cpu性能查看 1.查看物理cpu个数: cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc ...

  9. Linux服务器性能优化

    Linux服务器性能优化 一 linux服务器性能查看 1.1 cpu性能查看 1.查看物理cpu个数: cat /proc/cpuinfo |grep "physical id" ...

最新文章

  1. 生物信息学 几个程序
  2. CF-1140 E - Palindrome-less Arrays
  3. python 选择排序算法
  4. MVP on Android
  5. VS VC 读取 INI文件
  6. 闲话网名之“Johnny”
  7. Linq 下的 Take() 方法内部机制是怎样的?
  8. swift - 使用系统app导航
  9. 服务器销售考核方案,电商后台:运营绩效系统总结
  10. 栈和队列:1.栈(Stack)
  11. Spark之hive的UDF自定义函数
  12. index mysql_mysql 原理~ index的详解
  13. 前端框架这么火,还有必要学好原生 JavaScript 吗?
  14. Git创建分支并上传~满满的干货哦
  15. (二)pscc学习笔记
  16. VC预定义常量WIN32、_WIN32、_WIN64分析(转载)
  17. ISO9001和ISO27001质量管理体系(详解)
  18. 人工智能深度学习神经网络在双色球彩票中的应用研究(二)
  19. 学习数据库的概念,作用
  20. 怎么禁用计算机usb驱动,在Windows中启用或禁用USB驱动器或端口的5种方法 | MOS86...

热门文章

  1. 记一次解题思路(周起始日)
  2. Loading class `com.mysql.jdbc.Driver'. This is dep
  3. QPS/TPS/并发量/系统吞吐量的概念
  4. 【观点】“另类”设计模式
  5. 菜鸟学习日记:跟我一起学office2007之Excel【02基础篇】04Excel基础知识二
  6. Windows 2003 R2的文件服务器实施
  7. 分层开发思想与小笼包
  8. 发现一个很好的工具——VNN
  9. Centos 7下编译安装Apache
  10. TPC性能测试及发布