Skip to content

Commit 095c0d9

Browse files
authored
docs: document rate limits, cache bounds, timeouts, and fix table syntax (#1177)
1 parent 688e82a commit 095c0d9

2 files changed

Lines changed: 11 additions & 0 deletions

File tree

src/content/docs/troubleshooting/troubleshooting.mdx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,12 @@ If you are getting a "command not found" error, try the following:
149149
- **500 Internal Server Error:** Check the application logs for detailed error information.
150150
- **Health endpoint failures:** Start with `GET /api/v1/health/ready` for standard readiness checks. Use `GET /api/v1/health/live` for process-alive checks, and use authenticated `GET /api/v1/health` only when you intentionally configured `HEALTH_CHECK_TOKEN`.
151151

152+
### Rate Limiting & Timeouts
153+
154+
- **429 Too Many Requests:** The client IP has exceeded the rate limit. Check the `RATE_LIMIT_MAX_REQUESTS` and `RATE_LIMIT_WINDOW_SECONDS` settings. The response includes a `Retry-After` header indicating how many seconds to wait before retrying.
155+
- **503 Service Unavailable:** The server is busy or the request timed out at the rack/server layer (e.g. `RACK_TIMEOUT_SERVICE_TIMEOUT`). Returns a `Retry-After` header matching `RETRY_AFTER_TIMEOUT_SECONDS`.
156+
- **504 Gateway Timeout:** The target website or scraper took too long to respond (exceeding `HTML2RSS_TOTAL_TIMEOUT_SECONDS`).
157+
152158
### Feed Problems
153159

154160
- Try a more specific listing, newsroom, changelog, or updates URL before changing infrastructure

src/content/docs/web-application/reference/env-variables.mdx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@ description: "Configuration reference for html2rss-web environment variables."
1818
| `AUTO_SOURCE_ENABLED` | `true` by default in development/test, `false` otherwise |
1919
| `ASYNC_FEED_REFRESH_ENABLED` | optional boolean; default `false` |
2020
| `ASYNC_FEED_REFRESH_STALE_FACTOR` | optional integer `>= 1`; default `3` |
21+
| `FEEDS_CACHE_MAX_SIZE` | optional integer `>= 1`; default `500`; maximum number of feeds to cache in memory before eviction |
22+
| `RATE_LIMIT_ENABLED` | optional boolean; default `true` (except `false` in `test`); enables or disables client IP rate limiting |
23+
| `RATE_LIMIT_MAX_REQUESTS` | optional integer `>= 1`; default `60`; maximum requests allowed per IP per window |
24+
| `RATE_LIMIT_WINDOW_SECONDS` | optional integer `>= 1`; default `60`; rate limiter sliding window duration in seconds |
25+
| `RETRY_AFTER_TIMEOUT_SECONDS` | optional integer `>= 1`; default `300`; Retry-After header backoff duration returned on timeouts |
2126
| `PORT` | app listen port; compose uses `4000` |
2227
| `RACK_ENV` | Rack environment; quickstart uses `development`, production examples use `production` |
2328
| `RACK_TIMEOUT_SERVICE_TIMEOUT` | optional; total web-request timeout in seconds; default `30` |

0 commit comments

Comments
 (0)