Увеличение прерываний ЦП, снижение производительности при обновлении до Symfony flex

Мы обновляем наше приложение Symfony 3.4 (LAMP с opcache / php-fpm) до гибкого (согласно https: // symfony.com/doc/current/setup/flex.html). При нагрузочном тестировании мы наблюдаем увеличение использования ЦП, особенно ЦП системы.

Изменения, которые мы заметили в профилировании:

  • Увеличение количества прерываний процессора.
  • perf top показывает, что на вызовы ядра mutex_spin_on_owner и osq_lock затрачивается гораздо больше времени процессора. Исследования показывают, что у нас есть узкое место при доступе к какому-то общему ресурсу.
  • sar -n SOCK показывает, что используется больше портов UDP, и действительно, вывод tcpdump показывает ~ десятикратное увеличение количества отправленных запросов DNS. Дополнительные поиски, похоже, включают поиск серверов имен для IP-адресов клиентов; однако мы не добавляли никаких связанных журналов или кода для этого. Мы сравниваем ту же кодовую базу, за исключением изменений, необходимых для обновления до гибкости (которые предоставлены, значительны, но в первую очередь изменения конфигурации).

То, что мы думаем, исключено:

  • Подкачка памяти - похоже, это не изменилось с помощью vmstat .
  • Мы профилировали io, cpu и mem для php-fpm , mysqld , redis-server , httpd через pidstat ( -r , -u , -d флаги) и не думайте, что мы видим что-то существенное. Точно так же записи экрана top не показывают каких-либо заметных проблем / различий.
  • Мы используем CDN для статических ресурсов. Мы начали кеширование изображений, но подтвердили, что это работает должным образом (не обслуживает многие запросы ресурсов с нашего сервера вообще).
  • Мы используем mariadb с постоянными соединениями. Подтверждено отсутствие изменений в подключениях / с, поэтому не думайте, что мы ждем доступа к базе данных.

Итак, ищем любые мысли о том, что мы, возможно, неправильно сконфигурировали, или как отследить, что инициирует эти дополнительные поиски DNS.

0
задан 11 February 2021 в 01:35
1 ответ

Ну, мы пока не уверены на 100% почему, но следующие действия решили проблему: Удаление установки пакета symfony/web-link и удаление/комментирование конфига preload в webpack_encore.yaml:

webpack_encore:
    ...
    # preload all rendered script and link tags automatically via the http2 Link
    # header
    preload: true

Мы обновим информацию о конкретной причине, когда/если сможем.

0
ответ дан 24 April 2021 в 02:12

Теги

Похожие вопросы