brainstorming
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).
nginx-c-module-perfnginx C module performance optimization and reliability guidelines based on the official nginx development guide. This skill should be used when optimizing nginx C modules for throughput, latency, memory efficiency, and operational resilience. Triggers on tasks involving buffer optimization, connection tuning, shared memory contention, error recovery, timeo…
Independent GitHub snapshot · Automated classification · Original documentation governs
Comprehensive performance optimization and reliability guide for nginx C modules, derived from the official nginx development documentation and production engineering experience. Contains 43 rules across 8 categories, prioritized by impact to guide automated optimization and resilience improvements.
Companion skill: This skill complements nginx-c-modules which covers correctness (memory safety, request lifecycle, configuration). This skill covers performance optimization and operational reliability.
Reference these guidelines when:
| Priority | Category | Impact | Prefix |
|---|---|---|---|
| 1 | Buffer & Zero-Copy I/O | CRITICAL | buf- |
| 2 | Connection Efficiency | CRITICAL | conn- |
| 3 | Lock Contention & Atomics | HIGH | lock- |
| 4 | Error Recovery & Resilience | HIGH | err- |
| 5 | Timeout & Retry Strategy | MEDIUM-HIGH | timeout- |
| 6 | Response Caching | MEDIUM | cache- |
| 7 | Worker & Process Tuning | MEDIUM | worker- |
| 8 | Logging & Metrics | LOW-MEDIUM | log- |
buf-chain-reuse - Reuse Buffer Chain Links Instead of Allocating New Onesbuf-file-sendfile - Use File Buffers for Static Content Instead of Reading into Memorybuf-avoid-copy - Avoid Copying Buffers When Passing Through Filter Chainbuf-coalesce-small - Coalesce Small Buffers Before Outputbuf-shadow-reference - Use Shadow Buffers for Derived Data Instead of Full Copiesbuf-recycled-flag - Mark Buffers as Recycled for Upstream Response Reuseconn-reusable-queue - Mark Idle Connections as Reusable for Pool Recoveryconn-drain-pressure - Handle Connection Drain Under Memory Pressureconn-tcp-nodelay - Control TCP_NODELAY for Latency-Sensitive Responsesconn-prealloc-pool - Size Connection Pool to Avoid Runtime Reallocationconn-close-linger - Use Lingering Close for Graceful Connection Shutdownconn-ssl-session-reuse - Enable SSL Session Caching in Upstream Connectionslock-minimize-critical - Minimize Critical Section Duration in Shared Memorylock-atomic-counters - Use Atomic Operations for Simple Counters Instead of Mutexlock-trylock-fallback - Use ngx_shmtx_trylock with Fallback to Avoid Worker Stallslock-per-worker-aggregate - Aggregate Per-Worker Counters to Reduce Shared Memory Accesslock-alloc-outside - Perform Slab Allocation Outside Hot Pathlock-rw-pattern - Use Read-Copy-Update Pattern for Read-Heavy Shared Dataerr-cache-errno - Cache ngx_errno Immediately to Prevent Overwriteerr-fallback-response - Return Fallback Response When Upstream Failserr-resource-exhaustion - Handle Pool and Slab Allocation Exhaustion Gracefullyerr-blocked-counter - Use Blocked Counter to Prevent Premature Request Destructionerr-connection-error-check - Check Connection Error Flag Before I/O Operationserr-log-once-pattern - Limit Repeated Error Logging to Prevent Log Stormstimeout-upstream-phases - Set Separate Timeouts for Connect, Send, and Read Phasestimeout-retry-next-upstream - Configure next_upstream Mask for Retriable Failurestimeout-backoff-reconnect - Use Exponential Backoff for Upstream Reconnection Attemptstimeout-client-body-limit - Set Client Body Timeout to Bound Slow-Client Resource Usagecache-shm-lru - Implement LRU Eviction in Shared Memory Cache Zonescache-stampede-lock - Prevent Cache Stampede with Single-Flight Patterncache-key-hash - Use ngx_hash for Fixed Cache Key Lookupscache-ttl-atomic - Use Atomic Timestamp Comparison for TTL Expiry Checkscache-conditional-store - Cache Only Successful Responses to Avoid Negative Cache Pollutionworker-accept-mutex - Understand Accept Mutex Impact on Connection Distributionworker-connection-prealloc - Use Pre-Allocated Free List for Module Data Structuresworker-graceful-shutdown - Handle Worker Shutdown Signal Without Data Lossworker-single-process-debug - Support Single-Process Mode for Debuggingworker-cycle-conf - Access Configuration Through Cycle for Process-Level Operationslog-level-guard - Guard Expensive Debug Argument Computation Behind Level Checklog-connection-context - Attach Module Context to Connection Log for Tracinglog-shared-metrics - Collect Metrics via Shared Memory Counterslog-error-dedup - Deduplicate Repeated Error Messages with Throttlinglog-action-string - Set Log Action String for Operation ContextRead individual reference files for detailed explanations and code examples:
| File | Description |
|---|---|
| references/_sections.md | Category definitions and ordering |
| assets/templates/_template.md | Template for new rules |
| metadata.json | Version and reference information |