Чтобы выявить слабые места WordPress + WooCommerce, можно использовать trace-тесты для диагностики производительности PHP, MySQL, Nginx, и Redis/Memcached.
🔹 1. Включаем PHP Slow Log (замедленные запросы)
Позволяет отследить долгие PHP-скрипты, которые могут вызывать задержки.
1️⃣ Открываем конфиг PHP-FPM:
sudo nano /etc/php/8.1/fpm/pool.d/www.conf
2️⃣ Добавляем (или редактируем) строки:
slowlog = /var/www/html/slow.log
request_slowlog_timeout = 2s
🔹 Что это делает?
- Все запросы, дольше 2 секунд, будут логироваться в
/var/www/html/slow.log.
3️⃣ Перезапускаем PHP-FPM:
sudo systemctl restart php8.1-fpm
🔹 2. Включаем MySQL Slow Query Log
Позволяет выявить медленные SQL-запросы.
1️⃣ Открываем конфиг MySQL:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
2️⃣ Добавляем:
slow_query_log = 1
slow_query_log_file = /var/www/html/mysql-slow.log
long_query_time = 2
log_queries_not_using_indexes = 1
🔹 Что это делает?
- Логирует запросы дольше 2 секунд.
- Показывает запросы без индексов.
3️⃣ Перезапускаем MySQL:
sudo systemctl restart mysql
🔹 3. Включаем трассировку запросов Redis
Если используешь Redis для кеша, можно отследить медленные запросы.
1️⃣ Открываем конфиг Redis:
sudo nano /etc/redis/redis.conf
2️⃣ Добавляем:
slowlog-log-slower-than 1000
slowlog-max-len 128
🔹 Что это делает?
- Логирует запросы дольше 1 мс.
- Хранит 128 последних медленных запросов.
3️⃣ Перезапускаем Redis:
sudo systemctl restart redis
4️⃣ Просмотр логов:
redis-cli SLOWLOG GET 10
🔹 4. Включаем логирование ошибок Nginx
Если 502, 504 или долгие запросы, их можно отследить.
1️⃣ Открываем конфиг сайта Nginx:
sudo nano /etc/nginx/sites-available/default
2️⃣ Добавляем:
error_log /var/www/html/nginx-error.log warn;
log_format trace '$request_time $remote_addr $request';
access_log /var/www/html/nginx-trace.log trace;
3️⃣ Перезапускаем Nginx:
sudo systemctl restart nginx
🔹 Теперь в /var/www/html/nginx-trace.log будут записываться медленные запросы.
🔹 5. Запускаем strace для PHP-FPM (глубокий анализ)
Если сервер все равно подвисает, можно посмотреть системные вызовы PHP.
1️⃣ Узнаем PID PHP-FPM:
pgrep php-fpm
2️⃣ Запускаем strace:
sudo strace -p <PID> -o /var/www/html/php-strace.log
🔹 Это запишет все системные вызовы PHP-FPM в /var/www/html/php-strace.log.
✅ Вывод
Теперь у тебя полный мониторинг слабых мест в WordPress + WooCommerce:
- PHP-FPM Slow Log →
/var/www/html/slow.log - MySQL Slow Query Log →
/var/www/html/mysql-slow.log - Redis Slow Log →
redis-cli SLOWLOG GET 10 - Nginx Request Trace →
/var/www/html/nginx-trace.log - strace для PHP-FPM →
/var/www/html/php-strace.log
🚀 После тестов проанализируй логи и исправь медленные скрипты, SQL-запросы и кеширование! 🔥
Какие сценарии стоит проверять trace-тестами
Trace-тесты дают больше пользы, когда проверяется не абстрактная загрузка сайта, а конкретный путь пользователя. Для WooCommerce важно отдельно смотреть страницы, которые можно кешировать, и динамические сценарии, где сайт каждый раз обращается к PHP, базе данных или внешним сервисам.
Основные сценарии проверки
- Главная страница и обычная информационная страница.
- Категория товаров без фильтров и та же категория с фильтрами, сортировкой и пагинацией.
- Карточка товара с вариациями, галереей, похожими товарами и отзывами.
- Корзина, оформление заказа и AJAX-запросы, которые нельзя кешировать как статичные страницы.
- Поиск по сайту, REST API и другие endpoints, если они часто встречаются в логах нагрузки.
Что фиксировать в результате
- URL и сценарий, который проверялся.
- TTFB и общее время ответа.
- Количество SQL-запросов и самые медленные из них.
- Внешние HTTP-вызовы и ожидание сторонних API.
- PHP-функции, хуки или плагины, которые чаще всего появляются в trace.
- Рекомендацию по исправлению: кеш, индекс, правка кода, cron, ограничение ботов или серверная настройка.
Такой формат делает диагностику воспроизводимой: к результату можно вернуться после правок и сравнить, действительно ли сайт стал быстрее и стабильнее.