SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Downloaden Sie, um offline zu lesen
Traffic Server を使ってみた


    社内インフラ勉強会
   2011/8/22 藤本和寿
Traffic Serverとは

Apache Traffic Server(略称 ATS, TS)

プロキシサーバーでSquidとかVarnishとかの仲間

日本語の文章が本当に少ないし、英語の文章も少ない
Traffic Serverとは

というか、公式のドキュメントしかない


3.0.1がreleaseされているのに3系のドキュメントがない気が…
目的

前の勉強会でVarnishを使ってみた。

Varnishはオンメモリのキャッシュだと使っているところがあるらしい
けど、ディスクでキャッシュさせるような使い方をしようとして失敗し
ている人がたくさんいる。

Traffic Server ならどうかな…
Varnishの微妙な点

前に検証したときは
 ● 指定したキャッシュ容量を越えるとキャッシュを捨てた
 ● リスタートをするとキャッシュを捨てた
 ● 勝手にリスタートしたりキャッシュがたまらなくなったり
Squidの微妙な点

● rebuilding…があるので気軽にリスタートできない
● 古い
環境

Debian 6.0.2
Apache Traffic Server 3.0.1
起動方法

trafficserver {start|stop|restart}
設定

設定ファイルがいろいろある

bypass.config,cache.config,congestion.config,filter.config,
hosting.config,icp.config,ip_allow.config,logs.config,
log_hosts.config,logs_xml.config,parent.config,partition.config,
records.config,remap.config,splitdns.config,
ssl_multicert.config,storage.config,update.config
設定

今回使ったのは

1. remap.config
    reverse proxyの設定
2. storage.config
    cacheする先の設定
3. records.config
   いろいろチューニングするためのメインの設定
    例.メモリのサイズ
設定

他には

● cache.config
  キャッシュルールの設定
● parent.config
  多段キャッシュとかsibling
● ip_allow.config
  アクセス制御
remap.config

reverse proxy の設定

1. 全部 local の dispatcher に任せる
  map / http://localhost:1080
2. 自分でdispatcherみたいなのをするには…
  192.168.0.1がorigin
  regex_map http://img(01|02).pixiv.net/ http://192.168.0.1:80/ 
storage.config

キャッシュする先の設定

1. 128MB のキャッシュファイル
   指定ディレクトリにcache.dbをつくる
   /usr/local/var/trafficserver 128M
2. Raw device
   こう書けば、filesystemがない状態のdiskを指定できる
   ディスクキャッシュが使われない
   /dev/sdb
   検証時はこれを使った
records.config

1. メモリを2G使う
  CONFIG proxy.config.cache.ram_cache.size INT 2147483648
使ってみた

192.168.0.15にTraffic Serverを設定
画像のキャッシュとして、キャッシュクラスタに追加

画像フロントで設定
upstream cache_cluster {
  consistent_hash $host$request_uri;
  server 192.168.0.11:8080 weight=100;
…
  server 192.168.0.15:8080 weight=100;
}
使ってみた
munin

ないので作る

traffic_line -r hoge でいろいろパラメータが取れるのでSquidとの比
較用に使えそうな値をグラフ化
使ってみた




        リクエスト数
使ってみた




        ヒット率
使ってみた




        キャッシュ
使ってみた

restart してもキャッシュが消えない

rebuilding がない(時間がかからない?)
使ってみた

キャッシュを置くメモリの領域を2GBにしてみる

デフォルトでは指定したディスク1Gあたり1MB?
でもアプリケーションを起動するともっと使う
使ってみた
使ってみた




        iowait、変わらない
使ってみた




    ディスクから読み出す量はちゃんと減ってる
  2KBのwriteがずっと走ってるのはよく分からない
log

Squid形式のlogが出せる

$ curl -H 'Host:img01.pixiv.net' localhost:8080
$ tail /usr/local/var/log/trafficserver/squid.log
1312450988.955 1 127.0.0.1 TCP_MISS/200 300 GET http:
//localhost:1080/ - DIRECT/localhost text/html -
log

$ tail -f squid.log
1312450464.079 40 192.168.0.6 TCP_MISS/200 17412 GET
http://localhost:1080/img/arisuhideki/17932429_s.jpg -
DIRECT/localhost image/jpeg -
1312450464.531 0 192.168.0.6 TCP_HIT/200 20542 GET http:
//localhost:1080/img/sikiura/20761431_s.jpg - NONE/-
image/jpeg -
log

Squid形式のログを出してかつ、asciiで出力する

./records.config:
CONFIG proxy.config.log.squid_log_is_ascii INT 0
CONFIG proxy.config.log.squid_log_enabled INT 1
traffic_line

管理ツール

ヒット率
$ sudo traffic_line -r proxy.node.cache_hit_ratio
0.182696

キャッシュの空き領域
$ sudo traffic_line -r proxy.node.cache.percent_free
0.967941


http://trafficserver.apache.org/docs/v2/admin/cli.htm#1025718
traffic_line

hoge.configを編集したら、設定を反映
$ sudo traffic_line -x

メモリのサイズとかrestartが必要な設定もある
まとめ

1. VarnishはSquidに置き換えるのに難しかった
2. Traffic Serverは指定したサイズ以上のキャッシュを使おうとして
   も挙動はおかしくならないし、restartしてもキャッシュは消えない
3. SquidやVarnishのような優れた管理ツールはない
今後

● キャッシュを捨てるアルゴリズムの検証
  →メモリもディスクも
● 使用するメモリ領域の検証
● ほんとうに raw device は良いの?

Weitere ähnliche Inhalte

Was ist angesagt?

[D36] Michael Stonebrakerが生み出した列指向データベースは何が凄いのか? ~Verticaを例に列指向データベースのアーキテクチャ...
[D36] Michael Stonebrakerが生み出した列指向データベースは何が凄いのか? ~Verticaを例に列指向データベースのアーキテクチャ...[D36] Michael Stonebrakerが生み出した列指向データベースは何が凄いのか? ~Verticaを例に列指向データベースのアーキテクチャ...
[D36] Michael Stonebrakerが生み出した列指向データベースは何が凄いのか? ~Verticaを例に列指向データベースのアーキテクチャ...Insight Technology, Inc.
 
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)ShogoOkazaki
 
20150219 初めての「embulk」
20150219 初めての「embulk」20150219 初めての「embulk」
20150219 初めての「embulk」Hideto Masuoka
 
明日から使えるPostgre sql運用管理テクニック(監視編)
明日から使えるPostgre sql運用管理テクニック(監視編)明日から使えるPostgre sql運用管理テクニック(監視編)
明日から使えるPostgre sql運用管理テクニック(監視編)kasaharatt
 
Rootlessコンテナ
RootlessコンテナRootlessコンテナ
RootlessコンテナAkihiro Suda
 
Zynqで始めるUSB開発-FPGAとARMで動く USBオーディオデバイスの実例とともに-
Zynqで始めるUSB開発-FPGAとARMで動くUSBオーディオデバイスの実例とともに-Zynqで始めるUSB開発-FPGAとARMで動くUSBオーディオデバイスの実例とともに-
Zynqで始めるUSB開発-FPGAとARMで動く USBオーディオデバイスの実例とともに-mmitti
 
名は体を表していますか
名は体を表していますか名は体を表していますか
名は体を表していますかinfinite_loop
 
C/C++プログラマのための開発ツール
C/C++プログラマのための開発ツールC/C++プログラマのための開発ツール
C/C++プログラマのための開発ツールMITSUNARI Shigeo
 
徳丸本に載っていないWebアプリケーションセキュリティ
徳丸本に載っていないWebアプリケーションセキュリティ徳丸本に載っていないWebアプリケーションセキュリティ
徳丸本に載っていないWebアプリケーションセキュリティHiroshi Tokumaru
 
[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編
[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編
[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編Amazon Web Services Japan
 
Amazon RDSを参考にしたとりまチューニング
Amazon RDSを参考にしたとりまチューニングAmazon RDSを参考にしたとりまチューニング
Amazon RDSを参考にしたとりまチューニングShunsuke Mihara
 
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報Masahiko Sawada
 
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャNoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャYasuhiro Matsuo
 
給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明
給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明
給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明National Cheng Kung University
 
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】Hiro H.
 
Performance Comparison of Mutex, RWLock and Atomic types in Rust
Performance Comparison of Mutex, RWLock and  Atomic types in RustPerformance Comparison of Mutex, RWLock and  Atomic types in Rust
Performance Comparison of Mutex, RWLock and Atomic types in RustMitsunori Komatsu
 
Xfs file system for linux
Xfs file system for linuxXfs file system for linux
Xfs file system for linuxAjay Sood
 

Was ist angesagt? (20)

TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
 
[D36] Michael Stonebrakerが生み出した列指向データベースは何が凄いのか? ~Verticaを例に列指向データベースのアーキテクチャ...
[D36] Michael Stonebrakerが生み出した列指向データベースは何が凄いのか? ~Verticaを例に列指向データベースのアーキテクチャ...[D36] Michael Stonebrakerが生み出した列指向データベースは何が凄いのか? ~Verticaを例に列指向データベースのアーキテクチャ...
[D36] Michael Stonebrakerが生み出した列指向データベースは何が凄いのか? ~Verticaを例に列指向データベースのアーキテクチャ...
 
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)
 
20150219 初めての「embulk」
20150219 初めての「embulk」20150219 初めての「embulk」
20150219 初めての「embulk」
 
明日から使えるPostgre sql運用管理テクニック(監視編)
明日から使えるPostgre sql運用管理テクニック(監視編)明日から使えるPostgre sql運用管理テクニック(監視編)
明日から使えるPostgre sql運用管理テクニック(監視編)
 
Rootlessコンテナ
RootlessコンテナRootlessコンテナ
Rootlessコンテナ
 
Zynqで始めるUSB開発-FPGAとARMで動く USBオーディオデバイスの実例とともに-
Zynqで始めるUSB開発-FPGAとARMで動くUSBオーディオデバイスの実例とともに-Zynqで始めるUSB開発-FPGAとARMで動くUSBオーディオデバイスの実例とともに-
Zynqで始めるUSB開発-FPGAとARMで動く USBオーディオデバイスの実例とともに-
 
名は体を表していますか
名は体を表していますか名は体を表していますか
名は体を表していますか
 
C/C++プログラマのための開発ツール
C/C++プログラマのための開発ツールC/C++プログラマのための開発ツール
C/C++プログラマのための開発ツール
 
徳丸本に載っていないWebアプリケーションセキュリティ
徳丸本に載っていないWebアプリケーションセキュリティ徳丸本に載っていないWebアプリケーションセキュリティ
徳丸本に載っていないWebアプリケーションセキュリティ
 
[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編
[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編
[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編
 
Amazon RDSを参考にしたとりまチューニング
Amazon RDSを参考にしたとりまチューニングAmazon RDSを参考にしたとりまチューニング
Amazon RDSを参考にしたとりまチューニング
 
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報
 
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャNoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ
 
給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明
給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明
給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明
 
Gstreamer Basics
Gstreamer BasicsGstreamer Basics
Gstreamer Basics
 
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】
 
Vacuum徹底解説
Vacuum徹底解説Vacuum徹底解説
Vacuum徹底解説
 
Performance Comparison of Mutex, RWLock and Atomic types in Rust
Performance Comparison of Mutex, RWLock and  Atomic types in RustPerformance Comparison of Mutex, RWLock and  Atomic types in Rust
Performance Comparison of Mutex, RWLock and Atomic types in Rust
 
Xfs file system for linux
Xfs file system for linuxXfs file system for linux
Xfs file system for linux
 

Traffic Server を使ってみた