Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Kubernetes環境に対する性能試験
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
kashinoki38 - Yasuhiro Horiuchi
June 30, 2020
Technology
3.6k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Kubernetes環境に対する性能試験
2020/06/30 Kubernetes Novice Tokyo #2でのLT資料です。
kashinoki38 - Yasuhiro Horiuchi
June 30, 2020
More Decks by kashinoki38 - Yasuhiro Horiuchi
See All by kashinoki38 - Yasuhiro Horiuchi
NRF 2026 現地レポート
kashinoki38
0
51
サービス停止を防ぐAWS 活用術 : コンテナワークロードにおける高可用性設計の実践
kashinoki38
0
1k
NRF 2025 現地レポート
kashinoki38
0
770
EKS Auto Mode
kashinoki38
3
7.3k
先行事例を自社課題に当てはめよう 〜 E コマースの課題と生成 AI による解決〜
kashinoki38
0
88
Amazon Bedrock のビジネスへ適用を紹介します!Eコマースにおける課題を Amazon Bedrock で解決、事例とデモの紹介@2024/7/24 JAWS EXPERT online
kashinoki38
0
240
Amazon Personalize導入前に整理したい、ビジネス観点でのレコメンドの考え方
kashinoki38
0
360
Eコマースビジネスにおける生成AIの活用
kashinoki38
0
200
生成 AI が切り開く新たな小売消費財の体験
kashinoki38
0
270
Other Decks in Technology
See All in Technology
暗号化?某ファイルストレージはどうなるの!? 3rd Partyとうまく付き合う秘密度ラベル設計
kasada
0
200
会計事務所と顧問先の契約関係をOIDC・OAuthで表現する
terara
0
330
Oracle MCP Servers Explained
thatjeffsmith
1
500
紙 to デジタル
ichien178
0
130
Android skills に学ぶ
kokiko
0
180
平文パスワードはログに“残り” ── 肝心の侵入は“痕跡すら残らない”
kuroneko13
0
130
マイナンバーカード本人確認の実装比較(OAuth/OIDC Numa (Immersion) Workshop 2026) / 20260825 numa-12
oidfj
PRO
0
260
「面白い!」を信じ抜け。激動の時代を貫く、オンリーワン・エンジニアの条件
kizawa2020
0
240
8bit CPU 2026
koba789
7
2.9k
長期運営で肥大化したExcelマスターデータの解消に向けた移行事例
gree_tech
PRO
0
510
Kiro Crew で始める マルチエージェント開発
miu_crescent
PRO
0
180
あなたの知らないバージョン命名規則
sat
PRO
2
740
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
520
Building Flexible Design Systems
yeseniaperezcruz
330
40k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Unsuck your backbone
ammeep
672
58k
How to make the Groovebox
asonas
2
2.3k
Being A Developer After 40
akosma
91
590k
Faster Mobile Websites
deanohume
310
32k
Code Review Best Practice
trishagee
74
20k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
220
Technical Leadership for Architectural Decision Making
baasie
3
530
Google's AI Overviews - The New Search
badams
0
1.1k
Transcript
マスター タイトルの書式設定 1 Kubernetes環境に対する 性能試験 2020/06/30 Kubernetes Novice Tokyo #2
@kashinoki38 Yasuhiro Horiuchi
マスター タイトルの書式設定 2 Agenda • 自己紹介 • 概要 • デモアプリと実施していること
• 性能試験のための基盤 • 性能改善の営み@K8s の準備 • 性能評価の理解 • Prometheusで最低限監視しておきたい項目 • 監視以外に必要なモノ • 負荷がけ準備 • 試験実施 2
マスター タイトルの書式設定 3 自己紹介 3 • 某SIer勤務 • 業務:性能全般幅広く (プリセールス
/ インフラコンサル / サイジング / 性能試験 / 性能問題解決) • Kubernetes歴4ヶ月 • あんまり周りにK8sの監視ちゃんとやりながら試験してるところないなあ • ▷K8s上のアプリケーションに対する性能試験についてベストラプラクティスを 調査中 https://kashionki38.hatenablog.com/ (Hatena) @ka_shino_ki (Twitter)
マスター タイトルの書式設定 4 概要 デモアプリと実施していること 4 • Sock Shop •
https://microservices-demo.github.io/ • Weaveworksのマイクロサービスデモアプリ • 靴下のECサイト • 公式GitHubは古いので、K8s v1.16への対応が必要 ↓ https://github.com/kashinoki38/microservices-demo • 実施していること • GKE上にSock Shopをデプロイし、性能試験っぽいこと をして実施→評価→解析を回す =性能改善の営み @ K8s
マスター タイトルの書式設定 5 概要 性能試験のための基盤 5 Test Environment Prometheus Logging
sock-shop istio-system monitoring jmeter Metrics Tracing 負荷がけ サンプルアプリ Grafana
マスター タイトルの書式設定 6 性能改善の営み @K8s の準備 性能評価の理解 6 • サービス監視(RED)
• Rate : =Throughput, 秒間リクエスト数, 秒間PV数 • Error Rate : エラー率, 5xxとか • Duration : =ResponseTime, %ile評価が一般的 • リソース監視(USE)http://www.brendangregg.com/usemethod.html • Utilization : 使用率 E.g. CPU使用率 • Saturation : 飽和度, どれくらいキューに詰まっているか E.g. ロードアベレージ • Errors : エラーイベントの数
マスター タイトルの書式設定 7 性能改善の営み @K8s の準備 性能評価の理解 7 • サービス監視(RED)
• Rate : =Throughput, 秒間リクエスト数, 秒間PV数 • Error Rate : エラー率, 5xxとか • Duration : =ResponseTime, %ile評価が一般的 • リソース監視(USE)http://www.brendangregg.com/usemethod.html • Utilization : 使用率 E.g. CPU使用率 • Saturation : 飽和度, どれくらいキューに詰まっているか E.g. ロードアベレージ • Errors : エラーイベントの数 後から情報取るのは困難、、 コマンドだけだと対象が多すぎて全部見れない、、
マスター タイトルの書式設定 8 性能改善の営み @K8s の準備 性能評価の理解 8 • サービス監視(RED)
• Rate : =Throughput, 秒間リクエスト数, 秒間PV数 • Error Rate : エラー率, 5xxとか • Duration : =ResponseTime, %ile評価が一般的 • リソース監視(USE)http://www.brendangregg.com/usemethod.html • Utilization : 使用率 E.g. CPU使用率 • Saturation : 飽和度, どれくらいキューに詰まっているか E.g. ロードアベレージ • Errors : エラーイベントの数 メトリクス監視はPrometheusでできる 後から情報取るのは困難、、 コマンドだけだと対象が多すぎて全部見れない、、
マスター タイトルの書式設定 9 性能改善の営み @K8s の準備 Prometheusで最低限監視しておきたい項目 9 種別 監視対象
メトリクス How 観点 サービス監視 RED Jmeter クライアント側 Throughput ResponseTime Error% Jmeterのメトリクスを収集 BackendListner->InfluxDB->Grafana 試験の性能目標に対して達成して いるかどうか システム側 Throughput ResponseTime Error% Istioのテレメトリ機能で各serviceのメ トリクスを収集 現状、評価よりは解析用途 (SLOを達成しているかどうか?) リソース監視 USE Node CPU/Memory/NW/Disk 使用量 NodeExporterをDaemonSetとして配置し収 集 各Nodeのリソース上限に抵触して いないか Pod/Container CPU/Memory使用量 cAdvisorにて収集 (Kubeletバイナリに統合されているので scrapeの設定のみでOK) Limitsに抵触していないか 急に死んでいないか • これに加え主要なMWのメトリクスも見ておきたい • Nginx / MySQL / MongoDB • さらに管理リソースの監視も必要のはず • K8s, Istioのコントロールプレーン • kubelet, kube-proxy, envoy トラブル事例含 めて調査中
マスター タイトルの書式設定 11 • Observabilityの3柱 • Metrics→Done by Prometheus •
Logging→Loki • 重要性:基本的に永続化されない。kubectl logsじゃきつい トラシューしたいときに残っているようにしたい • Tracing→ • 重要性:MSA数珠つなぎでややこしい E2Eで遅くても原因のサービスにたどり着けない 11 https://peter.bourgon.org/blog/2017/02/21/metrics- tracing-and-logging.html トラブル事例含め て調査中 トラブル事例含め て調査中 性能改善の営み @K8s の準備 監視以外に必要なモノ
マスター タイトルの書式設定 12 性能改善の営み @K8s の準備 12 Test Environment Prometheus
Logging sock-shop istio-system monitoring jmeter Metrics Tracing 負荷がけ サンプルアプリ Grafana
マスター タイトルの書式設定 13 性能改善の営み @K8s の準備 負荷がけ準備 13 • 負荷がけクライアントもK8sにデプロイしたい
• とりあえずJmeterで探してみる • Jmeter Operator発見 https://github.com/kubernauts/jmeter-operator • Operatorが割とCPUを食うので一旦Operatorはやめて、Deploymentだけに PodのCPU使用率
マスター タイトルの書式設定 14 性能改善の営み @K8s の準備 14 Test Environment Prometheus
Logging sock-shop istio-system monitoring jmeter Metrics Tracing 負荷がけ サンプルアプリ Grafana
マスター タイトルの書式設定 16 試験実施 16 • シナリオ • 登録済みのユーザによる、ソックス購入シナリオ •
jmeterシナリオ https://github.com/kashinoki38/microservices-demo/blob/master/deploy/kubernetes/manifests- loadtest/scenario.jmx • シナリオフロー https://github.com/kashinoki38/microservices- demo/blob/master/deploy/kubernetes/loadtests/scenario-definition.xlsx
マスター タイトルの書式設定 17 試験実施 – shot1 17 • 目標負荷:100tps(Transaction =
PV) • 未達 Jmeter実行結果
マスター タイトルの書式設定 18 試験実施 – shot1 Node1台のCPUがサチっている 18 • NodeのCPU使用率を確認すると1台の使用率がサチっている
NodeのCPU使用率
マスター タイトルの書式設定 19 試験実施 – shot1 Node1台のCPUがサチっている 19 • NodeのCPU使用率を確認すると1台の使用率がサチっている
ノードを追加 後から思えばpodの ノード偏りもあった NodeのCPU使用率
マスター タイトルの書式設定 20 試験実施 – shot2 20 • 目標負荷:100tps(Transaction =
PV) • 達成 Jmeter実行結果
マスター タイトルの書式設定 21 試験実施 – shot3 21 • 目標負荷:150tps(Transaction =
PV) • 未達 • Topページが大幅に遅延 Jmeter実行結果
マスター タイトルの書式設定 22 試験実施 – shot3 22 • 目標負荷:150tps(Transaction =
PV) • 未達 • Topページが大幅に遅延 • 解析 • front-end podのContainerのCPU使用量がLimits付近 front-end containerのCPU使用量 TopのJmeterレスポンスタイム
マスター タイトルの書式設定 23 試験実施 – shot3 23 • 目標負荷:150tps(Transaction =
PV) • 未達 • Topページが大幅に遅延 • 解析 • front-end podのContainerのCPU使用量がLimits付近 • front-end→catalogueのoutgoing request durationが遅い Istio Workload front-end
マスター タイトルの書式設定 24 試験実施 – shot3 24 • 目標負荷:150tps(Transaction =
PV) • 未達 • Topページが大幅に遅延 • 解析 • front-end podのContainerのCPU使用量がLimits付近 • front-end→catalogueのoutgoing request durationが遅い • catalogueのRequest Durationが遅い Istio Workload front-end Istio Workload catalogue
マスター タイトルの書式設定 25 試験実施 – shot3 25 • 目標負荷:150tps(Transaction =
PV) • 未達 • Topページが大幅に遅延 • 解析 • front-end podのContainerのCPU使用量がLimits付近 • front-end→catalogueのoutgoing request durationが遅い • catalogueのRequest Durationが遅い • catalogue containerがrestartしている時間でJmeterの レスポンスが遅延 not ready catalogue containerのCPU使用率 TopのJmeterレスポンスタイム catalogue container ready数 catalogue container restart
マスター タイトルの書式設定 26 試験実施 – shot3 26 • 目標負荷:150tps(Transaction =
PV) • 未達 • Topページが大幅に遅延 • 解析 • front-end podのContainerのCPU使用量がLimits付近 • front-end→catalogueのoutgoing request durationが遅い • catalogueのRequest Durationが遅い • catalogue containerがrestartしている時間でJmeterの レスポンスが遅延 • catalogue containerがrestartしている時間でnpm ERR! 頻発 catalogue podのログ
マスター タイトルの書式設定 27 試験実施 – shot3 27 • 目標負荷:150tps(Transaction =
PV) • 未達 • Topページが大幅に遅延 • 解析 • front-end podのContainerのCPU使用量がLimits付近 • front-end→catalogueのoutgoing request durationが遅い • catalogueのRequest Durationが遅い • catalogue containerがrestartしている時間でJmeterの レスポンスが遅延 • catalogue containerがrestartしている時間でnpm ERR! 頻発 • ボトルネック仮説 • front-endのCPU枯渇 → Podを増設、プロファイリング • catalogueの遅延+エラー頻発 → 詳細解析(How?)
マスター タイトルの書式設定 28 試験実施 – shot3 28 • 目標負荷:150tps(Transaction =
PV) • 未達 • Topページが大幅に遅延 • 解析 • front-end podのContainerのCPU使用量がLimits付近 • front-end→catalogueのoutgoing request durationが遅い • catalogueのRequest Durationが遅い • catalogue containerがrestartしている時間でJmeterの レスポンスが遅延 • catalogue containerがrestartしている時間でnpm ERR! 頻発 • ボトルネック仮説 • front-endのCPU枯渇 → Podを増設、プロファイリング • catalogueの遅延+エラー頻発 → 詳細解析(How?) 力尽きた
マスター タイトルの書式設定 29 今後の改善事項 29 • まとめ • Sock Shopに対して最低限のリソースとサービスメトリクスを評価する基盤作った
• 作業途中のものは随時ここに →https://github.com/kashinoki38/microservices-demo/tree/master/deploy/kubernetes • とりあえず性能改善の営みをなんとなく回せる • 改善事項 • ボトルネック情報の蓄積←ぜひ教えて下さい! • 試験実施改善 • 自動化 • シナリオのバージョン管理+試験結果との紐付け • 詳細な解析 • MWリソース、プロファイリングの差し込み方 • Jaeger, Kiali, Lokiの有効活用