Ответы пользователя по тегу Веб-разработка
  • Оптимизация сайта под высокие нагрузки (php,nginx, mysql). Какие критерии доработок? Что необходимо сделать в первую очередь?

    Скорее всего эта проблема связана с БД. Вероятно есть SQL запросы, которые плохо оптимизированы под эту задачу. В этом случае тогда нужно оптимизировать запросы, возможно еще нужно создать индексы, возможно еще произвести тюнинг MySQL, увеличить некоторые буферы и другие настройки.

    Для оптимизации нужно:

    1. Нужно включить логирование медленных запросов. Много раз использовал эту методику для выявления узких запросов.
    После уже можно понять какие php файлы являются проблемными, и их исправить.
    Логирование медленных запросов включается так в разделе [mysqld] в файле my.cnf:
    slow_query_log      = 1
    slow_query_log_file = /var/log/mysql/slow.log
    long_query_time     = 1

    Анализ лог файла делается так:
    mysqldumpslow -s c -t 20 slow.log.1 > results.log

    2. Также может помочь утилита mysqltuner.pl. Многократно ее использовал для определения проблемных запросов, индексов, которые нужно добавить в таблицы, и других проблем с MySQL/MariaDB.

    3. Можно вручную провести анализ запросов при помощи EXPLAIN.

    4. Можно сделать замеры выполнения кода, как вручную, через логирование блоков кода, так и через XDebug. И выявить долго выполняющиеся блоки, после этого оптимизировать их.

    5. Кроме того нужно посмотреть процессы на сервере, которые занимают много процессорного времени и памяти, это можно сделать через atop или другие подобные утилиты. Можно на основании этого оптимизировать программный код и службы.

    6. То что MySQL и сам сервер находятся на виртуальной машине это тормозит работу сервера, виртуальные ноды в любом случае работают медленнее, чем физический сервер. Рекомендую перенести это все на физический сервер с NVMe дисками, с современным процессором и ОЗУ не менее 128 Гб.

    Могу помочь настроить логирование, анализ этого и выявить узкие места.
    Ответ написан
    Комментировать