Назад | Перейти на главную страницу

Вопрос передовой практики: пулы приложений в IIS 7.5

У меня есть несколько веб-приложений asp.net, некоторые из которых работают под asp.net 1.1, некоторые из них работают на 2.0, а некоторые на 3.5 в прошлом, все это работало на Windows 2003 с iis6, и я сделал для каждого сайта пул приложений. через некоторое время я где-то прочитал в Интернете, что лучше использовать пул приложений для каждой версии инфраструктуры .net, чтобы все приложения 2.0 работали в одном пуле приложений, а все 3.5 работали сами по себе, и так далее.

Теперь я перехожу на Windows 2008 R2 с iis7.5, а версии 1.1 или 3.5 нет, поэтому пулы приложений имеют только вариант 2.0. было бы лучше разделить веб-приложения по версии фреймворка? или не в том, что каждый пул приложений имеет свой собственный экземпляр фреймворка?

На самом деле .net 2.0 и .net 3.5 фактически запускали и использовали одну и ту же версию ASP.NET (и CLR в этом отношении), поэтому на самом деле всякий раз, когда вы хотите запустить .net 3.0 или 3.5, вы должны выбрать версию 2.0.

Теперь, с точки зрения изоляции пула приложений, первое, что вам нужно будет иметь отдельные пулы приложений для каждой версии CLR / asp.net, это означает, что 4.0 и 2.0 должны быть разделены, однако 2.0, 3.0 и 3.5 могут жить счастливо. в том же AppPool.

С точки зрения передовой практики это действительно зависит от нагрузки и типов приложений, которые вы размещаете, и многих других критериев, но я бы действительно использовал AppPool Isolation, особенно для:

  1. Старайтесь поддерживать изоляцию между приложениями таким образом, чтобы вы могли
    а) измерять и контролировать их независимо друг от друга, так что вы можете легко увидеть ЦП, память и другие ресурсы, которые каждый из них потребляет.
    б) иметь возможность выгружать (перерабатывать) некорректное поведение приложения / сайта.
    в) изолировать приложения, разные уровни ожидания обслуживания, например, вы можете знать, что определенное приложение является важным, а не очень важным. Помните, что одно приложение, в котором есть ошибка, может вывести из строя рабочий процесс, если он работает в режиме полного доверия, что затронет все остальные, запущенные в том же пуле приложений.
    г) изолировать приложения, которые разные требования безопасности, например, вам может потребоваться запустить некоторые из них с определенными привилегиями (такими как доступ к SQL Server с использованием Kerberos или запись файлов на диск, или другие вещи, к которым вы не хотите, чтобы другие приложения получали доступ. Таким образом, вы можете запускать каждый пул приложений с различные учетные данные, обеспечивающие уровень изоляции и защиты операционной системы.

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

Однако я думаю, что если вы не размещаете большое количество сайтов (я имею в виду> = 500), я бы рекомендовал изолировать каждый сайт в своем собственном пуле приложений, особенно если они не будут работать в Medium Trust или других фреймворках, таких как PHP, ASP, ISAPI и т. Д., Поскольку они предоставляют слишком много возможностей для потенциально недопустимых действий (таких как чтение конфигурации других сайтов или памяти).