Плохая производительность сайта [дубликат]

На этот вопрос уже есть ответ:

Не уверен, что это правильный форум, чтобы задать мой вопрос.

У меня есть веб-сайт, где количество посетителей увеличивается, и он сталкивается с плохим временем отклика. Я не специалист по серверам, и по этой причине я хочу раскрыть свою проблему здесь, чтобы получить обратную связь. Веб-сайт имеет следующие характеристики:

  • Разработан с помощью ASP.NET Web Forms (скоро я буду реализовывать новую версию с ASP.NET MVC).
  • Он использует базу данных PostgreSQL 9.1.
  • Он на 100% диманиак, что означает, что каждая страница формируется во время выполнения, получая информацию из БД.
  • Размещается на облачном сервере с 2 ядрами и 4 ГБ оперативной памяти.
  • Windows Server 2012 в диске C:
  • PostgreSQL DB на другом «жестком диске» в качестве диска D:
  • Среднее количество ежедневных посетителей составляет 2 500

Наблюдая за диспетчером задач, я могу заметить, что есть много процессов PostgreSQL, которые потребляют 100 ЦП. Еще один процесс, который показан в "IIS Worker Process", но я не видел его таким же важным, как процесс PostgreSQL.Таким образом, кажется, что основная проблема здесь связана с доступом к базе данных. Когда загрузка ЦП высока, отклик веб-сайта чрезвычайно низок, а также очень трудно установить подключение к удаленному рабочему столу.

Я думал об обновлении облачного сервера до, например, 4 ядер и 8 ГБ оперативной памяти, но сначала я хочу получить обратную связь от экспертов здесь, чтобы я мог использовать лучший подход. Я не эксперт по серверам и по этой причине не хочу предпринимать шаги вслепую.

Почтительно Хорхе Мальдонадо

1
задан 6 August 2018 в 19:36
1 ответ

Трудно сказать, в чем именно заключается проблема, без предоставления каких-либо примеров запросов, но я бы сначала предложил, чтобы администратор баз данных рассмотрел ваши общие запросы, чтобы убедиться, что вы не упускаете ни одного индексы. Запуск нескольких полных сканирований таблиц для большого набора данных может вызвать серьезные проблемы с производительностью.

Мое второе предложение - рассмотреть какое-нибудь решение для кеширования. В частности, полный кеш страницы. Что-то вроде Varnish позволит вам кэшировать всю отображаемую страницу, чтобы вам не приходилось выполнять повторяющиеся дорогостоящие запросы. https://varnish-cache.org/ - помните, что это индивидуальный подход, и вам не следует ожидать кэширования каждой страницы на вашем веб-сайте по очевидным причинам, если только там нет динамического содержимого.

Наконец, вы можете подумать о настройке репликации главный / подчиненный. Это позволит вам создать реплики n для обработки возрастающей рабочей нагрузки чтения, с которой вы сталкиваетесь. Пожалуйста, убедитесь, что вы достаточно исследовали, как поддерживать репликацию, так как это, вероятно, добавит некоторые накладные расходы к вашим задачам администрирования БД

Увеличение размера экземпляра базы данных приведет к уменьшению отдачи. Если есть проблема с производительностью SQL, я предлагаю сначала решить ее.

2
ответ дан 3 December 2019 в 20:12

Теги

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