Files
SQS-service/HANDOFF-NEW-CHAT.md

6.0 KiB
Raw Permalink Blame History

HANDOFF для нового чата — shared-sqs (состояние на 2026-08-16)

Этот файл — резюме длинной сессии 13–16.08.2026. Новый чат: прочитать этот файл + HISTORY/2026-08-14-session-log.md + doc/thinking/.

1. Что за проект

shared-sqs — SQS-совместимая очередь (AWS API), Go 1.23, multi-tenant, форк GoAWS. Живёт на платформе Nubes (managed Kubernetes, realm iot-naeel). Локально: /home/naeel/nubes/SQS-service, зеркало на ВМ: naeel@5.172.178.213:~/terra/SQS-service (ssh-ключ ~/.ssh/naeel_vm_id_ed25519).

ГРАНИЦЫ ПРОЕКТА (записано в память): работать ТОЛЬКО с локальной папкой и её зеркалом на ВМ. Никуда больше без прямого указания пути.

2. Статус сервиса

  • Прод-версия v0.1.35 задеплоена по digest (Docker Hub naeel/shared-sqs).
  • Все тесты зелёные: api_test 22/22, sdk_test 15/15, fifo_dlq_probe PASS.
  • План Соннета выполнен: P0.1, P0.2, P1.4, P2.5, P2.6, P3.7, P3.8 — все PASS.
  • Нагрузка 168 591 операция — 0 сервисных ошибок.
  • Память стабильна 2ч (VmRSS 16588→15648 kB, Threads 13).

3. Главная открытая проблема — ПЛАТФОРМА, не код

  1. Таймауты каждые 31–33с на внешнем пути (интернет→шлюз Nubes): ~5.5% запросов не получают ответ 30с. Доказано серверным tcpdump (8 «дыр» по 29.5с: запросы не доходят до пода), nginx чист (max 68мс, 499=0), cilium 0 дропов, port-forward 24977 раундов 0 сбоев. Таймер — на ВНЕШНЕМ шлюзе, вне кластера.
  2. MSS=1448 анонсируется шлюзом при underlay MTU 1450 → большие тела (>~1400 байт) виснут ~51с (PMTUD сломан).
  3. Готов тикет: doc/thinking/nubes-ticket.md — ОТПРАВИТЬ в поддержку Nubes.

4. Что мы починили в кластере (16.08, по команде пользователя)

  • kube-vip: rollout restart ds shturval-vip — ушли ошибки leaderelection в удалённый namespace 0a42bef3-... (хвост июльского сервиса пользователя).
  • provider LB: добавлен cidr-global: 185.247.187.151/32 в ConfigMap kubevip в kube-system (provider читает именно оттуда, env KUBEVIP_NAMESPACE=kube-system). «Ensured load balancer» — OK.
  • После починки таймауты НЕ ушли (тест: 19 сбоев, период 31.3–33.5с) — подтверждение, что таймер на внешнем шлюзе.

5. Сравнение с Yandex YMQ (очередь newsqs)

  • Наш p50: 68мс (с ВМ) / 89–90мс (с локали). YMQ: 6062мс / 138150мс.
  • YMQ стабилен (1 ошибка на 959), у нас — таймауты платформы (см. п.3).
  • YMQ-доступ восстановлен: SA newsqs (роль ymq.admin), креды в secrets/yandex_ymq_newsqs.txt (имена переменных AWS_ACCESS_KEY_ID/ AWS_SECRET_ACCESS_KEY). Очередь: URL в HISTORY.
  • Повторный бенчмарк — ПОСЛЕ фикса шлюза Nubes.

6. Ключевые доступы

  • Креды shared-SQS (тенант t-fec713a719ad0b33): AK SSAK-fec713a719ad0b33c91fa54a, SK e898ed410a20ff166f51a52ba39a2954fb87e2da200b1648c3975772bfe9e2b4.
  • Внешний endpoint: https://sqs.containerk8s.dev.nubes.ru (регион us-east-1).
  • Внутренний (из подов кластера): сервис containerk8s в ns f1ffb134-7d16-45bd-8bef-69f6ec8ab33c, порт 4100.
  • Gitea: gitea.services.ngcloud.ru/Nail/SQS-service (токен — в secrets/gitea.txt).
  • kubeconfig на ВМ протухает ~раз в сутки (~26ч) — обновлять через консоль Nubes (пользователь копирует в буфер, на ВМ: `xclip -selection clipboard -o

    ~/.kube/config`).

  • ⚠️ boto3/aws CLI: ВСЕГДА передавать креды явно (env терминала копит чужие AWS_ACCESS_KEY_ID — был ложный 403 с кредами Яндекса).

7. Хвосты / TODO

  1. Отправить тикет Nubes (файл готов).
  2. Удалить дубликат secrets/yandex_ymq_fork8s.txt (одинаков с newsqs.txt) — ждёт команды пользователя.
  3. После фикса шлюза: повторный 30-мин бенчмарк vs YMQ, обновить BENCHMARK-COMPARISON.
  4. Эхо-сервис (Фаза 3 планов) не понадобился — доказательств хватило.

8. Тестовая инфраструктура (tests/)

  • run_full_regression.sh — полная регрессия (api_test + sdk_test + fifo_dlq).
  • long_compare_local.py — 30-мин сравнение с YMQ с таймстемпами.
  • compare_ymq_vs_shared.py — короткое сравнение.
  • tcp_mtu_probe.py — бинарный поиск MTU-порога (порт 443! 32391 снаружи закрыт).
  • Планы 4 агентов: doc/thinking/nubes-network-bug-plan*.md.

9. Правила пользователя (обязательные)

  • Без «делай» — ничего не менять, только отвечать/смотреть.
  • Каждый шаг и результат — в HISTORY сразу; коммит после правок.
  • Команды только с таймаутами. Никаких оценок — считать/мерить.
  • Часовой пояс GMT+03. sed запрещён (только редакторы файлов).