Sitecore — отсутствие повторного использования пула приложений

У меня довольно трудоемкая проблема с Sitecore CMS.

Можно ли сократить время, необходимое для перезапуска пула приложений каждый раз, когда в папку bin или web.config вносятся изменения?

Серверу требуется от 2 до 5 минут, чтобы ответить сразу после изменения.

Любые идеи?


person Ted    schedule 11.10.2013    source источник
comment
В настоящее время я испытываю аналогичную проблему на сайте клиента, и мне любопытно - используете ли вы индексы Lucene и насколько они велики? (как по количеству документов, так и по размеру файла). У меня есть подозрение, что Sitecore занимает значительное время при запуске, чтобы загрузить их в память.   -  person mmmeff    schedule 16.10.2013


Ответы (5)


Здесь есть одна статья от alex shyba из sitecore, посвященная Сокращение Sitecore Время запуска

Краткое содержание статьи

  • В machine.config: отключить процесс для проверки подписания сборки
<runtime>  
    <generatePublisherEvidence enabled="false"/>
</runtime>
  • Отключить счетчики производительности в Sitecore web.config
<setting name="Counters.Enabled" value="false" />

Существует множество статей об улучшении производительности ядра сайта. Я перечислил несколько ссылок ниже:

person Harsh Baid    schedule 11.10.2013
comment
В MSDN говорится, что этот элемент не влияет на время загрузки сборки после .NET 4. Я не уверен, что это все еще применимо. - person kamranicus; 15.11.2013
comment
@subkamran Сейчас я использую .Net 4.5, но все еще сталкиваюсь с той же проблемой в Sitecore 7.2. - person Sachin B. R.; 12.08.2015
comment
@СачинБ.Р. Если вы не используете аналитику в среде разработки, то есть не работаете с материалами Sitecore DMS, вы можете отключить этот параметр <setting name="Analytics.Enabled" value="true" />. Он находится в Sitecore.Analytics.config Это немного поможет. - person Harsh Baid; 12.08.2015

Ему нужно перезапустить пул приложений, чтобы загрузить новую dll.
Вы можете попытаться свести к минимуму то, что вы делаете при запуске (но я предполагаю, что это в основном вещи, связанные с ядром сайта, на которые вы не можете повлиять), так что лучше Я могу предложить 2 веб-сервера с переключателем содержимого.

Вы запустите свое приложение на 2 серверах, а переключатель содержимого решит, какой сервер обрабатывает какой запрос (будьте осторожны с сеансом и статикой, потому что каждый сервер будет знать ничего другого).
Если в какой-то момент вам нужно выпустить новую версию, вы просто указываете переключателю содержимого направлять весь трафик на веб-сервер A. Затем вы выполняете развертывание на веб-сервере B, открываете веб-сайт с помощью прямого URL-адреса, который не не пропускайте переключатель контента и убедитесь, что он работает правильно + прогрелся.
Затем вы указываете переключателю контента направлять весь трафик на B, и у вас есть все время в мире, чтобы обновить веб-сервер A и переключить переключатель контента обратно. в обычный режим.

person Kristof    schedule 11.10.2013
comment
возможно, я неправильно выразился, переработка неизбежна, но весь процесс кажется мне слишком длительным. можно как-то укоротить? - person Ted; 11.10.2013
comment
Помимо обновления оборудования или использования переключателя контента, вы можете просматривать только тот код, которым управляете. После перезапуска пул приложений будет создан снова, поэтому посмотрите на код, который запускается при запуске приложения, и убедитесь, что он делает как можно меньше. - person Kristof; 11.10.2013

У меня тоже была эта проблема.

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

Я нашел инструмент профилирования, который позволил мне найти элемент управления с выбросами, рендеринг которого занимал неприлично много времени. Попробуй это...

  1. Запустите свой веб-сайт после его компиляции.
  2. Войдите на эту страницу администратора: http://local.example.com/sitecore/admin/stats.aspx
  3. Вы увидите такой экран: Sitecore Admin Page Content Performance StatisticsИщите что-нибудь с неприлично высоким средним или Максимальное время. Ваша проблема, вероятно, будет в логике там.
  4. В качестве бонуса, если вы можете продолжать открывать страницы после долгой перекомпиляции без особых проблем, вы должны заметить, что среднее время примерно вдвое сокращается при каждой странице, попадающей на страницу, для контроля вашей проблемы, если ваша проблема похожа на мою.

В моем случае я обнаружил, что самая большая проблема возникла из-за одного элемента управления, который выполнял дорогостоящий поиск одного элемента. Это выглядело так -> Sitecore.Context.Database.SelectItems("" + Sitecore.Context.Item.Paths.Path + "/ancestor-or-self::*[@@templateid='" + templateId + "']"); В основном это была локальная проблема, потому что SQL-сервер удален от моей машины, а остальные серверы находились в том же здании. Следовательно, разработка и производство были относительно незатронуты.

Удачи!

person Zachary Dow    schedule 23.04.2015
comment
И вы заменяете этот медленный XSLT-запрос чем-то другим, например, быстрым запросом Sitecore? И этот запрос также содержит ошибку, если путь к элементу содержит символ тире, - или другое зарезервированное слово. вам нужно избежать этого с помощью # - person Jan Bluemink; 24.04.2015
comment
Вместо того, чтобы искать его таким образом, я встроил его в некоторую логику, которая вышла из Sitecore.Context.Item, где я рекурсивно проверяю родителя элемента, если шаблон, который имеет родитель, является тем же идентификатором, который я искал. - person Zachary Dow; 24.04.2015
comment
@JanBluemink И я знаю, что вы правы насчет экранирования символов. Это делает Орегон «или» очень интересным штатом для целевой страницы. :) - person Zachary Dow; 24.04.2015

Вы можете следить за записью Алекса Шибы здесь

Но 2-5 минут звучит экстремально. Это ненормально. Ваше оборудование обновлено? Также я бы заглянул в ваш кеш предварительной выборки. В вашей среде разработки вы, вероятно, не хотите, чтобы i получал слишком много при запуске, так как это не требуется при разработке.

Я также хотел бы изучить конвейер инициализации и global.asax, чтобы узнать, выполняете ли вы какие-либо пользовательские задания запуска.

person Jens Mikkelsen    schedule 11.10.2013

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

person Ahmed Okour    schedule 11.10.2013