Сведения о вопросе

SOON

03:23, 23rd August, 2020

Теги

Какие стратегии вы использовали для повышения производительности веб-приложений?

Просмотров: 437   Ответов: 6

  • Есть ли у вас личный опыт преодоления препятствий в работе веб-приложений?
  • Какие-либо рекомендуемые стратегии повышения производительности управляемого данными веб-приложения?

Моя команда разработчиков работает над веб-приложением (JSP reports, HTML, JavaScript), которое использует базу данных Oracle (PL/SQL). ключевая функциональность приложения заключается в создании отчетов, где пользователь может получить PDFs отчетов на высоком уровне и детализировать их до более низких уровней вспомогательных сведений.

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

Разбиение на разделы, индексация, объяснение планов и запуск статистики-это вещи, которые были сделаны на стороне DB, чтобы попытаться помочь улучшить производительность. Хотя они и помогли, они не решили проблему удовлетворительно. Самая сложная часть анализа данных о производительности заключается в том, что база данных и веб-серверы удаленно управляются другой частью организации IT, поэтому разработчики не имеют регулярного, полного доступа, чтобы увидеть, что происходит (особенно в производственной среде, которая не зеркально отражена точно в любой другой среде разработки/тестирования).



  Сведения об ответе

ЯЯ__4

12:48, 27th August, 2020

Хотя мой ответ может не содержать никаких конкретных шагов, чтобы помочь, это всегда то, с чего я начинаю.

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


  Сведения об ответе

ЯЯ__4

18:45, 8th August, 2020

Рассматривали ли вы возможность создания своих данных заранее? Другими словами, существуют ли группы данных, которые запрашиваются снова и снова? Если да, то подготовьте их до того, как пользователь попросит. Я не совсем говорю о кэшировании, но я думаю, что это часть уравнения.

Возможно, стоит сделать шаг назад от кода и изучить шаблоны использования системы. Например, если вы показываете людям ежемесячную информацию о запасах или продажах, смотрят ли они на нее только в конце месяца? Если это так, просто соберите данные в последний день и сохраните их. Если они смотрят на него ежедневно, возможно, попробуют построить результаты каждого предыдущего дня и сохранить результаты и избежать расчета. Я думаю, что в конечном счете я подталкиваю вас к решению динамического программирования ; если вы знаете ответ, Не решайте его снова.


  Сведения об ответе

park

00:27, 22nd August, 2020

Вы это уже проверили?

Лучшие практики для быстрого создания веб-страниц из Yahoo!'S исключительная команда производительности

Если у вас действительно возникли проблемы с бэкендом, это не поможет. Но мы использовали их советы с большим эффектом, чтобы сделать наш сайт быстрее, и еще многое предстоит сделать.

Также используйте надстройку YSlow для Firebug. Вы можете быть удивлены, когда увидите, где в действительности занято время.


  Сведения об ответе

DINO

23:44, 16th August, 2020

Как говорит Webjedi, метрики-это ваш друг.

Также посмотрите на свой стек и посмотрите, где есть возможности для кэширования-тогда используйте беспощадно везде, где это возможно!


  Сведения об ответе

davran

01:35, 4th August, 2020

Как я уже сказал в другом вопросе :

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

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


  Сведения об ответе

lesha

08:48, 6th August, 2020

Не все профилировщики стоят (дополнительных) денег. Для .Net я успешно использую старую сборку NProf (в настоящее время заброшенную, но она все еще работает для меня) для профилирования моих ASP.Net приложений. Для сервера SQL профилировщик запросов является частью пакета. Есть также профилировщик CLF от MS, но мне никогда не удавалось заставить его работать успешно.

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

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться