モニタリングベストプラクティス
このガイドでは、リアルタイムでメトリックをモニタリングし、実用的な決定を下す方法を説明します。一般的な問題に対応し、進入許容数を調整する方法を扱います。
クイックリファレンス
注意すべき主要メトリック:
- 待機ユーザー数 + 待ち時間: 進入許容数の適切性を示す
- 進入量 vs 処理完了量: 統合状態を示す
- 処理時間: サーバー負荷状態を示す
健全な指標:
- 進入量 ≈ 処理完了量(10-20%以内)
- 処理時間: 安定しているか減少
- 待機ユーザー数: 低く、短い待ち時間
- 処理完了率: >80%
警告シグナル:
- 処理時間が持続的に増加 → サーバーストレスまたはパフォーマンス低下
- 処理完了率 <70% → 明示的な終了の欠落または統合問題
- 待機ユーザー数が増加し、待ち時間が増加 → 需要が進入許容数を超過
重大な問題(即座の対応が必要):
- 処理時間が急激に急増 → 即座に進入許容数を減少
- 処理完了率 <50% → 重大な統合失敗; タイムアウト減少および調査
- 待機ユーザー数が急速に増加し、高い待ち時間 → 進入許容数の枯渇; サーバー状態の評価
一般的なシナリオと対応
シナリオ1: 高い待機列、高い待ち時間、サーバーリソースに余裕あり
症状:
- 待機ユーザー数: 高い
- 平均待ち時間: 高い
- サーバーリソース: 未活用
意味: 進入許容数が低すぎる設定になっています。サーバーはより多くのトラフィックを処理できますが、NetFUNNELが進入を過度に制限しています。
即座の対応:
- サーバーリソース使用率を確認(CPU、メモリ、I/O)
- リソースが未活用状態であれば、進入許容数を10-20%増加
- 5-10分間、待機ユーザー数と待ち時間をモニタリング - 減少する必要がある
- 改善されたら、追加の段階的な増加を検討
例:
現在の状況:
- 進入許容数: 100 TPS
- 待機ユーザー数: 200名
- 待ち時間: 20秒
- サーバーCPU: 50%(リソースに余裕あり)
対応: 進入許容数を110-120 TPSに増加
モニタリング: 待機ユーザー数/待ち時間が減少する必要がある
シナリオ2: 高い待機ユーザー数と低い処理完了率
症状:
- 進入量: 100 TPS
- 処理完了量: 50 TPS(またはそれ以下)
- 処理完了率: <50%
- 待機ユーザー数: 増加中
- 待ち時間: 増加中
意味: 明示的なサービス終了が適切に発生していません。ユーザーが進入しますが、明示的にキーを返却しないため、進入許容数が不必要に保持されています。
即座の対応:
- タイムアウト値を即座に減少:
- 処理時間が1-2秒の場合、タイムアウト最小値を1秒、最大値を2秒に設定
- これは新しいユーザーのために進入許容数を迅速に解放します
- タイムアウト設定はセグメント高度な設定 - タイミング(基本制御)または高度な設定 - タイミング(区間制御)で調整できます
- 待機ユーザー数をモニタリング - 減少し始める必要がある
- タイムアウト調整後も待機ユーザー数が長い場合は、進入許容数の増加を検討(サーバーリソースが許容する場合)
長期的な対応:
- 根本原因の調査:
- コードに
nfStop()呼び出しが欠落していないか確認 - 統合実装の検証
- 統合失敗に関するエラーログの確認
- コードに
- 統合問題の修正:
- すべての適切な場所に
nfStop()呼び出しを追加 - エラー処理にキー返却が含まれるように保証
- すべての適切な場所に
- タイムアウト設定の最適化:
- 実際の処理時間 + バッファに基づいてタイムアウト設定
- 例: 処理時間が平均5秒の場合、タイムアウトを6-7秒に設定
明示的な終了の欠落
処理完了率が持続的に70%未満の場合、これは重大な統合問題です。タイムアウトが即座に問題を緩和できますが、根本原因を修正する必要があります。
シナリオ3: 処理時間の増加
症状:
- 処理時間: 段階的に増加
- 待機ユーザー数: 増加する場合もあれば増加しない場合もある
意味: サーバー負荷が増加しているか、パフォーマンスが低下しています。これはサーバーストレスの間接的な指標です。
即座の対応:
- サーバーリソースを確認(APMまたはサーバーモニタリングによるCPU、メモリ)
- サーバーが過負荷状態の場合: 即座に進入許容数を40-50%減少
- サーバーリソースに余裕がある場合: 他の問題の可能性(ネットワーク、データベースなど)- 調査
- 処理時間のトレンドをモニタリング - 継続的に増加する場合は、進入許容数をさらに減少
例:
現在の状況:
- 進入許容数: 100 TPS
- 処理時間: 2秒から5秒に増加
- サーバーCPU: 90%(過負荷)
対応: 即座に進入許容数を50-60 TPSに減少
モニタリング: 処理時間が安定化する必要がある
長期的な対応:
- パフォーマンス最適化:
- 遅いコンポーネントを識別するためにアプリケーションプロファイリング
- データベースクエリの最適化
- 必要に応じてサーバーリソースの拡張
- 進入許容数の計画:
- 処理時間の閾値に基づいて最適な進入許容数を決定
- 処理時間が閾値を超過する場合のアラート設定
タイムアウトの最適化
タイムアウト設定は、明示的な終了が発生しない場合に、NetFUNNELがキーを自動的に返却する前に待機する時間を決定します。
基本範囲: 6-20秒(最小値-最大値)
動作方法:
- NetFUNNELは最初に最大値を使用します
nfStop()が呼び出されない場合、タイムアウト後にキーが自動的に返却されます
最適なタイムアウト設定:
- 時間にわたる処理時間をモニタリングして、一般的な範囲を識別
- 最小値を一般的な最小処理時間に設定
- 最大値を一般的な最大処理時間 + 20-30%バッファに設定
- 例: 処理時間が8-12秒の場合、タイムアウトを8-15秒に設定
- 処理完了率が低い場合(<70%)、進入許容数をより迅速に解放するためにタイムアウトを減少
タイムアウト vs 処理時間
処理時間が定期的にタイムアウトを超過する場合、ユーザーはサービス完了前に強制的に終了されます。常に安全バッファを含めて、タイムアウトを一般的な処理時間より高く設定してください。
重要な注意事項
進入許容数の調整について:
- 増加: 10-20%段階的に増加、5-10分間モニタリング
- 減少: サーバー保護時は40-50%積極的に減少
処理時間について:
- NetFUNNELはサーバーCPU/メモリを直接モニタリングしません
- 処理時間はサーバー負荷の間接的な指標です
- 常にサーバーモニタリングツール(APMなど)と相互参照してください