$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
今どきのWEBホスティングの高負荷対策 Hosting Casual Talk #1
Search
MATSUMOTO Ryosuke
PRO
June 29, 2014
Technology
3
930
今どきのWEBホスティングの高負荷対策 Hosting Casual Talk #1
MATSUMOTO Ryosuke
PRO
June 29, 2014
Tweet
Share
More Decks by MATSUMOTO Ryosuke
See All by MATSUMOTO Ryosuke
エンジニアのキャリアパスはどう描く? まつもとりーさんと考える後悔しないキャリア選択
matsumoto_r
PRO
9
1.8k
まつもとりーのこれまでとCOGNANOのこれから
matsumoto_r
PRO
0
270
2022年の研究所の評価制度振り返りと今後
matsumoto_r
PRO
0
650
VUCAワールドから紐解く組織や評価制度の変遷と再設計
matsumoto_r
PRO
9
26k
コンテナの研究開発から学ぶLinuxの要素技術
matsumoto_r
PRO
2
1.4k
開発者体験をさらに向上させる 事業と研究との連携
matsumoto_r
PRO
2
2.2k
企業研究の価値と事業との連携
matsumoto_r
PRO
0
1.2k
誇りを持って研究していくために
matsumoto_r
PRO
1
1.4k
インフラの企業研究の価値とこれから
matsumoto_r
PRO
7
19k
Other Decks in Technology
See All in Technology
プロセス改善とE2E自動テストによる、プロダクトの品質向上事例
tomasagi
1
2.8k
システムリプレイスプロジェクト発足から7年、改めてコスト最適化に向き合う / replace and cost optimization
takumi
1
410
2024/12/05 AITuber本著者によるAIキャラクター入門 - AITuberの基礎からソフトウェア設計、失敗談まで
sr2mg4
2
450
MySQL 8.0 から PostgreSQL 16 への移行と RLS 導入までの道のりと学び
baseballyama
0
720
AWS認定試験の長文問題を早く解くコツ
keke1234ke
0
150
Autonomous Database サービス・アップデート (FY25)
oracle4engineer
PRO
0
230
[GDG DevFest Bangkok 2024] - The Future of Retail E-commerce with Gemini AI
punsiriboo
0
290
クラウドネイティブへの小さな一歩!既存VMからコンテナまで、KubeVirtが実現する『無理しないペースの移行』とは!?
tsukaman
0
110
プロダクトの爆速開発を支える、 「作らない・削る・尖らせる」技術
applism118
11
6.5k
LY Accessibility Guidelines @fukuoka_a11yconf_前夜祭
lycorptech_jp
PRO
1
140
農業用ダム監視を目的とした衛星SAR 干渉解析の適用性について
osgeojp
0
140
Kaggleふりかえり会〜LLM 20 Questions & ISIC 2024
recruitengineers
PRO
2
140
Featured
See All Featured
Site-Speed That Sticks
csswizardry
1
130
Making the Leap to Tech Lead
cromwellryan
133
9k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.8k
Producing Creativity
orderedlist
PRO
341
39k
Designing for Performance
lara
604
68k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
27
880
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
GitHub's CSS Performance
jonrohan
1030
460k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
How To Stay Up To Date on Web Technology
chriscoyier
789
250k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.9k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.7k
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 ¨ 既存の高負荷対策は問題点が幾つかあった ¤
強制中断制御 ¤ 制御条件記述の柔軟性が低い ¤ 運用から得られる経験的なパラメータ制御 ¨ これからの高負荷対策 ¤ 管理者がプログラマブルに制御ルールを記述 ¤ リクエストパラメータを条件にリソース制御 ¤ 中断せずにリソース割当範囲内で処理を継続