web服务器性能测试---服务器性能测试实例

article/2025/8/22 11:45:19

WEB性能测试--服务器

 

目录

一、准备测试环境............................................................................................................1

二、测试步骤...................................................................................................................2

1、搭建 WEB Server 过程略过.................................................................................2

2、安装模拟访问工具 ab...........................................................................................2

3、安装性能查看工具................................................................................................2

4、测试命令以及参数................................................................................................2

5、系统性能分析命令................................................................................................4

6、测试结果..............................................................................................................5

 

 

WEB 服务中,对于不同的请求,响应速度(性能)是不一样的。对于静态文件的响应一般会很快,尤其是使用了前端缓存技术的(例如 nginx 缓存、varnish缓存、CDN 缓存等)。

下面将以静态页面的测试为例,详细讲解 WEB 服务性能测试方案。

在只有一台裸机的情况下,响应速度会受限于服务器的 CPU、内存、磁盘IO、数据库QPS、文件系统 等,所以需要在测试的时候,实时监控系统的情况。

 

参考的测试方式:http://hi.baidu.com/higkoo/item/f3258f02a5afa925a1312d26?qq-pf-to=pcqq.c2c

一、准备测试环境

请根据实际情况组建测试环境,如果要测试线上 WEB 服务,不怕影响服务质量的话,也可直接使用线上环境。

下表是我使用过的一个测试环境。

网络

公司内网 VLAN

WEB Client 机器配置

CPU:Intel(R) Xeon(R) X3430 2.40GHz 4核

WEB Server 机器配置

CPU:Intel(R) Xeon(R) X5650 2.67GHz 24核

WEB Server

Nginx 1.4.7

测试工具

Apache Bentch 2.3,简称 ab

测试静态页面(大小4K)

http://nginx.test.com/

请求总数

根据需要自定义,请求太少测试没意义,太多很耗时间。

一般在监控性能的时候,请求多一点,例如 1M,延长测试过程,方便查看;

在测试并发数的时候,请求少一点,例如 10W,可以快速得出并发响应数。

测并发数

1, 50,100,150,200,300,500,1000 ... ,根据需要自定义

性能记录工具

dstat

服务器性能参数

CPU负载、磁盘读写速度、网络流量、内存读写速度、系统负载

二、测试步骤

1、搭建 WEB Server过程略过

2、安装模拟访问工具 ab

如果机器已经安装了 Apache httpd ,则一般都自带 ab 工具,使用命令 which ab 可以找到 ab 的安装路径。如果找不到 ab 命令,请安装 httpd 即可(Redhat):yum install httpd。

3、安装性能查看工具

Redhat:yum install -y dstat

 

详细中文使用方法参考:http://linux.cn/article-3215-1.html

4、测试命令以及参数

4.1、ab 命令参数

直接运行 ab 可以得到使用帮助,这里说一下 ab 命令的常用参数:

-n

客户端发起的总请求数

-c

客户端并发请求数,即有多少个用户同时发起请求

-k

HTTP 长连接,默认没有 -k 参数,使用的是短连接

url

[http[s]://]hostname[:port]/path

 

例子:ab -n100000 -c 200 http://nginx.test.com/

 

NOTE:一些低配置的机器,在运行 ab 命令的时候可能会出现问题,主要是打开文件数太小导致的。并发数越高,越容易出现这样的问题。

 

4.2、测试结果解说


注: 1、mean是平均数的意思

2、第一个Time per request代表每个链接上单个请求的平均响应时间

   第二个Time per request所有链接合计后单个请求的平均响应时间

   它们之间的关系是:Tpr1=Tpr2*n,这里的Tpr1=23.054,Tpr2=0.115,n=200。

3、下面将 Requests per second 简称为 RPS,第一个 Time per request 简称为 TPR

 

从 ConnectionTimes 可以看出,请求在建立到响应的过程中,哪个环节下消耗的时间比较多。

 

测试 WEBServerd的最大(佳)并发数

 

打开网页的速度(取决于请求响应时间)是一个很重要的用户体验。

然而请求响应时间存在小部分的极大值和极小值,那么平均响应时间不能真实反映请求响应速度,所以取95% 在某时间阀值内(例如25ms)完成比较合理。

所以假设业务的需求是:95% 请求的响应时间 < 25ms 。

 

假定请求总数不变,每次测试时改变并发数连接数,倘若测试结果中,有95%的请求能在25ms内处理完成,则认为当前的并发响应数是最大(佳)并发数。

同时记录服务器 CPU、内存、系统、IO、网络流量 的情况。

 

对于ab -n 100000 -c 200 http://nginx.test.com/,取 3 次的平均值作为测试结果。

5、系统性能分析命令

dstat -h可以获取帮助信息

 

命令解释:dstat -t -c -dD sda1 -nN eth0-gyl

-t

显示时间戳

-c

统计所有CPU 状态

-dD sda1

统计磁盘分区 /dev/sda1 的读写速度,请根据实际情况指定分区,这里为 /usr/local/nginx/html/index.html 这个文件所在的分区

-nN eth0

统计网卡 eth0 的流量,请根据实际情况指定网卡

-g

统计内存页换入换出速度,一般希望的值是 0 0

-y

统计 CPU 中断 int 和 上下文切换 csw 信息

--tcp

tcp 连接状态

-l

统计系统负载信息


在客户端运行 ab 测试命令之前,预先运行 dsetat 命令,查看测试前机器的状态;等到测试的时候,再对比一下测试前后系统的状态。

6、测试例子结果分析

这里想要测试 WEB Server 的大体性能,只需要测试 Requests per second 的值即可。

6.1、短链接并发测试

每个命令运行 3 次,然后取平均值

ab -n 100000 -c 1 http://nginx.test.com/

ab -n 100000 -c 50 http://nginx.test.com/

ab -n 100000 -c 100 http://nginx.test.com/

……

6.2、长链接并发测试

ab -n 100000 -c 1 -k http://nginx.test.com/

ab -n 100000 -c 50 -k http://nginx.test.com/

ab -n 100000 -c 100 -k http://nginx.test.com/

……

6.3、测试结果

Complete requests

Concurrency Level

短链接

长链接

Time taken for tests

Requests per second

Time taken for tests

Requests per second

100000

1

85

1183

54

1839

100000

50

9.8

9756

7.7

12041

100000

100

 

6249

 

 

100000

150

 

7432

 

 

100000

200

 

7996

 

 

100000

250

 

8584

 

 

100000

300

 

7313

 

 

100000

350

 

7189

 

 

100000

400

 

8335

 

 

100000

450

 

9545

 

 

100000

500

 

9866

 

 

100000

550

 

9965

 

 

100000

600

 

9685

 

 

100000

650

 

10124

 

 

100000

700

 

10053

55

12297

100000

750

 

10204

 

 

100000

800

 

9731

 

 

100000

850

 

9921

 

 

100000

900

 

9909

 

 

100000

950

 

9908

 

 

100000

1000

 

9067

 

 

100000

1050

 

9871

 

 

100000

1100

 

7669

 

 

100000

1150

 

8849

 

 

 

使用excle做成表格,使测试结果更加形象

 

从图中可知:WEBServer 对于请求 http://nginx.test.com/每秒的最大响应数为 1W 左右。

Nginx 官网说能达到 5W RPS,可见当前的 WEB Server 离那个目标还差很远。

 

下图是测试过程中,WEBServer 的性能监控记录:dstat -t -c -dD sda1 -nN eth0 -gyl

测试前

短链接测试时(并发 700 )

 

长连接测试时(并发 700 )

 

测试前后,变化较大的有:

l  网卡流量

l  CPU 中断数量以及上下文切换数

l  1分钟之内的系统负载

 

从性能监控记录看,进行测试时,系统性能还处于一个比较空闲的状态,负载较低。

 

结合测试的 RPS 和 系统性能,发现 WEB Server 还有很大的进步空间,需要进行更加深入的专业优化。

 

当然,这是一个很简单的测试,如果涉及到比较负载的业务等,系统各方面的负载也会相应的增加的。


测试结果详细记录表

Document Path

/

Document Length

555 bytes

Concurrency Level

1

50

 

Time taken for tests

84.498 seconds

 

 

Complete requests

100000

100000

 

Failed requests

0

 

 

Write errors

0

 

 

Keep-Alive requests

-

 

 

Total transferred

75.3MB

 

 

HTML transferred

52.9MB

 

 

Requests per second

1183.47

 

 

Time per request 1

0.845 [ms]

 

 

Time per request 2

0.845 [ms]

 

 

Transfer rate(received)

911.87 KBps

 

 

Connection Times (ms)

Connect

0+/-0.4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Processing

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Waiting

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Total

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Percentage of the requests served within a certain time (ms)

50%

1

 

 

66%

1

 

 

75%

1

 

 

80%

1

 

 

90%

1

 

 

95%

1

 

 

98%

1

 

 

99%

2

 

 

100%

205

 

 

 


http://chatgpt.dhexx.cn/article/tjYqtQEm.shtml

相关文章

测试服务器CPU情况

要查看服务器的CPU情况&#xff0c;你可以使用 TOP 命令结合一些选项来执行相应的测试top 命令&#xff1a;运行 top 命令可以实时监视系统的各个进程和 CPU 使用情况在 top 命令的输出中&#xff0c;有几个重要的指标参数可以帮助你了解系统的 CPU 使用情况和进程信息。以下是…

记录一次较为完整服务器(服务端)性能测试

前言 回顾几年前&#xff0c;做性能测试&#xff0c;尤其是服务器性能测试难度比较大&#xff0c;一是测试人员本身技术不足&#xff0c;二是测试的生态环境 不够完善&#xff08;参考资料少、实用案例少、工具选型少&#xff09;&#xff0c;然而在这两年随着测试环境的生态逐…

服务器带宽测试

服务器带宽&#xff1a;简单地说&#xff0c;就是同一时间段能传输的数据总量&#xff0c;服务器带宽越小那么可容纳数据吞吐量越小&#xff0c;同一时间段可容纳的用户访问量也越少&#xff08;单位时间内从服务器拉取的数据量就越小&#xff09;。服务器带宽越大&#xff0c;…

关于云服务器的测试

目录 安装sysbench0.4.12 安装sysbench1.0 CPU加密运算性能 CPU浮点运算性能 JAVA程序运行时延&#xff08;s&#xff09; Web程序系统平均响应时延/系统吞吐量 CPU(EPS)-CPU每秒执行事件数 内存读取性能(MB/s)-每秒读取内存数据大小 内存写入性能(MB/s)-每秒写入内存数据…

如何测试服务器的速度

服务器好不好&#xff0c;使用起来体验度如何&#xff0c;跟服务器的多项性能有关&#xff1a;硬件配置、带宽大小、带宽线路、运营商都决定了服务器最终使用体验。 现在租一台服务器是非常稀松平常的事情&#xff0c;可以说任何个人只要有需求都可以直接网上租用一台服务器来使…

Quartz

什么是Quartz quartz:石英钟的意思 是一个当今市面上流行的高效的任务调用管理工具 由OpenSymphony开源组织开发 Symphony:交响乐 是java编写的,我们使用费时需要导入依赖即可 为什么需要Quartz 什么是任务调度 所谓任务调用,就是执行某些具体动作的时间计划 最简单的…

Quartz基本使用

&#xff08;一&#xff09;定时任务 在很多情况下任务并非需要立即执行 , 而是需要往后或定期执行 , 这不可能人工去操作 , 所以定时任务就出 现了 使用定时任务的情况 : 每周末凌晨备份数据 触发条件 5 分钟后发送邮件通知 30 分钟未支付取消订单 每 1 小时去拉取数…

Quartz概述

Quartz是开源任务调度框架中的翘楚&#xff0c;它提供了强大的 任务调度机制。Quartz允许开发人员灵活的定义触发器的调度时间表&#xff0c;并可对触发器和任务进行关联映射。此外&#xff0c;Quartz提供了调度运行环境的持久化机制&#xff0c;可以保存并恢复调度现场&#x…

Quartz的使用

什么是Quartz Quartz是一个由java编写的开源作业调度框架&#xff0c;简单来说&#xff0c;Quartz就是启动定时任务的框架&#xff0c;像linux系统中的corntab&#xff0c;可以定时启动任务. Quartz的单独使用 Quartz的使用必须掌握下面三个对象 Scheduler 定时器对象JobDe…

Quartz 配置详解

Quartz自定义配置详解&#xff08;一&#xff09;——实现自定义配置 - 掘金通过默认配置下的quartz信息输出可以看到&#xff0c;quartz默认不支持数据的持久化&#xff0c;且无集群支持&#xff1b;但是在实际项目使用中&#xff0c;为了保证相关数据的准确和定时任务执行稳定…

quartz详解

quartz 一、Quartz相关介绍 1.简介  1.1 Quartz 是一个完全由 Java 编写的开源作业调度框架&#xff0c;为在 Java 应用程序中进行作业调度提供了简单却强大的机制。  1.2 Quartz 可以与 J2EE 与 J2SE 应用程序相结合也可以单独使用。  1.3 Quartz 允许程序开发人员根据时间…

【开发经验】quartz表结构说明(字段说明)

文章目录 一、quartz表信息二、表字段说明1.qrtz_blob_triggers2.qrtz_calendars3.qrtz_cron_triggers4.qrtz_fired_triggers5.qrtz_job_details6. qrtz_locks7.qrtz_paused_trigger_grps8. qrtz_scheduler_state9.qrtz_simple_triggers10.qrtz_triggers 一、quartz表信息 qrt…

Quartz简介

文章目录 Quartz 是什么What is the Quartz Job Scheduling Library?使用场景特点Quartz 使用的设计模式 Java 语言实现定时任务的几种方式核心元素SchedulerTriggerCalendarJobDetailJobJobExecutionContext 核心元素之间的关系Quartz 类图主要线程数据存储 最近做了一个活动…

【quartz表结构及说明】

文章目录 一、quartz表信息二、表字段说明 1.qrtz_blob_triggers2.qrtz_calendars3.qrtz_cron_triggers4.qrtz_fired_triggers5.qrtz_job_details6. qrtz_locks7.qrtz_paused_trigger_grps8. qrtz_scheduler_state9.qrtz_simple_triggers10.qrtz_triggers 一、quartz表信息 qr…

Quartz数据库表分析

2019独角兽企业重金招聘Python工程师标准>>> 系列文章 Spring整合Quartz分布式调度 Quartz数据库表分析 Quartz调度源码分析 前言 上一篇文章Spring整合Quartz分布式调度介绍了Quartz通过数据库的方式来实现分布式调度&#xff0c;通过使用数据库来存储trigger&…

php rsa公钥加密,PHP RSA加密

这两天正好做一个rsa加密,现在就总结一下其中的几个要点。 1.什么是rsa算法 RSA公钥加密算法是1977年由罗纳德李维斯特(Ron Rivest)、阿迪萨莫尔(Adi Shamir)和伦纳德阿德曼(Leonard Adleman)一起提出的。1987年7月首次在美国公布,当时他们三人都在麻省理工学院工作实习。RSA…

php 代码加密运行,php加密后可以直接运行吗

加密后的php代码需要ZendGuardLoader模块才能正常运行 下载ZendGuardLoader压缩包 下载好后解压压缩包&#xff0c;找到目录下的 ZendLoader.dll 文件&#xff0c;将它放到你的php目录下ext下&#xff0c;再编辑php.ini文件&#xff0c;添加一段代码&#xff1a;[Zend.loader] …

PHP加密 php源代码在线加密工具推荐

在我们开发的项目中&#xff0c;有一部分可能是用于商业用途&#xff0c;会部署在客户提供的机器环境中。因为 PHP 本身是解释型语言&#xff0c;所以未进行处理的代码&#xff0c;就会有泄露或被修改的风险。那么我们可能会想到最简单有效的方法就是进行PHP代码的加密&#xf…

PHP数据加密的几种方式

首先我们来了解一下为什么要加密&#xff1f; 在网络通信的过程中攻击者可以伪造请求和返回&#xff0c;从而达到不可告人的目的。如下图所示&#xff1a; 数据加密之后可以防止他人监听窃取信息以及通讯内容被篡改。 了解了加密的作用&#xff0c;我再来说说加密的方式&…

php代码加密 php-screw-plus

1.下载本程序并解压到某个目录 下载 https://gitee.com/splot/php-screw-plus 2.解压 3.编译 进入目录 /usr/local/php/bin/phpize &#xff08;在screw plus目录中执行php bin中的phpize自动生成扩展所需文件&#xff09; ./configure --with-php-config/usr/local/php…