IL-0346 Render · 2025-11-05networking
Render's routing service returned intermittent 404s for web services and static sites in Oregon
Render's routing service depends on a metadata service for information about the user services it routes HTTP traffic to. When a routing instance starts, and on occasional reconnects, it requests a large volume of data from the metadata service. Earlier in 2025 Render deployed a memory optimisation for this transfer behind a feature flag. In late October the flag was removed from code and redeployed, but the metadata service was not redeployed and still depended on the flag. On 5 November the cleanup of unreferenced feature flags removed it, the metadata service reverted to the less efficient transfer, ran out of memory and crashed.
The routing service is designed to keep serving from its last known state when the metadata service is down, but new routing instances that never loaded their initial state were wrongly put into service and returned 404. In the first period the metadata service was crashing in two clusters and only a small share of routing instances was affected. In the second period a surge of HTTP requests scaled up the routing service, and all new instances returned 404, so about half the requests in the affected cluster failed. Render gave the metadata service more memory, re-enabled the feature flag for a time, and then deployed the metadata service without its dependency on the flag. The status page moved to monitoring at 20:48 UTC and the incident was marked resolved at 21:52 UTC.
- Severity
- –
- Scope
- Web services and static sites in two Oregon clusters returned intermittent 404 responses, about 10% of requests in one cluster in the first period and about 50% in the affected cluster in the second; newly created services got 404, updates to existing services propagated slowly, and recently deployed or waking free tier services were affected
- Users affected
- Some customers hosting web services and static sites in the Oregon region
- Region
- Oregon
- Time to detect
- –
- Time to resolve
- 1h 55m
Symptoms
On 5 November 2025, some web services and static sites hosted on Render in the Oregon region answered part of their requests with 404 responses. Every newly created service in the affected clusters got 404 responses, and updates to existing services were slow to take effect.
The 404 responses came in two periods. From 10:39 AM to 11:25 AM PST two Render clusters were slightly degraded: one returned a negligible number of 404 responses and the other returned 404 for about 10% of requests. From 11:59 AM to 12:34 PM PST the degradation was larger, and about 50% of all requests to services in the affected cluster received a 404. Free tier services that had just been deployed or were waking from sleep were also hit.
Behind the 404 responses, the metadata service that tells Render's routing service about the user services it routes to was running out of memory and crashing. The routing service is designed to keep serving traffic from its last known state when the metadata service is down, but newly started routing instances that could not load their initial state from the metadata service were still sent requests and answered them with 404. In the second period a large rise in HTTP requests to the affected cluster made the routing service scale up, and every new routing instance returned 404.
Symptom High error rate
Root cause
Root cause Configuration change
- Trigger
- On 5 November 2025 Render cleaned up feature flags that no longer appeared in code, including a flag that the metadata service still read, so the metadata service went back to its older, less memory-efficient way of sending data to the routing service.
Detection
–
Remediation
- Increased the memory available to the metadata service, a change later reverted
- Re-enabled the feature flag for the more efficient data transfer between the routing and metadata services for a time; the flag was later removed
- Deployed the metadata service so that it no longer relied on the feature flag
Action items
- Enhanced monitoring of the metadata service so that this failure mode raises an alert
- Change feature flag practice so that a flag cannot be removed while it is still being evaluated
- Keep a routing service instance out of traffic if it never loaded state from the metadata service
Lessons
–
Sources
- https://status.render.com/incidents/h255yv1rsq2d · official-status · archived copy
Related cases
IL-0560Some PubNub messages in the US East point of presence were misrouted with no error and not delivered right awayPubNub · 2026same root cause · shared Service discovery
IL-0543Twingate API traffic piled onto one backend behind the global load balancer, failing core services for 29 minutesTwingate · 2025same root cause · shared Cloud load balancer
IL-0192A Crossplane composition merge-policy change for a TLS policy update switched Kubernetes Services from LoadBalancer to ClusterIP and deleted the load balancers behind about 25% of Grafana Cloud servicesGrafana Labs · 2025same root cause · shared Cloud load balancer
IL-0374DigitalOcean creates and management actions failed globally when its service discovery datastore lost quorumDigitalOcean · 2024same root cause · shared Service discovery
IL-0473Jenkins infrastructure went fully down after a pod IP range fix deleted every AKS node pool and could not recreate themJenkins project · 2023same root cause · shared Cloud load balancer
IL-0513PyPI backends on Kubernetes were unreachable over HTTPS for 20 minutes when the Ingress ELB lost its HTTPS listenerPython Software Foundation · 2022same root cause · shared Cloud load balancer
IL-0177WebSocket connections to LINE's messaging-hub on Kubernetes dropped all at once whenever another service's change reloaded a shared HAProxy L7 load balancer, and the reconnect wave overloaded a token API and filled nf_conntrack on NginxLINE Plus · 2022same root cause · shared Cloud load balancer
IL-0191A label selector accidentally added to the Loki distributor Service matched only the new pods of a rollout, which took all write traffic, were OOM-killed and stalled the rolloutGrafana Labs · 2022same root cause · shared Service discovery
IL-0208A GitLab chart bump that renamed Kubernetes Service and Deployment ports made the GCP load balancer reconfigure, and GitLab.com slowed down and returned intermittent 50x errorsGitLab · 2022same root cause · shared Cloud load balancer
IL-0111Switching the main Kubernetes ingress controller from Traefik v1 to v2 stopped X-Forwarded headers being passed, which broke the Okta login flow for every service using Okta and stopped DFDS online bookings for over an hourDFDS · 2021same root cause · shared Cloud load balancer
IL-0105Replacing the AWS VPC CNI during a Terraform refactoring detached the ALB target groups, and every service in the Kubernetes cluster returned 503DFDS · 2021same root cause · shared Cloud load balancer
IL-0365A Terraform change to auto-scaling groups detached all worker nodes from both ALBs and cut off every cluster serviceDFDS · 2020same root cause · shared Cloud load balancer
IL-0052A cryptocurrency miner ran on every node of the development and staging clusters through a public, unauthenticated Weave Scope dashboardJW Player · 2019same root cause · shared Cloud load balancer
Check your cluster for this
For AI tools and scripts
- This case as JSON: https://incidentlib-api.benchlet.com/cases/IL-0346
- The cases most like it: https://incidentlib-api.benchlet.com/cases/IL-0346/similar
- MCP server (Streamable HTTP, no key):
https://incidentlib-mcp.benchlet.com/mcp
The API needs no key. The MCP server offers search_incidents, get_incident, list_incidents, get_topic and vocab; both are explained on API and MCP.