公告:
  • 要报名培训 PHP 的同学抓紧时间了,黎老师手把手教学,现在报名白菜价了 [2017-08-25]

浅谈“请求(Request)”与“响应(Response)”

上网的过程本质上是请求与响应的过程。浏览器向服务器发送请求,服务器响应请求。

响应的速度

php 版本:5.6

web 服务器:php 解析器内置的服务器

测试工具:Apache 自带的 ab.exe 命令

测试命令:见图

响应速度

响应速度

一个 php 进程在 58 秒处理完 10000 个进程,单位时间内平均处理 172 个请求,内存消耗 8MB,cpu 使用率 24%

因为在计算机中,进程与进程之间是相对独立的,所以 php 进程数 x 与单位时间内处理的请求数 y 成正比,在本例中,比例系数是 172,x 与 y 的函数关系式如下:

y = 172x

同理,内存消耗的消耗 m 也与 php 进程数 x 成正比,在本例中,比例系数是 8

m = 8x

但是,cpu 使用率就不同了,它和 php 进程数就不存在正比关系了,因为 cpu 再某一时刻只能执行一个进程,cpu 的多任务只是因为 cpu 在快速切换执行不同的任务而已。

问题:当想单位时间内处理 2000 个请求,需要多少个 php 进程?需要多大的内存条?(不考虑其他因素)

解:
    由 y = 172x 得:
    2000 = 172x
       x = 11.6

    当 x = 11.6 时,
    由 m = 8x 得:
       m = 8 * 11.6
       m = 92.8

    答:想在单位时间内处理 2000 个请求,需要 12 个进程同时工作,内存条至少 92.8MB。

在外网环境下,其实服务器还是很快处理完毕的,只是大部分时间消耗在了网络传输上。下图是在外网下测试的

响应速度

ab 压力测试工具

在 apache 安装目录下的 bin 目录下,一般会有一个叫 ab.exe 的文件。打开命令行窗口,把路径定位到这个目录下,然后在命令行中输入 ab 再回车,会看到 ab 命令的使用方法。

-n 请求数

-c 并发数

测试京东首页,总共发送 100 个请求,每次发送 10 个,意思是等待前面 10 个请求都响应了,就再发送下一批 10 请求。这里的“10”就是传说中的“并发”,因为它们几乎是同时发出和同时到达服务器的。

ab -n100 -c10 http://www.jd.com/
发表评论:(支持 Markdown 语法)
访客评论(0):