--- _last_updated_: 2026-05-29T13:30:00+03:00 session_id: 2026-05-29-labtools-slow-noissue --- # Next session handoff _Сессия: разбор «labtools.ru тормозит после переезда на RUVDS». Итог — **non-issue**: прод на RUVDS быстрый (~0.35s TTFB), «медленно» было артефактом замера с воркстейшн (LAN-DNS резолвит домен в локальную stale-копию). Инфру не трогал, traefik не правил. Открытые ES-incident треки прошлой сессии перенесены ниже — ещё живые._ ## Recent commits - `063910e2` incident(books-vds-es): true RCA — ransom-бот через открытый :9200 - `63708fe6` tasks(NEXT_SESSION): session-close — ES restore + 2 preventive controls live - `48a5cf39` tasks(restore-es-indices-books-vds): closed — snapshot restore + 2 controls ## Что сделали в эту сессию (labtools) - Жалоба: labtools.ru медленно отдаётся на RUVDS, pilorama98.ru норм. - **Root cause = артефакт замера, не дефект прода.** Публичный DNS labtools.ru/pilorama98.ru → RUVDS `80.64.31.36`; прод TTFB ~0.35s (curl --resolve), картинки 0.13–0.5s — быстро. Но с этой воркстейшн LAN-DNS резолвит домены в **локальную stale-копию** (home traefik :4443 → IIS :8089), которая тормозит для тенанта labtools (HTML TTFB 1.45s vs pilorama 0.25s на том же :8089). - traefik-конфиги `labtools.yml` ≡ `pilorama98.yml` побайтово (оба → host.docker.internal:8089) → в traefik чинить нечего. - К концу сессии user подтвердил «labtools.ru стал отдаваться нормально» (видимо дорезолвился кэш на RUVDS). **Ничего не менял.** - Memory сохранён: `workstation-lan-dns-serves-local-cms-copy` (валидировать прод только через `curl --resolve` / не-LAN, браузер через MCP тоже бьёт в локальную копию). ## Open треки (перенос из ES-incident сессии — ещё живые) | Трек | Готовность | Entry-point | |---|---|---| | `harden-books-vds-exposed-ports` | ⚪ ready — exposure-audit сделан | `.tasks/harden-books-vds-exposed-ports.md` | | `books-bookva-user-whitelist-gathering` | ⚪ ready — gathering от учредителя Bookva | `.tasks/STATUS.md` | | `stateful-split-volume-copy` | ⚪ ready — maintenance window 5–10 мин | `.tasks/STATUS.md` | | `infra-inventory` | ⚪ ready — two-tier (public + admin) | `.tasks/STATUS.md` | | `books-stateful-split-execution` / `books-vds-bookva-bootstrap` / `books-dns-cutover-bookva` | 🔵 blocked | `.tasks/STATUS.md` | ## Спроси user'а - **epz-поиск end-to-end не подтверждён руками** (из прошлой сессии) — починено место падения (`tenant undefined`), но аутентифицированный запрос из UI не делался. Проверить epz в обоих UI (bookseller.kzntsv.site = bookva, bookva.kzntsv.site = slovo). Downstream → логи `books-web`/`bookva-web`. - **harden-ports**: user сказал «пока нет» на немедленный mongo-allowlist. Не начинать без явного запроса. ## Не делать (preemptive guards) - **Не возвращать публикацию `:9200`** (и stateful-портов) на `0.0.0.0` без IP-allowlist — free-ES без auth, ransom-бот уже отметился. - **Не трогать mongo/mariadb/minio порты** без подтверждения user'а. - **Не использовать `ssh + docker compose up -d`** на VDS для Portainer-stacks — только Portainer API. Исключение: traefik/portainer (management-plane). - **Не «чинить» traefik labtools.yml вслепую** — он корректен, идентичен рабочему pilorama; медленность была локальной DNS-копией, не конфигом. - **branch ahead от origin** — push без явного grant'а (project-discipline Rule 4). Этой сессии grant НЕ давали. ## Memory updates за сессию - ✅ `workstation-lan-dns-serves-local-cms-copy` (новый) — мигрированные CMS-домены с воркстейшн резолвятся в локальную stale-копию, не RUVDS; валидировать прод через `curl --resolve`/off-LAN. - Кандидат с прошлой сессии (НЕ сохранён): books VDS — docker port-publish обходит firewalld; stateful-сервисы наружу = vector.