docs: finalize 64kb ingress investigation
This commit is contained in:
+39
-1
@@ -2,7 +2,45 @@
|
||||
|
||||
## Версия v0.1.x
|
||||
|
||||
### v0.1.19 (2026-04-11) ✅ — ТЕКУЩАЯ DEPLOYED
|
||||
### v0.1.21 (2026-04-11) — Redis schema v2 + per-message persistence
|
||||
- ✅ Redis schema v2: metadata в HASH `ssq:queues`, сообщения в отдельных HASH `ssq:msg:{queueKey}`
|
||||
- ✅ Per-message persistence: каждая операция (send/receive/delete/visibility) пишет только затронутое сообщение
|
||||
- ✅ Migration v1→v2: автоматическая миграция при старте (59 очередей мигрировано)
|
||||
- ✅ quick_test: 31/31 PASS
|
||||
- ✅ shared_sqs_test: 28/28 PASS
|
||||
- **Docker image:** `naeel/shared-sqs:v0.1.21`
|
||||
|
||||
### Производительность v0.1.21 (benchmark)
|
||||
|
||||
| Размер | shared-sqs | Yandex MQ | Сравнение |
|
||||
|--------|-----------|-----------|-----------|
|
||||
| 1KB | ~800ms | ~700ms | Паритет |
|
||||
| 10KB | ~800ms | ~700ms | Паритет |
|
||||
| 32KB | **805-917ms** | 869-3490ms | **Быстрее** (нет cold start) |
|
||||
| 64KB+ | ❌ 10-52s зависание | ~900ms | Проблема nginx+botocore |
|
||||
|
||||
### Проблема 65KB+ payload (расследование 2026-04-11)
|
||||
|
||||
**Root cause:** botocore (AWS SDK) + urllib3 2.0 + TLS record boundary.
|
||||
- urllib3 2.0 отправляет headers и body двумя отдельными send() вызовами
|
||||
- botocore убирает TCP_NODELAY (алгоритм Nagle включён)
|
||||
- Последняя TLS-запись (~16KB) застревает из-за Nagle + delayed ACK
|
||||
- nginx `client_body_timeout` срабатывает → HTTP 408
|
||||
|
||||
**Попытка фикса nginx:**
|
||||
- ConfigMap: `client-body-timeout: "120"`, `client-body-buffer-size: "2m"` — применилось
|
||||
- Аннотация `proxy-request-buffering: "off"` — НЕ подхватилась shturval controller
|
||||
- pip boto3 (Python 3.12): исправлено (84ms → 13ms) ✅
|
||||
- AWS CLI (Python 3.14.3 bundled): всё ещё зависает (51843ms) ❌
|
||||
|
||||
**Финальный вывод (2026-04-12):**
|
||||
- проблема локализована на стороне platform ingress controller штурвала, а не в Go-сервисе shared-sqs;
|
||||
- ingress приложения корректен, но controller выборочно применяет аннотации: `proxy-body-size` и `client-body-buffer-size` доходят до nginx.conf, а `proxy-request-buffering` остаётся `on`;
|
||||
- upstream ingress-nginx эту аннотацию поддерживает, значит это platform-specific limitation/bug;
|
||||
- hard-limit 32KB в код shared-sqs НЕ вводим;
|
||||
- 32KB остаётся практической рекомендацией для AWS CLI / botocore в текущей инфраструктуре.
|
||||
|
||||
### v0.1.19 (2026-04-11) ✅ — ПРЕДЫДУЩАЯ DEPLOYED
|
||||
- ✅ Валидация VisibilityTimeout (0–43200) в ReceiveMessage
|
||||
- ✅ Валидация WaitTimeSeconds (0–20) в ReceiveMessage
|
||||
- ✅ Пустой MessageBody → MissingParameter в SendMessage
|
||||
|
||||
Reference in New Issue
Block a user