使用siege对varnish进行压测对比

varnish上线3天,目前运行良好。使用siege进行压测,对比有无varnish前后的区别

选择 http://site/resources/images/imglist.jpg 对一个URL进行请求

后端是一台windows的IIS服务器

在没有上varnish之前

100个并发循环600次压测结果


** SIEGE 2.72
** Preparing 100 concurrent users for battle.
The server is now under siege..      done.

Transactions:		       60000 hits
Availability:		      100.00 %
Elapsed time:		       13.49 secs
Data transferred:	      526.14 MB
Response time:		        0.02 secs
Transaction rate:	     4447.74 trans/sec
Throughput:		       39.00 MB/sec
Concurrency:		       97.43
Successful transactions:       60000
Failed transactions:	           0
Longest transaction:	        3.02
Shortest transaction:	        0.00

此时后端的服务器CPU 占了80%以上

在上了varnish之后


** SIEGE 2.72
** Preparing 100 concurrent users for battle.
The server is now under siege..      done.

Transactions:		       60000 hits
Availability:		      100.00 %
Elapsed time:		       12.13 secs
Data transferred:	      526.14 MB
Response time:		        0.02 secs
Transaction rate:	     4946.41 trans/sec
Throughput:		       43.38 MB/sec
Concurrency:		       77.76
Successful transactions:       60000
Failed transactions:	           0
Longest transaction:	        3.04
Shortest transaction:	        0.00

可以看到,总共执行时间减少的并不明显。但是后端CPU基本处于0状态,无任何压力。而且varnish服务器load值也基本处于0

在访问量并不大的情况下,上不上varnish并没有太大的优势体现出来。

而在大量的请求的时候,优势就很明显了

如果压测的时候出现大量的“[error] socket: 2001824064 address is unavailable.: Cannot assign requested address

客户端频繁的连服务器,由于每次连接都在很短的时间内结束,导致很多的TIME_WAIT,以至于用光了可用的端口号,所以新的连接没办法绑定端口,所以 要改客户端机器的配置
在sysctl.conf里加:
net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_timestamps=1 开启对于TCP时间戳的支持,若该项设置为0,则下面一项设置
不起作用
net.ipv4.tcp_tw_recycle=1 表示开启TCP连接中TIME-WAIT sockets的快速回收

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章