機能 #863
未完了
シェアラボサーバ ロードアベレージ高負荷調査・対策
Redmine Admin さんが約2ヶ月前に追加.
約2ヶ月前に更新.
説明
シェアラボサーバ ロードアベレージ高負荷調査¶
🚨 状況¶
- シェアラボサーバのロードアベレージが高い状態
- コマンド監視の影響が疑われるが、停止後もまだ高負荷継続
- 根本原因の特定と対策が必要
📋 調査項目¶
- 現在のロードアベレージ・システム状況確認
- プロセス使用率・リソース消費状況
- コマンド監視停止後の影響度測定
- 他の高負荷要因の特定
- 対策・最適化案の策定
🎯 目標¶
- ロードアベレージを正常値(1.0以下)に改善
- 高負荷要因の除去・最適化
- 監視システムの最適化
🔧 対策候補¶
- 不要プロセスの停止
- リソース消費プロセスの最適化
- 監視頻度の調整
- システム設定の見直し
🔍 原因判明 - bash_hook.py大量プロセス実行
📊 深刻な状況
-
ロードアベレージ: 22.32 → 32.31 (正常値1.0未満)
-
bash_hook.py プロセス: 数千個が同時実行されていた
-
vmstat実行キュー: 996 processes (異常値)
🐛 根本原因: bash_hook.py無限実行ループ
プログラム内容分析¶
bash_hook.pyは「シェルコマンド実行監視システム」で以下を実行:
-
ChatWork通知送信 (API: e1abee3e1ad14e536e590d2316b94554)
-
SQLiteデータベース保存 (~/monitor/db/monitor.db)
-
全コマンド実行結果取得 (subprocess実行)
- リスク評価・詳細ログ記録
無限ループ発生メカニズム¶
.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/メモリ/ディスク同時アクセス
🛡️ 恒久対策が必要
- 自己実行ループ防止機能強化
- プロセス制限・実行間隔調整
- 監視システム設計見直し
他の形式にエクスポート: Atom
PDF