Apache的压力测试以及web性能优化的常用知识总结_Linux

什么是带宽?

误解:“数据在线路中的移动速度”、“数据的传输速度”

我们所说的带宽是指数据的发送速度,比如百兆网卡,指网卡的最大发送速度是100Mbps,也就是说网卡在一秒钟最多可以发送100Mb的数据;相关的因素:

数据发送装置将二进制信号传送到线路的能力,也称信号传输频率,以及另一端数据接收装置对二进制信号接收的能力,也包括线路对传输频率的支持程度;
数据传输介质的并行度,等价于计算机系统总线宽度的概念;
 

习惯与约定

b:比特单位 bit;

B:字节单位 Byte;

1KB = 1024B;

1kb = 1000b;

M与K 的换算同上;

 

什么是吞吐率?

吞吐率(Throughput),是指web服务器单位时间内处理的请求数,单位:reqs/s;

一般更关心的是服务器并发处理能力的上限 ,即最大吞吐率;

 

关于压力测试

基于吞吐率压力测试的几个前提:

并发用户数;(某一时刻同时向服务器发送请求的用户数量)
总请求数;
请求资源描述;
 

几个重要指标:

请求等待时间

用户平均请求等待时间(主要衡量服务器在一定并发用户数的情况下,对单个用户的服务质量)
服务器平均请求方护理时间(衡量服务器整体服务质量)
压力测试工具:Apache附带的ab、LoadRunner、Jmeter

 

服务器系统负载

$ cat /proc/loadavg
0.58 1.19 0.64 1/92 8306

这里0.58 1.19 0.64 这3个数字表示:系统最近1分钟、5分钟、15分钟分别计算出来的系统负载;

1表示当前运行队列中的进程个数;92表示此时的进程总数;8306表示到此时为止最后创建的一个进程ID;

 

Apache  ab的使用介绍

在《构建高性能web站点》中多处讲到了用apache 自带的压力测试工具ab进行Server的性能测试,搜索了一下相关知识,整理如下:

ab的全称是ApacheBench,是 Apache 附带的一个小工具,专门用于 HTTP Server 的benchmark testing,可以同时模拟多个并发请求。下面以一个实际例子来介绍ab的使用:

[xiekeli@localhost ~]$ ab -n 1000 -c 50 http://www.abc.com/a.php        

 //产生1000次http请求,每次的并发用户数:50
This is ApacheBench, Version 2.0.40-dev <;$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking www.abc.com (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Finished 1000 requests

Server Software: Apache                     //被测平台Apache 

Server Hostname: www.abc.com                   //服务器主机名
Server Port: 80

Document Path: /a.php
Document Length: 231 bytes                   //文档大小

Concurrency Level: 50                       //并发数
Time taken for tests: 12.818547 seconds
Complete requests: 1000                      //完成请求数
Failed requests: 0                       //失败的请求数
Write errors: 0
Non-2xx responses: 1001
Total transferred: 438438 bytes                  //整个场景中的网络传输量
HTML transferred: 231231 bytes                  //整个场景中的HTML内容传输量
Requests per second: 78.01 [#/sec] (mean)       //吞吐率,即每秒处理的请求数(后面括号中的 mean 表示这是一个平均值)
Time per request: 640.927 [ms] (mean)          //每次请求的响应时间(后面括号中的 mean 表示这是一个平均值

Time per request: 12.819 [ms] (mean, across all concurrent requests)    //每次请求的响应时间(后面括号中已经说明,是按所有并发数计算的平均值)

Transfer rate: 33.39 [Kbytes/sec] received  //平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题
Connection Times (ms)           //网络上消耗的时间的分解,各项数据的具体算法还不是很清楚 

min mean[+/-sd] median max
Connect: 186 307 598.1 212 9188
Processing: 188 271 289.6 214 1923
Waiting: 188 245 219.9 213 1416
Total: 376 579 660.2 427 9380
 //整个场景中所有请求的响应情况。在场景中每个请求都有一个响应时间,其中50%的用户响应时间小于1093 毫秒,60% 的用户响应时间小于1247 毫秒,最大的响应时间小于7785 毫秒,由于对于并发请求,cpu实际上并不是同时处理的,而是按照每个请求获得的时间片逐个轮转处理的,所以基本上第一个Time per request时间约等于第二个Time per request时间乘以并发请求数

Percentage of the requests served within a certain time (ms)
50% 427
66% 430
75% 431
80% 433
90% 451
95% 1630
98% 3382
99% 3429
100% 9380 (longest request)

-n : 表示的测试的次数,很多地方翻译成“发送请求的次数”,这样很容易产生歧义,应该叫:“http请求数”比价合适;这里表示1000次http请求;
-c : 表示每次的请求数,-c 50表示一次同时发起50个http请求,50次请求都收到响应了之后,再次发送50个http请求,直到发满1000次。

web优化的其他一些相关知识点:
缓存(cache)和缓冲(buffer)的区别:

缓存 (cache):缓存的目的是把需要花费昂贵开销的计算结果保存起来,在以后需要的时候直接取出,避免重复的计算。

缓冲 (buffer):目的在于改善各部件之间因为速度不同而引发的问题。起到将快速设备与慢速设备平滑衔接的作用。

页面缓存(Page Cache)

页面缓存就是将动态计算的结果进行缓存,避免动态内容不必要的重复计算,主要是针对动态生成的html页面和动态图片或动态XML数据等;

缓存持久化和搜索

    如果缓存文件非常多,cache目录下会拥挤大量的文件,如果缓存的文件的读写频度比较高,对CPU的影响是非常大的;

解决的方案:

      1、使用支持目录hash加速目录遍历的文件系统来缓解这种情况,如:XFS和reiserfs;

      2、缓存目录分级

过期检查

  •   缓存过期时间
  •     缓存有效期长度

把缓存放到内存中

如果将缓存数据放到磁盘文件中,每次缓存加载和过期检查都在磁盘I/O的开销,如果磁盘同时还运行着如数据库这样的I/O密集型应用,那么缓存文件的I/O操作便会存在一定的延迟。

作者在这里提到了两个PHP的缓存框架:APC和XCache。

 

缓存服务器

将HTML缓存在一台独立的缓存服务器中,利用memcached,可以很容易的通过TCP将缓存存储在其他的服务器中,memcached同样也是用内存空间保存缓存数据的,可以减少不必要的I/O。memcached对每一个key都维护一个过期时间,一旦过期,会自动删除这个key。

 

局部无缓存

局部无缓存允许在页面中指定一块包含动态数据的HTML代码段,每次这些动态数据都需要实时计算,然后和其余的缓存合成为最终的网页。

 

静态化内容

    动态内容缓存中,每次用户的请求都要送到动态程序,动态程序根据缓存的有效期决定是否输出缓存。因此这种控制权的代价也是比较昂贵的。

    将动态页面×××.php的缓存从cache目录拿出来,放到同一个目录中:×××.html,直接通过浏览器访问对应静态页面。

    当然静态化页面也是需要动态程序来实现的,一般静态化页面的管理都是通过CMS(内容管理系统)来进行管理的。

    静态化页面的更新策略:

    1、在数据更新时,重新生成静态化内容;

    2、定时重新生成静态化内容;

 

局部静态化

静态化页面可以通过SSI(服务器端包含)技术实现各个局部页面的独立更新。

SSI技术可以在任何一个主流web服务器中找到相应的模块,如Apache的mod_include和Lighttpd的mod_ssi。

名词解释:PV

PV (page view) 即页面浏览量,或点击量,通常是衡量一个 网络新闻 频道或网站甚至一条网络新闻的主要指标。

定义:一个访问者在24小时(0点到24点)内到底看了你网站几个页面。需要注意的是:同一个人浏览你网站同一个页面,不重复计算pv量。pv就是一个访问者打开了你网站的几个页面。

pv的计算:当一个访问者访问的时候,记录他所访问的页面和对应的IP,然后确定这个IP今天访问了这个页面没有。如果你的网站到了23点,单纯IP有60万条的话,每个访问者平均访问了3个页面,那么pv表的记录就要有180万条。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索web
apache
apache性能优化、apache2.4性能优化、apache php 性能优化、apache 2.2 性能优化、linux apache性能优化,以便于您获取更多的相关知识。

时间: 2024-10-17 09:48:53

Apache的压力测试以及web性能优化的常用知识总结_Linux的相关文章

HTTP/2 与 WEB 性能优化(三)

在连续写了两篇关于「HTTP/2 与 WEB 性能优化」的文章后,今天来写这个系列的最后一篇.在正式开始之前,我们先来简单回顾下之前两篇文章: 「HTTP/2 与 WEB 性能优化(一)」的结论是:HTTP/2 的 Server Push 机制,可以让重要的 JS.CSS 等资源尽快加载,从而不再需要 HTTP/1 中「将重要资源内联在页面头部」的优化方案了. 「HTTP/2 与 WEB 性能优化(二)」的结论是:HTTP/2 支持了多路复用,HTTP 连接变得十分廉价,之前为了节省连接数所采用

java web性能优化问题

问题描述 java web性能优化问题 Java web后台性能优化: 1.可以把数据放在application里面: 2.可以把数据作为static变量的值,放在常量类里: 3.可以把数据放到缓存. 三种方式孰优孰劣,以及各自有什么优缺点? 解决方案 Java Web性能优化Java Web性能优化Java Web性能优化原则

Web性能优化:What? Why? How?

为什么要提升web性能? Web性能黄金准则:只有10%~20%的最终用户响应时间花在了下载html文档上,其余的80%~90%时间花在了下载页面组件上. web性能对于用户体验有及其重要的影响,根据著名的`2-5-8`原则: 当用户在2秒以内得到响应,会感觉系统的响应非常快 当用户在2-5秒之内得到响应,会感觉系统的响应速度还可以 当用户在5-8秒之内得到响应,会感觉系统的响应非常慢,但还可以接受 当用户在8秒之后都没有得到响应,会感觉系统糟透了,甚至系统已经挂掉:要么打开竞争对手的网站,要么

Apache的压力测试工具及OB缓存

apache在做压力测试这方面还是特别方便的,apache里就直接由这样的工具而且使用方便,在这之前我们需要了解apache使用的是那种并发机制 1.查看apache使用的是那种并发模型 可以直接通过cmd进入apache的bin目录 ,使用httpd.exe -l即可 找到mpm,后面的winnt就是并发模型 2.apache的默认并发数 apache的默认并发数是150,tomcat6的并发接近200,一般情况下apache使用默认的并发模型,从上面第一点我们知道了改apache的并发模型是

web性能优化之:no-cache与must-revalidate深入探究

引言 稍微了解HTTP协议的前端同学,相比对Cache-Control不会感到陌生,性能优化时经常都会跟它打交道. 常见的值有有private.public.no-store.no-cache.must-revalidate.max-age等. 各个取值所代表的含义,网上总结挺多的,这里就不打算再进行逐一介绍,感兴趣的可以一起探讨交流. 本文仅挑no-cache.must-revalidate 这两个进行值进行探究对比.在项目实践中,这两个值用的比较多,也比较容易搞混. Cache-Contro

Web性能优化系列 10个提升JavaScript性能的技巧_javascript技巧

Nicholas Zakas是一位 JS 大师,Yahoo! 首页的前端主程.他是<高性能 Javascript>的作者,这本书值得每个程序员去阅读. 当谈到 JS 性能的时候,Zakas差不多就是你要找的,2010年六月他在Google Tech Talk发表了名为<Speed Up Your Javascript>的演讲. 但 Javascript 性能优化绝不是一种书面的技术,Nicholas 的技术演进列出了10条建议,帮助你写出高效的 JS 代码. 1. 定义局部变量 当

JavaScript性能优化之小知识总结_javascript技巧

随着网络的发展,网速和机器速度的提高,越来越多的网站用到了丰富客户端技术.而现在Ajax则是最为流行的一种方式.JavaScript是一种解释型语言,所以能无法达到和C/Java之类的水平,限制了它能在客户端所做的事情,为了能改进他的性能,我想基于我以前给JavaScript做过的很多测试来谈谈自己的经验,希望能帮助大家改进自己的JavaScript脚本性能. 前言 一直在学习javascript,也有看过<犀利开发Jquery内核详解与实践>,对这本书的评价只有两个字犀利,可能是对javas

mysql数据库优化与mysql在web性能优化

数据库语句:     Ddl(数据定义语言)    alter  create   drop         Dml(数据操作语言)   inset  delete  update       Dtl(数据事务语言)  conmmit  rollback   savepoint       Select       Dcl(数据控制语句) grant赋权限  revoke回收        Mysql数据库优化: 1.  数据库表 要设计合理(符合3NF,有时候也需要适当的逆范式) 2.  Sq

web性能优化之javascript性能调优_javascript技巧

JavaScript 是一个比较完善的前端开发语言,在现今的 web 开发中应用非常广泛,尤其是对 Web 2.0 的应用.随着 Web 2.0 越来越流行的今天,我们会发现:在我们的 web 应用项目中,会有大量的 JavaScript 代码,并且以后会越来越多.JavaScript 作为一个解释执行的语言,以及它的单线程机制,决定了性能问题是 JavaScript 的软肋,也是 web 软件工程师们在写 JavaScript 需要高度重视的一个问题,尤其是针对 Web 2.0 的应用.绝大多