nginx-c-module-perf について
nginx-c-module-perfは、nginx Cモジュールの性能と運用上の信頼性を高めるためのスキルです。優先度付きの43ルールを8カテゴリに整理し、詳しい解説とコード例を参照ファイルで提供します。
主な機能
- 018カテゴリにわたる43のルール
- 02優先度付きの最適化指針
- 03バッファーとゼロコピーI/Oの手法
- 04接続、ロック、ワーカーの調整
- 05耐障害性、タイムアウト、キャッシュのパターン
活用シーン
- 01モジュールのI/O経路でバッファーコピーを削減
- 02アップストリーム接続とタイムアウトの調整
- 03共有メモリーキャッシュとロック動作の改善
- 04アップストリーム障害やリソース枯渇への復旧策の検討
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill nginx-c-module-perfインストール後、Claude Code で/nginx-c-module-perfを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
metadata.jsonassets/templates/_template.mdreferences/_sections.mdbuf-avoid-copy.mdbuf-chain-reuse.mdbuf-coalesce-small.mdbuf-file-sendfile.mdbuf-recycled-flag.mdbuf-shadow-reference.mdcache-conditional-store.mdcache-key-hash.mdcache-shm-lru.mdcache-stampede-lock.mdcache-ttl-atomic.mdconn-close-linger.mdconn-drain-pressure.mdconn-prealloc-pool.mdconn-reusable-queue.mdconn-ssl-session-reuse.mdconn-tcp-nodelay.mderr-blocked-counter.mderr-cache-errno.mderr-connection-error-check.mderr-fallback-response.mderr-log-once-pattern.mderr-resource-exhaustion.mdlock-alloc-outside.mdlock-atomic-counters.mdlock-minimize-critical.mdlock-per-worker-aggregate.md詳細
nginx.org C モジュールのパフォーマンスと信頼性に関するベストプラクティス
nginx の C モジュール向けの包括的なパフォーマンス最適化と信頼性のガイドです。nginx の公式開発ドキュメントと本番環境でのエンジニアリング経験に基づいています。8 つのカテゴリーにわたる 43 のルールを含み、影響度の高い順に、自動最適化とレジリエンス向上の指針を示します。
関連スキル:このスキルは、正確性(メモリ安全性、リクエストのライフサイクル、設定)を扱う nginx-c-modules を補完します。このスキルでは、パフォーマンスの最適化と運用上の信頼性を扱います。
適用する場面
以下の場合に、これらのガイドラインを参照してください。
- nginx C モジュールのスループットとレイテンシを最適化する
- バッファのコピーを減らし、ゼロコピー I/O パスを有効にする
- コネクションプーリングとソケットオプションを調整する
- ワーカー間の共有メモリロックの競合を最小限に抑える
- 適切なエラー復旧とフォールバックレスポンスを実装する
- アップストリームのタイムアウトと再試行戦略を設定する
- 共有メモリを使ったモジュール内レスポンスキャッシュを構築する
- 負荷がかかった状態でのワーカープロセスの動作を調整する
優先度別のルールカテゴリー
| 優先度 | カテゴリー | 影響度 | 接頭辞 |
|---|---|---|---|
| 1 | バッファとゼロコピー I/O | 重大 | buf- |
| 2 | コネクション効率 | 重大 | conn- |
| 3 | ロック競合とアトミック操作 | 高 | lock- |
| 4 | エラー復旧とレジリエンス | 高 | err- |
| 5 | タイムアウトと再試行戦略 | 中〜高 | timeout- |
| 6 | レスポンスキャッシュ | 中 | cache- |
| 7 | ワーカーとプロセスの調整 | 中 | worker- |
| 8 | ロギングとメトリクス | 低〜中 | log- |
クイックリファレンス
1. バッファとゼロコピー I/O(重大)
buf-chain-reuse- 新規割り当ての代わりにバッファチェーンのリンクを再利用するbuf-file-sendfile- 静的コンテンツをメモリに読み込む代わりに、ファイルバッファを使用するbuf-avoid-copy- フィルターチェーンを通す際にバッファをコピーしないbuf-coalesce-small- 出力前に小さなバッファをまとめるbuf-shadow-reference- 完全なコピーの代わりに、派生データにはシャドウバッファを使用するbuf-recycled-flag- アップストリームレスポンスの再利用に備えて、バッファに再利用可能フラグを設定する
2. コネクション効率(重大)
conn-reusable-queue- アイドル状態のコネクションを再利用可能としてマークし、プールで再利用できるようにするconn-drain-pressure- メモリ圧迫時のコネクションのドレインを処理するconn-tcp-nodelay- レイテンシに敏感なレスポンスに対して TCP_NODELAY を制御するconn-prealloc-pool- 実行時の再割り当てを避けるためにコネクションプールのサイズを設定するconn-close-linger- コネクションを適切にシャットダウンするためにリンガークローズを使用するconn-ssl-session-reuse- アップストリームコネクションで SSL セッションキャッシュを有効にする
3. ロック競合とアトミック操作(高)
lock-minimize-critical- 共有メモリ内のクリティカルセクションの時間を最小限に抑えるlock-atomic-counters- 単純なカウンターにはミューテックスの代わりにアトミック操作を使用するlock-trylock-fallback- ワーカーの停止を避けるため、フォールバックを設けて ngx_shmtx_trylock を使用するlock-per-worker-aggregate- 共有メモリへのアクセスを減らすため、ワーカーごとのカウンターを集計するlock-alloc-outside- ホットパスの外でスラブ割り当てを行うlock-rw-pattern- 読み取りの多い共有データに Read-Copy-Update パターンを使用する
4. エラー復旧とレジリエンス(高)
err-cache-errno- 上書きを防ぐため、ngx_errno を直ちにキャッシュするerr-fallback-response- アップストリームが失敗したときにフォールバックレスポンスを返すerr-resource-exhaustion- プールとスラブの割り当て枯渇を適切に処理するerr-blocked-counter- リクエストの早期破棄を防ぐため、ブロックカウンターを使用するerr-connection-error-check- I/O 操作の前に接続エラーフラグを確認するerr-log-once-pattern- ログの大量発生を防ぐため、エラーログの繰り返しを制限する
5. タイムアウトと再試行戦略(中〜高)
timeout-upstream-phases- 接続、送信、読み取りの各フェーズに個別のタイムアウトを設定するtimeout-retry-next-upstream- 再試行可能な失敗に対して next_upstream マスクを設定するtimeout-backoff-reconnect- アップストリームへの再接続試行に指数バックオフを使用するtimeout-client-body-limit- クライアントのボディタイムアウトを設定し、低速クライアントによるリソース使用量を制限する
6. レスポンスキャッシュ(中)
cache-shm-lru- 共有メモリキャッシュゾーンに LRU 退去方式を実装するcache-stampede-lock- シングルフライトパターンでキャッシュスタンピードを防ぐcache-key-hash- 固定キャッシュキーの検索に ngx_hash を使用するcache-ttl-atomic- TTL の期限切れ判定にアトミックなタイムスタンプ比較を使用するcache-conditional-store- ネガティブキャッシュの汚染を避けるため、成功したレスポンスのみをキャッシュする
7. ワーカーとプロセスのチューニング(中)
worker-accept-mutex- 接続分散に対する Accept Mutex の影響を理解するworker-connection-prealloc- モジュールのデータ構造に事前割り当て済みのフリーリストを使用するworker-graceful-shutdown- データを失わずにワーカーのシャットダウンシグナルを処理するworker-single-process-debug- デバッグ用のシングルプロセスモードをサポートするworker-cycle-conf- プロセスレベルの操作で Cycle を通じて設定にアクセスする
8. ロギングとメトリクス(低〜中)
log-level-guard- レベルチェックでガードし、コストの高いデバッグ引数の計算を抑えるlog-connection-context- トレース用に接続ログへモジュールのコンテキストを付加するlog-shared-metrics- 共有メモリカウンターを使ってメトリクスを収集するlog-error-dedup- スロットリングにより、繰り返されるエラーメッセージを重複排除するlog-action-string- 操作のコンテキストを示すログアクション文字列を設定する
使用方法
詳細な説明とコード例については、個別のリファレンスファイルを参照してください。
- セクションの定義 - カテゴリーの構成と影響レベル
- ルールのテンプレート - 新しいルールを追加するためのテンプレート
リファレンスファイル
| ファイル | 説明 |
|---|---|
| references/_sections.md | カテゴリーの定義と順序 |
| assets/templates/_template.md | 新しいルール用のテンプレート |
| metadata.json | バージョンとリファレンス情報 |
コメント
Markdown 対応