Медленная страница Apache-PHP на одном виртуальном хосте вызывает снижение производительности или тайм-аут на другом

У меня есть несколько приложений PHP, работающих на разных виртуальных хостах на сервере Apache. Каждое приложение использует MySQL как бэкэнд. Каждое приложение использует разные серверы MySQL в одном центре обработки данных. Некоторые из наших приложений обрабатывают большой объем данных из базы данных для создания некоторых сводных отчетов, что иногда занимает около 30-40 секунд (мы планируем запускать это асинхронно в будущем). Эта служба отчетов использует набор небольших запросов вместо большого запроса, который занимает много времени. Это было предназначено для сокращения времени блокировки одной таблицы. Несмотря на то, что каждое из наших приложений использует отдельные базы данных, запуск этого отчета вызывает серьезное снижение производительности других приложений, размещенных на этом сервере. Иногда даже тайм-ауты запросов возникают и в других приложениях.

Использование ОЗУ / ЦП на сервере приложений ниже 50% при выполнении этих отчетов. Я использую PHP 7.2 на Apache 2.4 с использованием PHP-FPM. Модули mpm_event , fcgid , proxy и proxy_fcgi включены в Apache и MySQL версии 5.7

Основная причина, по которой мы используем несколько серверов баз данных - это уменьшить влияние одного приложения на другое. Почему такое поведение происходит? и как это можно решить?

0
задан 4 February 2019 в 15:04
1 ответ
  • Используйте InnoDB, а не MyISAM. Это может быть ответом на блокировку.
  • Установите innodb_buffer_pool_size соответственно. Сколько у вас оперативной памяти?
  • Рассмотрим сборку и ведение "Сводной таблицы"; это должно устранить необходимость в 30-40 секундных запросах.
0
ответ дан 24 November 2019 в 01:04

Теги

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