6月 202010
 

VarnishはVersion2.1.1からRangeリクエストに対応するようになりました。
例えば最近のドコモ端末で動画を再生する場合501KB以上だと
サーバがRangeリクエストに対応していないと再生出来なかったりしますので対応は必要です。

ただこの機能は実験的で実際のところどうなんでしょうか?試してみました。

特に再起動なしで切り替えが可能ですので
telnetやvarnishadmでつないで


param.set http_range_support on

と打ちましょう。
その後確認としてshowして★の箇所がonになっていれば有効です。


param.show http_range_support
200 444
http_range_support         on [bool]★
                           Default is off
                           Enable support for HTTP Range headers.

                           NB: We do not know yet if it is a good idea to
                           change this parameter, or if the default value is
                           even sensible.  Caution is advised, and feedback
                           is most welcome.

また余りオススメしませんが起動パラメータにいれるのももちろん可能です。
以下のように付加してください。


-p http_range_support=on

この状態で一日放置したところ普段上がってもLAが0.2ぐらいのサーバが1まで上がってそのあと一気に2まで上がりました。
設定を変えた直後は特にLAも上がってなかったのですが・・・
レスポンスタイムは特に悪化してないようなのですが気持ちが悪かったのでOFFにしました。

まだちょっと本番に投入するには気合がいる設定です(実験的とも書いてありますし)
ただ再起動なしで設定出来ますし試しに入れてみるのはありかもしれません。(OFFにしたらすぐLA下がりました)

さて、実質Rangeは使えないのですが単純にバックエンドにpipeしてしまえば使えます。passだとダメです。


sub vcl_recv {
	if(req.http.Range){
		return(pipe);
	}
}

こんな感じです。
コレだとRangeでリクエストしてきたものすべてがバックエンドに直撃しますので拡張子で絞ったりした方がいいかもしれません。
例えば3gp/3g2で制限掛ける場合


sub vcl_recv {
	if(req.url ~ "\.(3gp|3g2)$" && req.http.Range){
		return(pipe);
	}
}

こうですね!


  One Response to “VarnishでRangeリクエストに対応する方法”

  1. […] This post was mentioned on Twitter by madSupporter and Varnish Cache, \いわなちゃん/. \いわなちゃん/ said: ちょっとしたコネタですが・・・ [blog] VarnishでRangeリクエストに対応する方法 http://bit.ly/dyu […]

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください