Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
今どきのWEBホスティングの高負荷対策 Hosting Casual Talk #1
MATSUMOTO Ryosuke
PRO
June 29, 2014
Technology
3
810
今どきのWEBホスティングの高負荷対策 Hosting Casual Talk #1
MATSUMOTO Ryosuke
PRO
June 29, 2014
Tweet
Share
More Decks by MATSUMOTO Ryosuke
See All by MATSUMOTO Ryosuke
コンテナの研究開発から学ぶLinuxの要素技術
matsumoto_r
PRO
0
780
開発者体験をさらに向上させる 事業と研究との連携
matsumoto_r
PRO
2
1.3k
企業研究の価値と事業との連携
matsumoto_r
PRO
0
610
誇りを持って研究していくために
matsumoto_r
PRO
1
770
インフラの企業研究の価値とこれから
matsumoto_r
PRO
7
16k
Rapid Container Scheduling for Reactive Relocation of Individual HTTP Requests
matsumoto_r
PRO
0
580
クライアントプロセスの権限情報に基づくTCPを介した透過的な権限分離方式の設計
matsumoto_r
PRO
3
6.5k
超個体型データセンターOSを目指した選択性を持つコンテナ実行基盤
matsumoto_r
PRO
4
480
IEEE Computer Society Flagship International Conference COMPSAC 2019 登壇・参加報告
matsumoto_r
PRO
1
810
Other Decks in Technology
See All in Technology
Oracle Cloud Infrastructure:2022年5月度サービス・アップデート
oracle4engineer
PRO
0
120
tfcon-2022-cpp
cpp
5
5.1k
Unity Package Managerで自作パッケージを配布する方法
yunoda
0
200
SRE_チーム立ち上げから1年_気づいたら_SRE_っぽくない仕事まで貢献しちゃってる説
bitkey
PRO
0
2.3k
一人から始めるプロダクトSRE / How to start SRE in a product team, all by yourself
vtryo
4
2.7k
Whats new in Android Media?
myolwin00
2
110
読者のことを考えて書いてみよう / Write with your reader in mind
line_developers
PRO
3
360
BFFとmicroservicesアーキテクチャ
hirac1220
0
100
Agile and Requirement : アジャイルな要件定義について考える
kawaguti
PRO
9
3.4k
開発者のための GitHub Organization の安全な運用と 継続的なモニタリング
flatt_security
3
3.8k
プロダクション環境の信頼性を損ねず観測する技術
egmc
4
610
インフラエンジニアBooks 30分でわかる「Dockerコンテナ開発・環境構築の基本」
cyberblack28
11
7.1k
Featured
See All Featured
Gamification - CAS2011
davidbonilla
75
3.9k
4 Signs Your Business is Dying
shpigford
169
20k
How GitHub Uses GitHub to Build GitHub
holman
465
280k
Practical Orchestrator
shlominoach
178
8.6k
The Most Common Mistakes in Cover Letters
jrick
PRO
4
24k
Designing with Data
zakiwarfel
91
3.9k
Building Applications with DynamoDB
mza
83
4.6k
Raft: Consensus for Rubyists
vanstee
126
5.4k
Keith and Marios Guide to Fast Websites
keithpitt
404
21k
We Have a Design System, Now What?
morganepeng
35
2.9k
Clear Off the Table
cherdarchuk
79
280k
The Illustrated Children's Guide to Kubernetes
chrisshort
14
35k
Transcript
今どきのWEBホスティングの高負荷対策 HOSTING CASUAL TALKS #1 Twitter: @matsumotory MATSUMOTO, Ryosuke
目次 2014/06/28 Hosting Casual Talks #1 2 ¨ Webホスティングの高負荷対策とは ¨
これまでの高負荷対策 ¨ 今どきの高負荷対策 ¨ 今どきの高負荷対策の応用例 ¨ まとめ
Webホスティングのホストとは 2014/06/28 Hosting Casual Talks #1 3 ¨ Webホスティングサービスにおいて,ドメイン名 (FQDN)によって識別され,対応するコンテンツを
配信する機能をホストと呼ぶ.[1] [1] 松本亮介,岡部寿男,リクエスト単位で仮想的にコンピュータリソースを分離する Webサーバのリソース制御アーキテクチャ,情報処理学会研究報告,Vol.2013- IOT-23, No.4, 2013年9月.
Webホスティングの高負荷対策 2014/06/28 Hosting Casual Talks #1 4 ¨ ホスティングは配信コンテンツを予想できない ¤
あらゆるアプリが自由に実行される ¤ あらゆる負荷を想定・制御しなければならない ¨ 共有サーバにおけるリソース占有を防ぐ ¤ 共有ユーザが平等にリソースを使用可能 ¨ 専用サーバにおけるサーバダウンを未然に防ぐ ¤ サーバダウンによるデータ損傷や齟齬を防止
これまでの高負荷対策 2014/06/28 Hosting Casual Talks #1 5 ¨ トラフィック制御 ¤
CGIのCPU等のリソース超過を防げない ¨ 同時接続数制限 ¤ たった一つのCGIがリソース占有することもある ¨ CPU使用時間が閾値を超えたら切断 ¤ 強制中断でありクライアントの印象が悪い ¤ データの齟齬 ¤ DSO※1 のリソース占有を防げない ¨ リクエストに対する条件分岐の記述が書きにくい ¨ リアルタイム性が低い(運用でカバー) ※1 mod_phpやmod_perl等インタプリタをhttpdプロセスに直接組み込んで実行するモデル
今どきの高負荷対策(願望) 2014/06/28 Hosting Casual Talks #1 6 ¨ 管理者がプログラマブルに制御ルールを記述 ¤
柔軟で可読性の高い制御条件を表現したい ¤ サーバプロセスの再起動なくルールを変更したい ¤ 制御ルールがオーバーヘッドにならないようにしたい ¨ リクエスト単位でリソース制御 ¤ リクエストの中断ではなく継続的に処理させたい ¤ 特に制御困難なCPUやDISK I/O等を制御したい
今どきの高負荷対策(願望) 2014/06/28 Hosting Casual Talks #1 7 ¨ 管理者がプログラマブルに制御ルールを記述 ¤
柔軟で可読性の高い制御条件を表現したい ¤ サーバプロセスの再起動なくルールを変更したい ¤ 制御ルールがオーバーヘッドにならないようにしたい ¨ リクエスト単位でリソース制御 ¤ リクエストの中断ではなく継続的に処理させたい ¤ 特に制御困難なCPUやDISK I/O等を制御したい
今どきの高負荷対策 2014/06/28 Hosting Casual Talks #1 8 ¨ mod_mruby WebサーバDSL制御エンジンを開発
¨ 高速かつ省メモリにWebサーバを制御可能 # mrubyTranslateNameFirst “/path/to/proxy.rb”! ! backends = [! "http://192.168.0.101:8888/",! "http://192.168.0.102:8888/",! "http://192.168.0.103:8888/",! ]! ! r = Apache::Request.new! r.reverse_proxy = backend + r.uri!
今どきの高負荷対策(願望) 2014/06/28 Hosting Casual Talks #1 9 ¨ 管理者がプログラマブルに制御ルールを記述 ¤
柔軟で可読性の高い制御条件を表現したい ¤ サーバプロセスの再起動なくルールを変更したい ¤ 制御ルールがオーバーヘッドにならないようにしたい ¨ リクエスト単位でリソース制御 ¤ リクエストの中断ではなく継続的に処理させたい ¤ 特に制御困難なCPUやDISK I/O等を制御したい
今どきの高負荷対策 2014/06/28 Hosting Casual Talks #1 10 ¨ mod_mrubyからcgroup※1 を制御可能にする
¤ 指定のCPU範囲内で処理を継続的に処理 ¤ コア数によってパラメータの変更が必要 r = Apache::Request.new! ! if r.hostname == “matsumoto-r.jp”! cpu = Cgroup::CPU.new “httpd-limited”! # CPU使用量を1コア10%に制御したい場合! cpu.cfs_quota_us = 10000! cpu.create ! cpu.attach! end ※1 cgroupsを制御できるlibcgroupを制御できるmruby-cgroupを組み込んだmrubyを組 み込んだmod_mrubyでApacheを制御
今どきの高負荷対策の応用例 2014/06/28 Hosting Casual Talks #1 11 ¨ 以下のようなリソース制御ルールが記述可能 ¤
ApacheのVirtualHostで高集積ホスティングの場合 ¤ 通常ホストは使用可能CPU※1 の90%から分配 n ただし高負荷ホストと同時であれば75%※2 使用可能 ¤ 高負荷ホストは使用可能CPUの50%から分配 n ただし通常ホストと同時であれば25%使用可能 ¤ 超高負荷ホストは常にCPUの10%から分配 n どのような状況でも常にCPU10%を使用 ¨ 工夫次第で様々なリソース制御ルールを書ける ※1 DISK I/Oでも制御可能 ※2 75%とはコア1つならコアの75%、コア4つならコア3つを指す
まとめ 2014/06/28 Hosting Casual Talks #1 12 ¨ 既存の高負荷対策は問題点が幾つかあった ¤
強制中断制御 ¤ 制御条件記述の柔軟性が低い ¤ 運用から得られる経験的なパラメータ制御 ¨ これからの高負荷対策 ¤ 管理者がプログラマブルに制御ルールを記述 ¤ リクエストパラメータを条件にリソース制御 ¤ 中断せずにリソース割当範囲内で処理を継続