-
From Model Management to an AI Gateway: Tying Assets, Traffic and Cost into a Closed Loop
Model management decides who can use what and how much; the AI gateway enforces it on every request. A tour of the three planes, the model lifecycle, and the request pipeline.
Chinese original: From Model Management to an AI Gateway: Tying Assets, Traffic and Cost into a Closed Loop -
API7 Gateway Upgrade Postmortem: Streaming 500s and Low-Traffic CPU Saturation From Two Independent Bugs
An API7 upgrade introduced streaming 500s and CPU saturation under low traffic. Controlled experiments, a dependency diff, and perf data proved they were two independent bugs.
Chinese original: API7 Gateway Upgrade Postmortem: Streaming 500s and Low-Traffic CPU Saturation From Two Independent Bugs -
Rethinking LLM Gateway Rate Limiting: From an In-Process Leaky Bucket to a Distributed Leaky-Bucket Matrix
How Alibaba Cloud's Bailian gateway rebuilt LLM rate limiting: fixed window plus a distributed LiteTopic leaky-bucket matrix, and the response channel the article skips.
Chinese original: Rethinking LLM Gateway Rate Limiting: From an In-Process Leaky Bucket to a Distributed Leaky-Bucket Matrix -
APISIX Gateway 504s After Exactly 15 Seconds: Tracing It to tcp_syn_retries
An API gateway returned 504s with request time pinned at exactly 15 seconds. Tracing timeouts, kernel parameters, DNS and packet capture points to a SYN retransmission timeout.
Chinese original: APISIX Gateway 504s After Exactly 15 Seconds: Tracing It to tcp_syn_retries -
Coding Agent Harness Selection and Integration: OpenCode, Pi, DeepSeek Harness, Codex, Claude Agent SDK, and OpenHands Compared
A documentation-based comparison of six coding agent harnesses across standalone operation, HTTP APIs and session management, with a decision tree and integration guidance.
Chinese original: Coding Agent Harness Selection and Integration: OpenCode, Pi, DeepSeek Harness, Codex, Claude Agent SDK, and OpenHands Compared -
From Upload to Verifiable Answers: A Go Document Q&A RAG Implementation
How a Go document Q&A system turns an uploaded file into verifiable answers: async parsing, OCR, chunking, hybrid retrieval with RRF, reranking, and citation checking.
Chinese original: From Upload to Verifiable Answers: A Go Document Q&A RAG Implementation -
How to Judge an AI Gateway: Protocol Compatibility, Traffic Governance, and a Performance Scorecard
A practical framework for judging AI gateways: L7 fundamentals, AI traffic handling, provable runtime performance, production maturity, five veto lines, and a weighted scorecard.
Chinese original: How to Judge an AI Gateway: Protocol Compatibility, Traffic Governance, and a Performance Scorecard -
Runtime Behavior Blind Spots: Postmortem of CPU Saturation Bugs in an API7 AI Gateway
Postmortem of CPU saturation in an API7 AI gateway: cancellation propagation, scheduling fairness, decode cost, and streaming backpressure — four failure modes, four fixes.
Chinese original: Runtime Behavior Blind Spots: Postmortem of CPU Saturation Bugs in an API7 AI Gateway -
APISIX Protocol Translation Plugin in Practice: Anthropic and OpenAI Compatible APIs
How an APISIX plugin converts Anthropic Messages API traffic to OpenAI Chat Completions and back, covering streaming, thinking, tool calls, and multimodal images.
Chinese original: APISIX Protocol Translation Plugin in Practice: Anthropic and OpenAI Compatible APIs -
Apache APISIX Architecture: Coroutines, Event-Driven Design, and OpenResty vs Envoy
A look at the Apache APISIX architecture: how event-driven design, coroutines, and LuaJIT on top of OpenResty deliver its performance, plus a comparison with Envoy as a foundation.
Chinese original: Apache APISIX Architecture: Coroutines, Event-Driven Design, and OpenResty vs Envoy -
North-South Entry Gateway Selection
North-south entry gateway selection for a hybrid cloud spanning China and overseas, comparing Istio Gateway, cloud ASM and the Kubernetes Gateway API.
Chinese original: North-South Entry Gateway Selection -
Flood of TIME_WAIT Connections from a Go HTTP Client: Unread Response Bodies and the Liveness Probe
A Go HTTP client produced masses of TIME_WAIT and short-lived connections. Tracing it from request code through response body handling and connection reuse, then Transport tuning.
Chinese original: Flood of TIME_WAIT Connections from a Go HTTP Client: Unread Response Bodies and the Liveness Probe -
Elasticsearch Cluster Turned Red: hs_err Logs, mmap, and 60,000 Shards
Postmortem of a 3-node Elasticsearch cluster that went red with write timeouts: tracing an hs_err crash log to native memory (mmap) exhaustion and rescuing unassigned shards.
Chinese original: Elasticsearch Cluster Turned Red: hs_err Logs, mmap, and 60,000 Shards -
Service Thread Count Spikes: Tracing It to Repeated Thread Pool Creation
A postmortem of a service whose thread count spiked from repeated thread pool creation: monitoring alert, thread dump and heap analysis, root cause, and four fixes.
Chinese original: Service Thread Count Spikes: Tracing It to Repeated Thread Pool Creation -
Feign Calls Pegged the CPU: Repeated HttpMessageConverter Initialization
A production postmortem: Feign calls pegged the CPU because HttpMessageConverters were re-initialized on every call, re-running class loading and Jackson setup.
Chinese original: Feign Calls Pegged the CPU: Repeated HttpMessageConverter Initialization -
Zero-Downtime Elasticsearch Cloud Migration: Data Sync, Document Comparison, and Cutover
A zero-downtime Elasticsearch cloud migration: ~40 indices under 100 GB with no usable update-time fields. Data sync, document comparison, mapping checks, and traffic cutover.
Chinese original: Zero-Downtime Elasticsearch Cloud Migration: Data Sync, Document Comparison, and Cutover -
RocketMQ Client DEADLINE_EXCEEDED in the Cloud: Tracing It to Container Memory
A RocketMQ Java client failed with gRPC DEADLINE_EXCEEDED only in one cloud test cluster. Packet capture and resource-limit tests traced it to container memory pressure.
Chinese original: RocketMQ Client DEADLINE_EXCEEDED in the Cloud: Tracing It to Container Memory -
Elasticsearch Cluster Lost Its Master: Thread Pools, Packet Capture, and 60,000 Shards
Postmortem of a seven-node Elasticsearch 7 cluster that lost its master: thread pool spikes, bandwidth checks, packet capture, and a shard count that had grown past 60,000.
Chinese original: Elasticsearch Cluster Lost Its Master: Thread Pools, Packet Capture, and 60,000 Shards -
OOM in a Gin API Gateway: Caching Every Response Body
A postmortem of an OOM caused by caching every response body in a Gin API gateway: why memory ballooned in minutes, and a safer implementation.
Chinese original: OOM in a Gin API Gateway: Caching Every Response Body -
Elasticsearch Limits and Recommended Configurations
Elasticsearch limits and recommended settings: array and document size caps, a reference index template, shard balancing, delayed allocation, and concurrent recoveries.
Chinese original: Elasticsearch Limits and Recommended Configurations -
Elasticsearch Refresh vs Flush: What Each One Does and When It Runs
Elasticsearch refresh vs flush explained: trigger timing, scope, and how each affects search visibility and write durability, plus the settings to trade one for the other.
Chinese original: Elasticsearch Refresh vs Flush: What Each One Does and When It Runs -
Elasticsearch 7.6.2 "[parent] Data Too Large": Troubleshooting a Circuit Breaker Exception
Troubleshooting the "[parent] Data too large" circuit breaker on Elasticsearch 7.6.2: how use_real_memory and G1 GC interact. The JVM flags here apply to that era's clusters only.
Chinese original: Elasticsearch 7.6.2 "[parent] Data Too Large": Troubleshooting a Circuit Breaker Exception
These are English editions of articles originally published in Chinese on this blog. The Chinese edition is always the most complete and up-to-date version. Feedback and corrections are welcome via email.