Контрольный список для ASP.NET / производительности базы данных - PullRequest
6 голосов
/ 04 июля 2011

Недавно наши клиенты начали жаловаться на низкую производительность на одном из наших серверов. Он содержит несколько крупных реализаций CMS и множество небольших веб-сайтов, использующих Sitefinity. Наша команда хостинга сейчас пытается найти узкие места в наших средах, поскольку существуют некоторые серьезные проблемы с нагрузкой. Мне было дано задание указать один большой список вещей, на которые нужно обращать внимание, разделенных на разные части (IIS, ASP.NET, специфичные для Web). Я думаю, что было бы хорошо узнать, сколько экземпляров Sitecore CMS мы можем запустить на одном сервере в соответствии с документацией Sitecore e.d. Мы хотим иметь возможность отслеживать и выяснять, где находится наше узкое место на данный момент. Некоторые наши сайты загружаются очень медленно, другие загружаются очень быстро. Большинство наших реализаций Sitecore, которые работают на этом сервере, имеют низкую производительность и имеют ужасное время загрузки после компиляции. Наши решения Sitecore работают на сервере Win 2008 64 с Microsoft SQL Server 2008 для баз данных. Я понимаю, что было бы удобно указать более подробную информацию о нашей настройке, но я надеюсь, что мы сможем получить некоторую полезную основную информацию о том, как отслеживать и находить узкие места e.d.

Какие инструменты / советы / подсказки у вас есть?

Ответы [ 5 ]

5 голосов
/ 04 июля 2011
  • do НЕ используйте слишком много разных пулов asp.net , вызываемых и выделенных в plesk.Разместите больше сайтов в одном пуле.
  • Больше памяти или остановка неиспользуемых программ / служб на сервере
  • Проверьте, есть ли у вас ограничения для памяти напул приложений , который создает пул, продолжает автоматический перезапуск.
  • В базе данных установите Режим восстановления на простой.
  • Сократите файлы базы данных и переиндексируйте базу данных,изнутри программа
  • после всего этого Defrag ваши диски

Проверьте память с помощью Process Explorer .
Чтобы проверить, чтоНачиная с вашего сервера, используйте autoruns , но будьте осторожны, чтобы не остановить любую критически важную службу, и компьютер никогда не запустится снова.Не останавливайте сервисы от автозапуска, используйте диспетчер сервисов, чтобы изменить тип на ручной.Кроме того, многие службы SQL Server не нуждаются в запуске, если вы их никогда не использовали.

Некоторые другие советы

  • Переместите временные файлы / и, возможно, каталог сборки asp.net на другой диск.
  • Удалите все файлы из временного каталога (cd% temp%)

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

Чтобы разместить много сайтов в одном пуле, необходимо изменить разрешения сайтов в новом пуле общих ресурсов.,Это не сложно, просто найдите время и организуйте, чтобы узнать, какой сайт работает под каким пулом.Теперь предположим, что у вас есть 10 сайтов, лучше использовать 2 разных пула и распределять сайты в этих пулах по загрузке каждого сайта.

2 голосов
/ 05 июля 2011

Нет немедленного ответа на настройку производительности Sitecore. Но вот несколько важных советов:

1) КЕШИНГ

Кэширование - это все. Параметры кэша Sitecore по умолчанию редко бывают правильными для любого приложения. Если у вас много памяти, вы должны увеличить размеры кеша:

http://learnsitecore.cmsuniverse.net/en/Developers/Articles/2009/07/CachingOverview.aspx

http://sitecorebasics.wordpress.com/2011/03/05/sitecore-caching/

http://blog.wojciech.org/?p=9

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

2) БАЗА ДАННЫХ

База данных является последним узким местом для проверки. Я редко касаюсь базы данных. Тем не менее, производительность БД может быть увеличена с правильными настройками:

Свойства базы данных, повышающие производительность:

http://www.theclientview.net/?p=162

Эта статья о фрагментации индекса очень полезна:

http://www.theclientview.net/?p=40

1 голос
/ 04 января 2012

Sitecore имеет главный недостаток, он использует GUID для первичных ключей (среди других плохо выбранных типов данных), это фрагментирует таблицу из первой вставки и, если у вас сильно При использовании базы данных Sitecore фрагментация может составить более 90% в течение часа. Это не очень хорошо продуманная база данных, и мы рекомендуем смотреть на другие продукты, пока они не исправят это, это вызывает у нас головную боль производительности (время и деньги). Мы стоим на месте и не можем больше добавлять ОЗУ не можем перестраивать индексы чаще

1 голос
/ 04 июля 2011

Не могу говорить о Sitefinity, но придет с некоторыми советами для Sitecore.

  • Используйте кэширование Sitecores всегда, когда это возможно, особеннов XSLT (так как они, как правило, проще, чем макеты и подслои, и, следовательно, кэширование Sitecore не нарушает их, как это делает кэширование Sitecore с обратными передачами asp.net), этот OFC будет полезен только в том случае, если к повторным чтениям, подслоям и т. д. обращаются много.используйте /sitecore/admin/stats.aspx?site=website, чтобы проверить вещи, которые не кэшируются
  • Используйте Sitecores profiler, откройте элемент в профилировщике и посмотрите, какие подслои и т. д. требуют времени
  • Используйте только XSLT для простейшего контента, если он станет более сложным, чем если бы я пошел на подуровни (элементы управления asp.net), это немного предвзято, так как я не люблю XSLT, но опыт показывает, что .ascxбыстрее
  • Используйте срок действия содержимого IIS для статических файлов (например, для всего / sitecore и, если у вас есть некоторые изображения, файлы JavaScript и CSS), это для IIS 6: ссылка msdn
  • Проверка времени доступа к базе данных с помощью Sitecore Databasetest.aspx (тот, что для Sitecore 6, намного лучше, чем простой, который работает на Sitecore 5 и 6) Ссылка на Sitecore SDN

И это то, о чем я могу думать с макушки головы.

0 голосов
/ 12 марта 2015

Кроме того, настройте свой IIS на утилизацию app_pool ТОЛЬКО раз в день в определенное время.Я обычно устанавливаю мой на 3 часа ночи.Таким образом, приложение никогда не засыпает, не перезагружается и т. Д. Лучше всего сократить время раскрутки.

Дополнительно настройте IIS на «всегда работающий» вместо «при запуске».Таким образом, когда приложение перезапускается, оно немедленно и снова перекомпилируется, готово к реву.

Sitefinity - это действительно фантастическое программное обеспечение (надеюсь, мои советы выше, а не мое одобрение продукта).ха-ха

...