bucket-sort logo bucket-sort

プログラミングとインフラエンジニアリングの覚え書き

  • Posts
  • About
  • Contact
  1. Home
  2. All Posts
  3. 公開サーバーハングアップ時の記録 ②ログ分析

公開サーバーハングアップ時の記録 ②ログ分析

Feb 15, 2026 AWS , Apache , Linux bucket-sort

断片的なログしか残らない障害で、どのように仮説を立てて絞り込んだかを後から振り返れるように、 当時の分析過程を記録しておきます。

この記事では、ハングアップ時に残っていた Apache ログを手がかりに、 当時どのように判断したかを整理します。

手がかりとなったログ

マシンがハングアップする都合上、 十分なログは残っていませんでした。

その中で、唯一継続的に観測できた兆候が Apache の HTTP/2 関連警告ログです。

[Mon Feb 14 10:03:09.046163 2026] [http2:warn] [pid 1940096:tid 1940116] [client xxx.xxx.xxx.xxx:38810] h2_stream(1940096-2-1,CLEANUP): started=1, scheduled=1, ready=0, out_buffer=0
[Mon Feb 14 10:03:09.046199 2026] [http2:warn] [pid 1915817:tid 1915839] [client xxx.xxx.xxx.xxx:38594] h2_stream(1915817-362-1,CLEANUP): started=1, scheduled=1, ready=0, out_buffer=0
[Mon Feb 14 10:03:10.207426 2026] [http2:warn] [pid 1940136:tid 1940156] [client xxx.xxx.xxx.xxx:38838] h2_stream(1940136-0-1,CLEANUP): started=1, scheduled=1, ready=0, out_buffer=0
...

ログから読み取れるポイント

ログの内容を整理すると、以下のような点が読み取れます。

[http2:warn]

  • Apache の HTTP/2 モジュール(mod_http2)に関する警告メッセージ
  • 致命的なエラーではないものの、 ストリーム処理に異常兆候があることを示唆

h2_stream(..., CLEANUP)

HTTP/2 ストリームの後処理(クリーンアップ)段階で 処理が滞留している可能性を示します。

付随するパラメータの状態は以下の通りです。

パラメータ 意味
started=1 ストリームは開始されている
scheduled=1 処理対象としてスケジュールされている
ready=0 応答可能な状態に至っていない
out_buffer=0 レスポンスデータが送信されていない

つまり、

ストリームは確立されているが、 リクエスト処理に進まず応答も返されていない

という状態の接続が、 大量に存在していた可能性があります。

アクセス元 IP アドレス

ログに記録されたクライアント IP が 同一である点も確認できました。

これは、

特定のクライアントが多数の HTTP/2 ストリームを確立し、 それらを未完了のまま保持している

状況を示唆します。

仮説の検討

この時点で、主に次の仮説を検討しました。

① インフラ障害

AWS 側のネットワークやインスタンスに 障害が発生していた可能性です。

ただし、その場合は Service Health Dashboard などでの告知が想定されます。

② Apache の設定不備

HTTP/2 設定によっては 類似の挙動が発生する可能性もあります。

しかし、

  • 同一 IP からのアクセス
  • 短時間における大量の接続

という特徴を踏まえると、 設定不備のみで説明するのは不十分でした。

③ 外部からのアクセスによる影響

本サーバーは

  • ALB 未使用
  • CDN 未使用
  • WAF 未使用

という構成であり、 インターネットから直接アクセス可能な状態でした。

このため、外部からの大量接続で Apache のワーカースレッドが枯渇し、 正常な処理ができなくなった可能性が高いと判断しました。

Slowloris 攻撃の可能性

ここで想起されたのが、次のような攻撃手法です。

  • 接続を確立する
  • リクエストを完了させない
  • サーバー側の接続リソースを占有し続ける

いわゆる Slowloris 攻撃 です。

Slowloris は、接続を長時間維持することで Web サーバーのワーカーやスレッドを枯渇させる DoS 攻撃の一種です。

今回観測された

  • 応答が返されていない HTTP/2 ストリーム
  • 同一 IP からの大量接続
  • サーバーのハングアップ

といった挙動は、 Slowloris による影響と整合する可能性があります。

ただし、この段階では 攻撃手法を断定するには証拠が不足しています。

この時点では断定できませんでした。再現実験で裏取りする方針としました。

参考サイト

Slowloris DDoS 攻撃とは| Akamai
https://www.akamai.com/ja/glossary/what-is-a-slowloris-ddos-attack

スローロリス (DOS攻撃ツール) - Wikipedia
https://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%AD%E3%83%BC%E3%83%AD%E3%83%AA%E3%82%B9_(DOS%E6%94%BB%E6%92%83%E3%83%84%E3%83%BC%E3%83%AB)

セキュリティ DoS HTTP/2 障害対応 Slowloris
← 公開サーバーハングアップ時の記録 ①事象 公開サーバーハングアップ時の記録 ③再現実験 →

Related Posts

  • 公開サーバーハングアップ時の記録 ①事象 Feb 14, 2026
  • 公開サーバーハングアップ時の記録 ④対策 Feb 17, 2026
  • 公開サーバーハングアップ時の記録 ③再現実験 Feb 16, 2026
  • ファイルアップロード機能で注意すべき代表的な脆弱性 Mar 10, 2026

Table of Contents

  • 手がかりとなったログ
  • ログから読み取れるポイント
    • [http2:warn]
    • h2_stream(..., CLEANUP)
    • アクセス元 IP アドレス
  • 仮説の検討
    • ① インフラ障害
    • ② Apache の設定不備
    • ③ 外部からのアクセスによる影響
  • Slowloris 攻撃の可能性
  • 参考サイト

Recent Posts

  • Laravel の Event / Listener で Pub/Sub を実装する Apr 2, 2026
  • [C#] delegate と event の仕組みを整理する Apr 1, 2026
  • Pub/Sub パターンとは何か Mar 31, 2026
  • PHP/Laravel で値の状態を判定するヘルパ関数まとめ Mar 30, 2026
  • Filament の dehydrated メソッドとは何か Mar 29, 2026

Categories

  • AWS27
  • C#22
  • .NET20
  • Laravel16
  • Linux12
  • Apache8
  • MySQL8
  • PHP8
  • DynamoDB6
  • Nginx5
  • WordPress4
  • インフラ4
  • Hugo3
  • セキュリティ3
  • .NET Framework1
  • Aurora1
  • Filament1
  • Git1
  • SQS1

Tags

  • AWS
  • C#
  • .NET
  • Laravel
  • PHP
  • MySQL
  • セキュリティ
  • Linux
  • Apache
  • Code Snippet
  • DynamoDB
  • NoSQL
  • PHP-FPM
  • RDS
  • DoS
  • Nginx
  • Windows
  • WordPress
  • パフォーマンス
  • 監視
  • Amazon Linux 2023
  • CMS
  • Docker
  • Ipset
  • Iptables
  • OPCache
  • Webサーバー
  • 認可
  • Aurora
  • Blade
Powered by Hugo & Explore Theme.