http的长连接

HTTP 长连接

 

当客户端发起一个http 请求到服务器,服务器会对这个请求进行相应,发现回客户端。这整个过程是通过建立一个tcp 连接来完成的,任务完成连接中断。

我们现在访问的Web 页面越来越丰富了,页面中包含这大量的Web 资源。如:图像,JS 文件,CS 文件,Flash 文件。每一个WEB 资源都会建立一个HTTP 会话。

 

我们现在普遍使用的是HTML1.1 协议版本,它其中的一个新特性就是keep-alive( 长连接)

使用长连接后,客户端与服务器建立了第一次连接后会一直保持着打开状态。浏览器可以继续通过相同的连接发送请求,不需要再为对每一个WEB 资源的请求分别建立连接,大量节省了每个请求建立新连接所需的时间和带宽。

 

长连接需要客户端和服务器都支持,现在主流的浏览器都支持,服务器需要配置(如:apache 默认KeepAlive On )。

 

它的原理就是当服务器端返回给服务器的头信息中发送一个Content-Length 头(返回信息正文长度),它将页面的所有信息的长度计算后写入。

 

但是它也有它的弱点,KeepAlive 在有比较多的静态文件(图片,js 等)比较提高性能,会大量的节约http 的连接数量,在一个请求中完成多个Web 资源的接受。但是如果是动态脚本比如说 是phpKeepAlive 就没有什么性能提升了。很多的程序需要,确实需要使用KeepAlive ,就需要调高KeepAliveTimeOut 参数,但是这样在大量客户端访问的情况下,会大量堆积httpd 进程,最终导致服务崩溃。

 

下面是我写的一个测试例子。

不使用 KeepAlive

ab -n 10000 -c 1 http://localhost/profitMonitor/test.html

……………………………………

Concurrency Level:      1

Time taken for tests:   224.039 seconds

Complete requests:      10000

Failed requests:        0

Write errors:           0

Total transferred:      5440000 bytes

HTML transferred:        2580000 bytes

Requests per second:    44.64 [#/sec] (mean)

Time per request:       22.404 [ms] (mean)

Time per request:       22.404 [ms] (mean, across all concurrent requests)

Transfer rate:          23.71 [Kbytes/sec] received

 

Connection Times (ms)

               min  mean[+/-sd] median   max

Connect:        0    1   4.1      0      31

Processing:    16   21   7.6     16      63

Waiting:       16   19   6.8     16      63

Total:         16   22   7.9     16      63

 

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

  50%     16

  66%     31

  75%     31

  80%     31

  90%     31

  95%     31

  98%     31

  99%     31

  100%     63 (longest request)

 

 

使用 KeepAlive

ab -k -n 10000 -c 1 http://localhost/profitMonitor/test.html

……………………………………

Concurrency Level:      1

Time taken for tests:   130.298 seconds

Complete requests:      10000

Failed requests:        0

Write errors:           0

Keep-Alive requests:    9951

Total transferred:      5812796 bytes

HTML transferred:       2580000 bytes

Requests per second:    76.75 [#/sec] (mean)

Time per request:       13.030 [ms] (mean)

Time per request:       13.030 [ms] (mean, across all concurrent requests)

Transfer rate:          43.57 [Kbytes/sec] received

 

Connection Times (ms)

              min  mean[+/-sd] median   max

Connect:        0    0   0.5      0      16

Processing:     0   13   9.9     16     297

Waiting:        0   13   9.9     16     297

Total:          0   13   9.9     16     297

 

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

  50%     16

  66%     16

  75%     16

  80%     16

  90%     16

  95%     16

  98%     16

  99%     31

  100%    297 (longest request)

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值