使用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的快速回收

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