~ / blog

Блог — страница 7

Пишу о том, что делаю каждый день: скорость сайтов, кэш, обмен с 1С, серверы и WordPress без лишнего.

#Серверы 3 мин

Секунда между Enter и страницей: что происходит, когда открываешь сайт

Один запрос к сайту, разложенный по миллисекундам: DNS 36, TCP 28, TLS 128, ожидание сервера 310, загрузка 55. Почему сеть — самое быстрое в этой цепочке и почему второй запрос вдвое быстрее первого.

· · ·
#Серверы 5 мин

fail2ban 13 дней молча не работал — а до этого забанил хозяина

Сменили формат журнала на JSON — и фильтры перестали совпадать хоть с одной строкой: 69 банов за четыре дня, потом ноль за тринадцать, а статус всё это время «работает». До этого фильтр забанил владельца за штатный запрос админки WordPress. Четыре способа сделать защиту бумажной и проверка за пять минут.

· · ·
#Серверы 2 мин

Телеметрия PHP-FPM: slowlog, статус пула и проверка не того конфига

Журнал медленных запросов со стеком, страница статуса с адресом на .php, время ответа и статус кэша в журнале nginx. И грабля: php-fpm -tt без -y читает конфиг из пакета, а не тот, с которым работает мастер.

· · ·
#WordPress 3 мин

Запись в цикле отключает кэш запросов WordPress: clean_post_cache и last_changed

Цикл по 82 адресатам тратил 4,69 с из 4,71 на одинаковые get_posts: запись меты и чистка кэша записи двигают метку last_changed, и все закэшированные результаты WP_Query теряются. Данные один раз до цикла — и обмен вырос с 12 до 104 товаров в минуту.

· · ·
#Серверы 3 мин

«pool seems busy»: PHP-FPM разгоняет себя сам при двух запросах

За 15 секунд всплеска — два запроса через nginx, а процессов стало 46 вместо 14. FPM удваивает запуск каждую секунду, а подъём min_spare делает только хуже. Тёплый запас через start_servers и max_spare: 0 предупреждений вместо 22.

· · ·
#WordPress 4 мин

Обмен 12 товаров в минуту: какой хук тормозит сохранение

Полный обмен каталога шёл 25 минут: на каждом сохранении тема обходила все 246 товаров ради 80 нужных. Как найти виновника по логу nginx и замеру каждого обработчика save_post и почему LIKE по сериализованной мете — только предварительный отбор.

· · ·
#Серверы 3 мин

PHP-FPM без request_terminate_timeout: 5 часов 40 минут 502 от одного запроса

Внешний сервис принял соединение и замолчал — все 100 процессов PHP повисли навсегда, файловые сессии добили остальных. Предохранитель в пуле — одна строка, по умолчанию её нет. Куда вписать в Docker и как распознать такую аварию за пять минут.

· · ·
#Серверы 3 мин

Сайт на WordPress в Docker: пять контейнеров и 310 МБ памяти

Из чего состоит этот сайт: nginx, PHP-FPM, MariaDB, Redis и общий traefik. Сокеты вместо сети, база на 23 МБ вместо настроек «для выделенного сервера», пул по требованию на 6 процессов с предохранителем, Redis во внутренней сети.

· · ·
#PageSpeed 3 мин

Встроенные видео: картинка вместо плеера и запуск с первого клика

Плеер YouTube, VK или Rutube грузит мегабайты до нажатия «плей». Плитка с превью и iframe по клику — ноль чужих скриптов до действия. Как запустить ролик с первого клика на каждом хостинге и грабли: голый id, второй домен VK, Rutube без параметров.

· · ·

$ tail -f /blog

Не пропустите новые статьи

Пишу разборы по скорости сайтов, кэшу и разработке — на живых проектах и с цифрами. Подпишитесь, и ссылка на новую статью придёт сразу после выхода. Без рекламы и спама, отписаться — в один клик.

В Telegramодна кнопка «Старт» в боте

или на почту

связаться

Расскажите о задаче