На сервере, на котором запущено несколько сайтов ASP.NET, лучше ли использовать один пул приложений для каждого сайта или для совместного использования одного пула приложений? Каковы преимущества или недостатки, присущие каждой установке? Или здесь есть жесткое правило?Совместное использование пулов приложений .NET
ответ
Это действительно зависит от требований, предъявляемых к сайту, а также от вашей обеспокоенности в отношении рисков.
Когда два приложения запускаются внутри одного пула приложений, они имеют одинаковый уровень безопасности, поэтому для некоторых существует проблема безопасности, так как в теории каждый может иметь доступ к файлам другого. Кроме того, если один сайт начинает иметь проблемы и использует память, это может привести к переработке или зависанию, которые могут повлиять на оба.
Несмотря на то, что для этого не существует «жесткого и быстрого» правила, некоторые из вещей, которые я считаю и которые вызывают «автоматические» решения для меня, следующие.
- Является ли миссия приложения критической? (Если это так, отдельный пул приложений)
- Это приложение для сторонних разработчиков? (Если это так, и неуверенность в том, что все это делает, отдельный пул приложений)
- Будет ли это приложение видеть крупные всплески активности? (Если это так, то лучше всего выделить)
Существует много вариантов, но ключи являются изоляцией и способностью устранять неполадки в отдельных приложениях. Вот Microsoft article, который касается и его немного.
Это будет зависеть многое от того, если некоторые сайты нужно больше надежности, чем другие, то, что ожидаемая нагрузка на сайте есть, и т.д.
Sharing бассейн будет более эффективным в целом, но ни одного сбойного приложения может больше быстро вызывают проблемы для других сайтов. Кроме того, вы можете перерабатывать или обновлять отдельные пулы приложений отдельно, что упрощает планирование обслуживания.
Нет жесткого правила. Я предпочитаю использовать один пул приложений на каждом сайте (и IIS7 даже по умолчанию для создания одного на сайт), потому что мне нравится играть в него безопасно, если у меня есть утечка памяти на одном сайте/пуле, я не хочу, чтобы это затрагивало и снимало другие сайты. Но у меня также есть несколько серверов, на которых 100 сайтов используют один пул без проблем. Поэтому, как всегда, все зависит.
Зачем рисковать 100 сайтов в одном бассейне? Что вы набираете? Если выполнение приостановлено на один, они не все приостановили? Будет ли 4 A/Ps с 25 сайтами работать немного больше, но более устойчивым? – Markive
Одним из преимуществ отдельных AppPools является то, что в случае, если вам нужно переработать AppPool, вы можете сделать это для одного сайта, не влияя на производительность (или кеширование) других.
Я бы предпочел одно приложение - один пул приложений - у вас проблемы с производительностью. Исключение в фоновом потоке (как только кто-то начинает играть в async) может сбить весь пул приложений. И если вы не включили автоматическую рециркуляцию, это может вызвать множество проблем.
Одним из наиболее важных правила помнить:
НЕ пут .NET 1.1 и .NET 2.0 приложений в одном пуле приложений. Это будет очень быстро.
- 1. Совместное использование приложений Azure
- 2. Совместное использование сборок в .NET.
- 3. Совместное использование приложений ASP.NET MVC
- 4. Совместное использование неподписанных OSX-приложений
- 5. Использование пулов потоков, управляемых сервером приложений (Glassfish)
- 6. Совместное использование Qt-библиотек среди приложений Qt
- 7. Совместное использование приложений Ресурсы в WPF
- 8. «Совместное использование функций» для мобильных веб-приложений
- 9. Совместное использование приложений в Adobe AIR
- 10. Совместное использование приложений с Bluetooth или WiFi
- 11. Совместное использование веб-приложений для разных клиентов
- 12. Совместное использование конфигураций приложений в решении
- 13. Совместное использование пула JNDI среди приложений
- 14. Совместное использование сеанса между двумя рельсами приложений
- 15. Совместное использование личных ключей в разработке приложений
- 16. Перечисление пулов приложений в IIS
- 17. Совместное использование компонентов в платформе .NET
- 18. Совместное использование методов класса между .NET-языками
- 19. Совместное использование цепочек между двумя приложениями .NET
- 20. Использование пулов в Python
- 21. Использование команды Invoke для получения пулов приложений на удаленных серверах
- 22. Совместное использование сеанса JVM
- 23. Совместное развертывание сборки .Net для однократного щелчка приложений
- 24. Несколько пулов приложений, работающих как служба сети
- 25. Устанавливать приоритет для пулов приложений в IIS
- 26. Совместное использование моего репозитория (шаблон хранилища) с другими проектами (.NET)?
- 27. Изменение пулов приложений IIS 6 для проекта веб-приложений
- 28. Совместное использование DLL между проектами
- 29. Совместное хранилище Azure для приложений
- 30. Совместное использование файлов приложений и данных между пользователями ios
Итак, если жизненный цикл страницы, например, одного клиента, требует много ресурсов и времени для завершения, было бы лучше разделить их на отдельные пулы приложений, чтобы потоки не были заняты? – Markive