在内存中命中,使用 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