У меня есть веб-сайт, количество посетителей которого увеличивается, и на него не хватает времени отклика. Я не специалист по серверам, и по этой причине я хочу опубликовать здесь свою проблему, чтобы получить отзывы. Сайт имеет следующие характеристики:
Наблюдая за диспетчером задач, я могу заметить, что многие процессы PostgreSQL потребляют 100% ЦП. Другой процесс, показанный в «Рабочем процессе IIS», но я не видел его столь же критичного, как процесс PostgreSQL. Таким образом, похоже, что основная проблема здесь связана с доступом к базе данных. Когда загрузка ЦП высока, отклик веб-сайта очень низкий, а также очень сложно установить подключение к удаленному рабочему столу.
Я думал об обновлении облачного сервера, например, до 4 ядер и 8 ГБ ОЗУ, но сначала я хочу получить здесь отзывы экспертов, чтобы я мог выбрать лучший подход. Я не специалист по серверам и по этой причине не хочу действовать вслепую.
Трудно сказать, в чем именно заключается проблема, не предоставив каких-либо примеров запросов, но я бы сначала предложил, чтобы администратор базы данных проверил ваши общие запросы, чтобы убедиться, что вы не упускаете никаких индексов. Запуск нескольких полных сканирований таблиц для большого набора данных может вызвать серьезные проблемы с производительностью.
Мое второе предложение - рассмотреть какое-нибудь решение для кеширования. В частности, полный кеш страницы. Что-то вроде Varnish позволит вам кэшировать всю отображаемую страницу, чтобы вам не приходилось выполнять повторяющиеся дорогостоящие запросы. https://varnish-cache.org/ - помните, что это индивидуально, и вам не следует ожидать кэширования каждой страницы вашего сайта по очевидным причинам, если только там нет динамического контента.
Наконец, вы можете рассмотреть возможность настройки репликации главный / подчиненный. Это позволит вам создать n
реплики для обработки возрастающей рабочей нагрузки чтения, с которой вы сталкиваетесь. Убедитесь, что вы провели достаточно исследований о том, как поддерживать репликацию, так как это, вероятно, добавит некоторые накладные расходы на ваши задачи администрирования БД
Увеличение размера экземпляра базы данных приведет к снижению отдачи. Если есть проблема с производительностью SQL, я предлагаю сначала решить ее.