[Squid] TCP_MEM_HIT 和 TCP_HIT 的性能到底相差多远

字体大小: 中小 标准 ->行高大小: 标准

在内存中命中,使用 Squid 本身的机制来 Cache 文件,和文件系统本身的 Cache 机构时,Squid 内存 Cache 机构性能提高会有多少。

压力测试语句

./ab -c 100 -n 30000   "http://test.php-oa.com:81/4k.html?cct00003000"

测试用的 AB ,并发 100 打 3W 次压力,文件的大小是 4k 的小文件。使用 16 进制来随机生成文件名。这样来测试,为了保证有效性,我先前打了二次,不做为记录,只为了 Cache ,然后在 Squid 中配置大点的内存来存放这些小文件。

系统的配置,机器有点老。不好意思,哈哈

cache_mem 2048 MB
maximum_object_size 409600 KB
minimum_object_size 0 KB
maximum_object_size_in_memory 4096 KB

 

1. TCP_MEM_HIT 时的数据

这是打出来的数据。当所有的 Object 都是内存命中时的性能,如果随机数,在少点,上 5k 是很容易的。这是每秒处理完的响应。

Time taken for tests:   6.979 seconds
Complete requests:      30000
Failed requests:        0
Write errors:           0
Total transferred:      135908818 bytes
HTML transferred:       122884096 bytes
Requests per second:    4298.66 [#/sec] (mean)
Time per request:       23.263 [ms] (mean)
Time per request:       0.233 [ms] (mean, across all concurrent requests)
Transfer rate:          19017.79 [Kbytes/sec] received

 

2.TCP_HIT时的数据

然后重起 Squid 。因为重起 squid 时会给所有的数据保存到硬盘中,这时文件就不在会变成 TCP_MEM_HIT,只会是 TCP_HIT。然后在 使用 并发 100 打 3W 次压力.

Concurrency Level:      100
Time taken for tests:   8.915 seconds
Complete requests:      30000
Failed requests:        0
Write errors:           0
Total transferred:      135934529 bytes
HTML transferred:       122884096 bytes
Requests per second:    3365.13 [#/sec] (mean)
Time per request:       29.717 [ms] (mean)
Time per request:       0.297 [ms] (mean, across all concurrent requests)
Transfer rate:          14890.54 [Kbytes/sec] received

 

TCP_MEM_HIT 和 TCP_HIT 总结:

很明显的,当响应是TCP_MEM_HIT 时,量能打到4298.66 [#/sec] 和 TCP_HIT时3365.13 [#/sec] ,从流量上也能看出来。我担心是不是 I/O 影响了性了,在 TCP_HIT 时,使用 iostat 监控了多次硬盘,基本没有什么 I/O 操作,说明被文件系统本身 cache 到内存中了。

此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/69563.html