SlideShare a Scribd company logo
1 of 22
Download to read offline
さくらのクラウドで
h2oのベンチマーク
emasaka
h2o
Webサーバー
奥	一穂氏(DeNA)作(2014〜)
https://github.com/h2o/h2o
特徴
爆速(らしい)
特にヘッダーのパースが速い(らしい)
picohttpparser
HTTP/2対応
ならばベンチマーク
h2o	vs.	Apache	httpd	vs.	Nginx
要件
サーバーとクライアントと別の物理サーバーで
ただし公衆網は通らないほうがいい
回線がボトルネックになりそう
安く(できればタダ)
さくらのクラウド
石狩第1	DCと石狩第2	DCから選べる
サーバーは確実に分かれるが、建物内で通信するはず
こんな感じ
※写真は	さくらインターネットのプレスリリース
(
)から拝借
http://www.sakura.ad.jp/press/2011/0719_cedec.html
さくらのクラウド(続き)
日割り計算で借りられる
OSCで2万円分のクーポンをもらった
借りたサーバー
日割912円のプラン。
CPU:6コア
メモリ:12GB
ディスク:SSD
Ubuntu	14.04	LTS
を2台
6コア
$	nproc
6
借りたサーバー(続き)
クライアント:石狩第1
wrk
サーバー:石狩第2
h2o
Apache	httpd
Nginx
クライアントに
wrkをインストール
$	sudo	apt-get	update
$	sudo	apt-get	install	build-essential	libssl-dev	git
$	git	clone	https://github.com/wg/wrk.git
$	cd	wrk
$	make
$	sudo	cp	wrk	/usr/local/bin
サーバーに
Apache	httpdをインストー
ル
$	sudo	apt-get	install	apache2
$	sudo	vi	/etc/apache2/ports.conf
Listen	8002
$	sudo	vi	/etc/apache2/sites/sites-available/000-default.conf
<VirtualHost	*:8002>
$	sudo	service	apache2	restart
サーバーに
Nginxをインストール
$	sudo	apt-get	install	nginx-full
$	sudo	vi	/etc/nginx/sites-available/default
								listen	8003	default_server;
								root	/var/www/html
$	sudo	service	nginx	restart
h2oをインストール
ローカルからAnsibleを実行
h2o設定
$	vi	h2o.conf
listen:	8001
hosts:
		"127.0.0.1.xip.io:8001":
				paths:
						/:
								file.dir:	/var/www/html
				access-log:	/dev/null
共通コンテンツ
$	sudo	sh	-c	'echo	"<html></html>"	>	/var/www/html/index.html'
クライアントからwgetでそれぞれアクセスして確認
結果(h2o)
$	wrk	-c	500	-d	30	-t	5	http://hoge.example.com:8001/
Running	30s	test	@	http://hoge.example.com:8001/
		5	threads	and	500	connections
		Thread	Stats			Avg						Stdev					Max			+/-	Stdev
				Latency			137.68ms		225.00ms			1.98s				86.18%
				Req/Sec					4.80k					2.20k			18.12k				75.19%
		701376	requests	in	30.01s,	149.83MB	read
		Socket	errors:	connect	0,	read	0,	write	0,	timeout	57
Requests/sec:		23368.91
Transfer/sec:						4.99MB
結果(Apache	httpd)
$	wrk	-c	500	-d	30	-t	5	http://hoge.example.com:8002/
Running	30s	test	@	http://hoge.example.com:8002/
		5	threads	and	500	connections
		Thread	Stats			Avg						Stdev					Max			+/-	Stdev
				Latency					2.35ms			12.11ms	459.69ms			99.39%
				Req/Sec					4.43k					2.52k			13.62k				65.58%
		528951	requests	in	30.10s,	120.66MB	read
Requests/sec:		17574.07
Transfer/sec:						4.01MB
結果(Nginx)
$	wrk	-c	500	-d	30	-t	5	http://hoge.example.com:8003/
Running	30s	test	@	http://hoge.example.com:8003/
		5	threads	and	500	connections
		Thread	Stats			Avg						Stdev					Max			+/-	Stdev
				Latency			173.36ms		300.41ms			1.89s				86.39%
				Req/Sec					4.66k					2.39k			20.73k				73.19%
		685059	requests	in	30.10s,	167.87MB	read
		Socket	errors:	connect	0,	read	0,	write	0,	timeout	243
Requests/sec:		22759.04
Transfer/sec:						5.58MB
比較
h2o速い。
Server Req
h2o 701376
Apache	httpd 528951
Nginx 685059
ただし
大きなデータだと実は3つにあまり差がない(Apache
httpdが少し速い?)
リクエスト処理	vs.	I/O性能?
h2oの例では面倒なのでログを出してない。それも有利?

More Related Content

What's hot

CyberAgentにおけるMongoDB
CyberAgentにおけるMongoDBCyberAgentにおけるMongoDB
CyberAgentにおけるMongoDBAkihiro Kuwano
 
[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いている[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いているAkihiro Kuwano
 
MySQLやSSDとかの話 後編
MySQLやSSDとかの話 後編MySQLやSSDとかの話 後編
MySQLやSSDとかの話 後編Takanori Sejima
 
MySQLやSSDとかの話・前編
MySQLやSSDとかの話・前編MySQLやSSDとかの話・前編
MySQLやSSDとかの話・前編gree_tech
 
MongoDBのはじめての運用テキスト
MongoDBのはじめての運用テキストMongoDBのはじめての運用テキスト
MongoDBのはじめての運用テキストAkihiro Kuwano
 
EthernetやCPUなどの話
EthernetやCPUなどの話EthernetやCPUなどの話
EthernetやCPUなどの話Takanori Sejima
 
MySQLやSSDとかの話 その後
MySQLやSSDとかの話 その後MySQLやSSDとかの話 その後
MySQLやSSDとかの話 その後Takanori Sejima
 
WiredTigerストレージエンジン楽しい
WiredTigerストレージエンジン楽しいWiredTigerストレージエンジン楽しい
WiredTigerストレージエンジン楽しいAkihiro Kuwano
 
GPGPUによるパーソナルスーパーコンピュータの可能性
GPGPUによるパーソナルスーパーコンピュータの可能性GPGPUによるパーソナルスーパーコンピュータの可能性
GPGPUによるパーソナルスーパーコンピュータの可能性Yusaku Watanabe
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDBmoai kids
 
TIME_WAITに関する話
TIME_WAITに関する話TIME_WAITに関する話
TIME_WAITに関する話Takanori Sejima
 
MySQLやSSDとかの話・後編
MySQLやSSDとかの話・後編MySQLやSSDとかの話・後編
MySQLやSSDとかの話・後編gree_tech
 
sysloadや監視などの話(仮)
sysloadや監視などの話(仮)sysloadや監視などの話(仮)
sysloadや監視などの話(仮)Takanori Sejima
 
MySQLやSSDとかの話 前編
MySQLやSSDとかの話 前編MySQLやSSDとかの話 前編
MySQLやSSDとかの話 前編Takanori Sejima
 
MongoDB〜その性質と利用場面〜
MongoDB〜その性質と利用場面〜MongoDB〜その性質と利用場面〜
MongoDB〜その性質と利用場面〜Naruhiko Ogasawara
 
MongoDB Configパラメータ解説
MongoDB Configパラメータ解説MongoDB Configパラメータ解説
MongoDB Configパラメータ解説Shoken Fujisaki
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!Tetsutaro Watanabe
 
カジュアルにMongo dbのbackup機能説明
カジュアルにMongo dbのbackup機能説明カジュアルにMongo dbのbackup機能説明
カジュアルにMongo dbのbackup機能説明Masakazu Matsushita
 
5.6 以前の InnoDB Flushing
5.6 以前の InnoDB Flushing5.6 以前の InnoDB Flushing
5.6 以前の InnoDB FlushingTakanori Sejima
 
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land
ソーシャルゲームにおけるMongoDB適用事例 - Animal LandソーシャルゲームにおけるMongoDB適用事例 - Animal Land
ソーシャルゲームにおけるMongoDB適用事例 - Animal LandMasakazu Matsushita
 

What's hot (20)

CyberAgentにおけるMongoDB
CyberAgentにおけるMongoDBCyberAgentにおけるMongoDB
CyberAgentにおけるMongoDB
 
[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いている[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いている
 
MySQLやSSDとかの話 後編
MySQLやSSDとかの話 後編MySQLやSSDとかの話 後編
MySQLやSSDとかの話 後編
 
MySQLやSSDとかの話・前編
MySQLやSSDとかの話・前編MySQLやSSDとかの話・前編
MySQLやSSDとかの話・前編
 
MongoDBのはじめての運用テキスト
MongoDBのはじめての運用テキストMongoDBのはじめての運用テキスト
MongoDBのはじめての運用テキスト
 
EthernetやCPUなどの話
EthernetやCPUなどの話EthernetやCPUなどの話
EthernetやCPUなどの話
 
MySQLやSSDとかの話 その後
MySQLやSSDとかの話 その後MySQLやSSDとかの話 その後
MySQLやSSDとかの話 その後
 
WiredTigerストレージエンジン楽しい
WiredTigerストレージエンジン楽しいWiredTigerストレージエンジン楽しい
WiredTigerストレージエンジン楽しい
 
GPGPUによるパーソナルスーパーコンピュータの可能性
GPGPUによるパーソナルスーパーコンピュータの可能性GPGPUによるパーソナルスーパーコンピュータの可能性
GPGPUによるパーソナルスーパーコンピュータの可能性
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
TIME_WAITに関する話
TIME_WAITに関する話TIME_WAITに関する話
TIME_WAITに関する話
 
MySQLやSSDとかの話・後編
MySQLやSSDとかの話・後編MySQLやSSDとかの話・後編
MySQLやSSDとかの話・後編
 
sysloadや監視などの話(仮)
sysloadや監視などの話(仮)sysloadや監視などの話(仮)
sysloadや監視などの話(仮)
 
MySQLやSSDとかの話 前編
MySQLやSSDとかの話 前編MySQLやSSDとかの話 前編
MySQLやSSDとかの話 前編
 
MongoDB〜その性質と利用場面〜
MongoDB〜その性質と利用場面〜MongoDB〜その性質と利用場面〜
MongoDB〜その性質と利用場面〜
 
MongoDB Configパラメータ解説
MongoDB Configパラメータ解説MongoDB Configパラメータ解説
MongoDB Configパラメータ解説
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
 
カジュアルにMongo dbのbackup機能説明
カジュアルにMongo dbのbackup機能説明カジュアルにMongo dbのbackup機能説明
カジュアルにMongo dbのbackup機能説明
 
5.6 以前の InnoDB Flushing
5.6 以前の InnoDB Flushing5.6 以前の InnoDB Flushing
5.6 以前の InnoDB Flushing
 
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land
ソーシャルゲームにおけるMongoDB適用事例 - Animal LandソーシャルゲームにおけるMongoDB適用事例 - Animal Land
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land
 

More from emasaka

ibus-skkをなんとかすっぺ会議
ibus-skkをなんとかすっぺ会議ibus-skkをなんとかすっぺ会議
ibus-skkをなんとかすっぺ会議emasaka
 
濁点の話
濁点の話濁点の話
濁点の話emasaka
 
GoBoLinuxを試した
GoBoLinuxを試したGoBoLinuxを試した
GoBoLinuxを試したemasaka
 
みおぽん for CLI
みおぽん for CLIみおぽん for CLI
みおぽん for CLIemasaka
 
GNU make 4.0に何かいる
GNU make 4.0に何かいるGNU make 4.0に何かいる
GNU make 4.0に何かいるemasaka
 
メタメタプログラミングRuby
メタメタプログラミングRubyメタメタプログラミングRuby
メタメタプログラミングRubyemasaka
 
長いの
長いの長いの
長いのemasaka
 
)の品格
)の品格)の品格
)の品格emasaka
 
エコなWebサーバー
エコなWebサーバーエコなWebサーバー
エコなWebサーバーemasaka
 
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発emasaka
 
Bash on Railsの逆襲
Bash on Railsの逆襲Bash on Railsの逆襲
Bash on Railsの逆襲emasaka
 

More from emasaka (12)

ibus-skkをなんとかすっぺ会議
ibus-skkをなんとかすっぺ会議ibus-skkをなんとかすっぺ会議
ibus-skkをなんとかすっぺ会議
 
濁点の話
濁点の話濁点の話
濁点の話
 
GoBoLinuxを試した
GoBoLinuxを試したGoBoLinuxを試した
GoBoLinuxを試した
 
みおぽん for CLI
みおぽん for CLIみおぽん for CLI
みおぽん for CLI
 
GNU make 4.0に何かいる
GNU make 4.0に何かいるGNU make 4.0に何かいる
GNU make 4.0に何かいる
 
メタメタプログラミングRuby
メタメタプログラミングRubyメタメタプログラミングRuby
メタメタプログラミングRuby
 
長いの
長いの長いの
長いの
 
)の品格
)の品格)の品格
)の品格
 
人力
人力人力
人力
 
エコなWebサーバー
エコなWebサーバーエコなWebサーバー
エコなWebサーバー
 
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
 
Bash on Railsの逆襲
Bash on Railsの逆襲Bash on Railsの逆襲
Bash on Railsの逆襲
 

さくらのクラウドでh2oのベンチマーク