質問するログイン新規登録

意見交換

0回答

118閲覧

負荷試験でレイテンシーが悪化した時のボトルネック特定手順について(EKS/gRPC/Node.js)

ymmr

総合スコア131

gRPC

gRPCは、グーグル社が開発した通信プロトコルの一つ。Protocol Buffersを用いてシリアライズしバイナリに変換させるため、高速なRPCを実現することができます。また、プログラマは意識せずにHTTP/2を利用できることも特徴です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

パフォーマンス

コード効率の向上や計算に関する質問には、このタグを使ってください。

マイクロサービス

マイクロサービスは、ある目的のサービスを構築する際に、一つの大きなプログラム(モノリス)ではなく、複数の小規模なサービスに分割して組み合わせることで機能を実現するアーキテクチャです。

1グッド

0クリップ

投稿2026/03/01 03:27

編集2026/03/01 03:28

1

0

背景

最近初めてWebアプリケーションの負荷試験(性能試験)を担当しました。
社内に知見が少ないため、自分の進め方が適切だったのか確認したく質問させてください。

今回、負荷時にレイテンシーが悪化する問題があり、最終的には以下が原因でした。

  • マイクロサービス間通信でN+1が発生
  • gRPCクライアントをリクエストごとに生成しておりオーバーヘッドが発生
  • DBはボトルネックではなかった

このようなケースにおいて、
「どのような手順でボトルネックを特定するのが一般的か」を知りたいです。

技術スタック

  • インフラ
    • Amazon EKS
    • Aurora MySQL
    • Grafana
  • アプリ
    • gRPCサーバ(Node.js)
    • Next.js(AppRouter)
    • Prisma
  • 負荷試験ツール
    • k6

自分の進め方

以下の手順で進めました。

1. テストシナリオ作成

  • シナリオ洗い出し
  • p(95), p(99)の閾値設定

2. テストコード・環境準備

  • k6でテストコード作成
  • 負荷試験専用環境を用意

3. テスト実施

  • APIサーバに対して負荷をかけて計測

4. ボトルネック特定

以下の順で切り分けました。

  1. GrafanaでPodのCPU/メモリ/スケーリング状況を確認
  2. Aurora(Database Insight)でスロークエリやコネクション確認
  3. 問題が見つからなかったため、アプリに計測ログを仕込んで分解
    • 外部API(gRPC)通信時間
    • DBアクセス時間
    • Prismaコネクション数

聞きたいこと

  • このようなボトルネック特定の進め方は一般的でしょうか?
  • 特に「ログを仕込んで分解する」以外に、より効率的な方法(APM / トレーシング / プロファイリング等)があれば知りたいです
  • また、今回のような問題(N+1やgRPCクライアント生成)について、
    設計・実装・レビュー段階で防ぐためのプラクティスがあれば教えていただきたいです

実務での進め方やこうすると楽になるといった知見があればぜひ教えてください。

kgetpo👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

この意見交換はまだ受付中です。

会員登録して回答してみよう

アカウントをお持ちの方は

関連した質問