プロジェクト

全般

プロフィール

機能 #863

未完了

シェアラボサーバ ロードアベレージ高負荷調査・対策

Redmine Admin さんが約2ヶ月前に追加. 約2ヶ月前に更新.

ステータス:
新規
優先度:
急いで
担当者:
-
開始日:
2025-07-04
期日:
進捗率:

0%

予定工数:

説明

シェアラボサーバ ロードアベレージ高負荷調査

🚨 状況

  • シェアラボサーバのロードアベレージが高い状態
  • コマンド監視の影響が疑われるが、停止後もまだ高負荷継続
  • 根本原因の特定と対策が必要

📋 調査項目

  1. 現在のロードアベレージ・システム状況確認
  2. プロセス使用率・リソース消費状況
  3. コマンド監視停止後の影響度測定
  4. 他の高負荷要因の特定
  5. 対策・最適化案の策定

🎯 目標

  • ロードアベレージを正常値(1.0以下)に改善
  • 高負荷要因の除去・最適化
  • 監視システムの最適化

🔧 対策候補

  • 不要プロセスの停止
  • リソース消費プロセスの最適化
  • 監視頻度の調整
  • システム設定の見直し

Redmine Admin さんが約2ヶ月前に更新

🔍 原因判明 - bash_hook.py大量プロセス実行

📊 深刻な状況

  • ロードアベレージ: 22.32 → 32.31 (正常値1.0未満)
  • bash_hook.py プロセス: 数千個が同時実行されていた
  • vmstat実行キュー: 996 processes (異常値)

🐛 根本原因: bash_hook.py無限実行ループ

プログラム内容分析

bash_hook.pyは「シェルコマンド実行監視システム」で以下を実行:

  1. ChatWork通知送信 (API: e1abee3e1ad14e536e590d2316b94554)
  2. SQLiteデータベース保存 (~/monitor/db/monitor.db)
  3. 全コマンド実行結果取得 (subprocess実行)
  4. リスク評価・詳細ログ記録

無限ループ発生メカニズム

.bashrc でコマンド実行フック
    ↓
bash_hook.py 実行
    ↓
subprocess.Popen() でコマンド実行
    ↓
新しいbashセッション開始
    ↓
.bashrc 再読み込み → 再度 bash_hook.py 実行
    ↓
【無限ループ】数千プロセス生成

応急対策実施

# 全bash_hook.pyプロセス強制終了
pkill -f "bash_hook.py"  # 数千プロセス削除

# 結果: プロセス数 数千個 → 0個

📈 vmstat との関連性

  • 996 processes in run queue: bash_hook.py の大量プロセス待ち
  • 高I/Oウェイト: SQLite書き込み・ファイルアクセス集中
  • リソース競合: CPU/メモリ/ディスク同時アクセス

🛡️ 恒久対策が必要

  1. 自己実行ループ防止機能強化
  2. プロセス制限・実行間隔調整
  3. 監視システム設計見直し

他の形式にエクスポート: Atom PDF