Я обложился со всех сторон: трекером скорости БД-запросов AppSignal, тулзами для локального профилирования RorVsWild и Prosopite, инструментом мониторинга контейнеров докера Beszel, пинг-сервисами с отслеживанием скорости отклика двух сортов (Uptime Robot и Uptime Monitor), алиасами к быстрому доступу к консоли рельсы на продакшне, Чатом ЖПТ в вебе, Клодом в вебе, панелькой чата с Клодом в Windsurf IDE, постгрес-клиентом TablePlus, который смотрит сразу в продовый БД-контейнер, и еще горой мануалов всех сортов и расцветок, которые у меня уже отскакивают от зубов.
И все равно я несколько часов не понимал в упор, почему ФКФВ так медленно работает. Ничто, никакая сраная свистоперделка из списка в предыдущем абзаце не указывала на ошибку, или дефицит ресурсов, или давала хоть какие-то плохие сигналы. Я думал то на CDN, то на постгрес, то на Таймвеб, то на DNS; хотел засервить шрифты в cdn, потом утонул в логах рельсы, потом обновил kamal-proxy, несколько других гемов, вырубил Быкова, вырубил Литеру, пересобрал все контейнеры по очереди, запрунил старые блины и ребилднул весь докеровский фарш, прокликал всю историю редиса, веба и прокси, зачекал, что на диске есть место, как мудак построчно прочел весь htop сверху донизу, убедился, что у esbuild есть нормальный минифай, увеличил буферизацию камала, отключил буферизацию камала, отключил постхог, включил постхог, ребутнул машину, убедился, что на Таймвебе есть 150 долларов, на Селектеле — 800 рублей и еще на Яндексе 500, обмазался логами Пумы, Сайдкика, Нет-ИО, да и вообще tail -f log/production.log | grep "Completed", htop, k app exec -i 'psql -U postgres -c "SELECT * FROM pg_stat_activity;"', k app logs -f, free -h, k accessory logs traefik, systemctl status docker | grep Active, journalctl -u docker --since "3 days ago" | grep -i error, docker ps | grep fcfv, kamal proxy boot, docker exec -it $(docker ps | grep redis | awk '{print $1}') redis-cli INFO stats, k deploy, ls -lh public/assets/*.js, cat app/javascript/application.js, git commit -m "CYKA", cat esbuild.config.mjs, RUN RAILS_ENV=production SECRET_KEY_BASE=dummy rails assets:precompile, git log --oneline --since="6 days ago", docker stats --no-stream, top -bn1 | head -20, iostat -x 1 5, ls -lth /var/log/apt/history.log* | head -5 — и вот так вот несколько часов подряд, буквально весь вечер.
А потом я вспомнил, что совсем недавно поставил новый аддон к сайдкику для кроновых задач, чтобы под крон не спинить отдельный контейнер. Удалил его — и все вдруг полетело.
Вот как? Я не знаю.
Становитесь программистами и девопсерами, а че!