让自己一片空白

等待 希望 爱 支撑一辈子
posts - 3, comments - 2, trackbacks - 0, articles - 22
  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

日历

<2025年2月>
2627282930311
2345678
9101112131415
16171819202122
2324252627281
2345678

公告

Do what you love

常用链接

相册

搜索

  •  

IIS Insider

Posted on 2006-05-18 13:20 等待和希望 阅读(123) 评论(0)  编辑 收藏 引用 所属分类: Windows

限制 IIS 在服务器上对 CPU 的使用

问:

我们的 Windows Server 2003 Enterprise Edition 托管了我们依赖的多个应用程序。我们注意到在使用 IIS 6 应用程序时,有时候服务器的响应会变得很慢。查看 CPU 使用时我们发现,在执行某些任务时 IIS 应用程序会占用大量的 CPU 时间。是否有什么办法可以在服务器上限制 IIS 对 CPU 使用?

答:

您可以在 IIS 6 中启用 CPU 监视(如下所示),使用 CPU 监视可以对应用程序池的 CPU 使用情况进行有限控制。

当设置为无操作时,则在应用程序池的 CPU 超过指定的阈值时,系统就会记录一条事件查看器消息。当设置为关闭时,应用程序池会按“刷新 CPU 使用数”中指定的时间间隔关闭。

iisi110401.jpg


单击此处查看大图。

然而上述办法只在少数情况下较为有用,真正的 CPU 使用控制则可以通过 Windows Server 2003 Enterprise Edition 中附带的 Windows Services Resource Manager (WSRM) 来实现。这一杰出的功能不仅允许您将任何应用程序对 CPU 的使用限制为某个预定义的数量,而且还可以安排这种限制并对特定用户和组指定这些限制。

以下所示的就是 WSRM 中的“Add Running Process”窗体,在这个窗体中您可以指派某个正在运行的进程,包括 W3WP.exe(您的应用程序池)的任何实例。

iisi110402.jpg


单击此处查看大图。

使用这种方法,您定义了一个称为“进程匹配条件”的规则。这个规则是 WSRM 用来选择哪些进程由 WSRM 管理的。然后您创建一个“资源分配策略”,用来对“进程匹配条件”中标识的进程强制执行指定的 CPU 限制。

有关 WSRM 功能的更多详细信息,请参见 http://www.microsoft.com/windowsserver2003/technologies/management/wsrm/default.mspx


限制多个网站的特定用户权限

问:

我正在阅读一些 IIS Insider 文章,我发现这些文章很有帮助。我无法找到有关某个 IIS 问题的信息,也就是多个网站的权限这个问题。

很快我就将搭建一个 Windows Server 2003 的共享宿主环境。我会有多个网站,并且我希望将特定用户限制到他们的网站。

但我没有找到有关此问题的任何文章。对于此问题,您是否有什么建议?

答:

如果用户具有可以通过服务器身份验证的 Windows 帐户,则访问就是通过 NTFS 进行控制的,这和您强化文件服务器使用的方法一样。这种方法要求正确使用大型组,例如 Everyone 组、Users 组、Authenticated Users 组、Domain Users 组和 Network 组。在您为这些用户集合 分配权限的任何时候,就为大多数用户赋予了访问权限,包括匿名用户。

首先,您需要决定的就是每个站点是否需要一个唯一的匿名用户。这将在网站之间提供最高程度的隔离,但同时也更难于管理。使用唯一匿名用户,您就可以确保有权在一个网站中匿名浏览内容的用户无法直接或间接访问另一个网站上的内容(同时处在匿名帐户的安全上下文中)。

我建议您使用组来对想要与其他网站隔离开来的网站进行管理。为网站的某“类”用户创建一个组,然后将这些用户分配到组中。这种方法是在本地服务器上管理权限的最佳做法之一,并且可以很容易地通过控制组成员关系来更改有权访问文件的用户。例如,您创建了一个 Web Site A Browsers 组,并指定该组对静态内容和脚本具有“读取”权限,对 .dll 和 .exe 程序具有“读取和执行”权限。接下来,考虑将该组对整个 Web 内容目录树的权限设定为“拒绝写入”,以确保匿名用户不能写入 web 服务器。这可以在有人将“写入”权限分配给某个组(例如 Users 组或 Authenticated Users 组,这两个组都包含 IUSR_<servername> 帐户)的情况下提供保护。当然,这将会使得 Web 应用程序无法使用匿名用户帐户在这些位置向服务器写入内容,例如一个 Access 数据库,因此如果您采用了该建议,您需要显式为所有这种位置分配“写入”权限,并撤除“拒绝写入”权限。请一定不要对非信任用户可以访问的任何位置分配“执行”和“写入”权限!

取决于您要求的安全程度,您可能还希望为每个网站创建一个唯一的匿名用户帐户。将您用于匿名访问的帐户放入 Web Site A Browser 组,这样您就有了一个针对匿名访问进行了正确配置的站点。使用这种组的方式进行保护的一个优点,就是如果您拥有其他具有已验证帐户的用户,但是想要将这些用户视为匿名用户,那么您就可以将这些用户添加到 Web Site A Browser 组,从而使这些用户成为“匿名等同体”。

接下来,创建一个 Web Site A Authors 组,并将您想要发布到网站的用户放到这个组中。设定这个组对整个网站目录树具有“写入”权限。

最后,您应当考虑使用 Domain 本地组和用户,而不使用权限的本地组。这么做的主要原因是因为本地用户和组不能被复制到另一台服务器中。在您需要通过全新安装来升级到新操作系统并移动您的网站时,您可能需要全部重新生成用户、本地组和权限。对于一些服务器来说,这是一个复杂和容易出错的任务。如果您使用分配给域组和用户帐户的权限来复制文件,则新服务器就会假定它是域成员或信任域成员,从而可以强制执行这些权限。在进行灾难恢复时,这也可能是个问题。在通常情况下,这是一个功能性与安全性的平衡,因为出于安全性的考虑不推荐让匿名用户成为一个基于域的帐户。但是,对于一些安装(例如 Intranet 或 DMZ 中的独立林或 web 场)来说,基于域的匿名用户是一个可接受的风险。

这些建议使您在管理 web 服务器时具有最大的灵活性,这样,一个站点的用户就不会在另一个站点上拥有特权。对于更高的 IIS 6.0 安全性,您可能需要使用唯一的应用程序池身份。有关如何创建更高程度的隔离,请参见白皮书在 Windows Server 2003 和 Internet 信息服务 (IIS) 6.0 上配置应用程序隔离http://www.microsoft.com/technet/prodtechnol/windowsserver2003/technologies/webapp/iis/appisoa.mspx.


是否应该在 IIS 6.0 中使用 IISReset?

问:

有人告诉我说不应该使用 IISReset 来重设 IIS 5 或 IIS 6,尽管在 IIS 5 的文档中建议采用这种做法。KB 文章 286196 (http://support.microsoft.com/default.aspx?scid=kb;en-us;286196) 中建议使用 net stop iisadmin,然后使用 net start 来启动单个服务。在 IIS 6 中这种做法是否更为可靠?但在 IIS 5 中这种做法为什么会有风险?

答:

IISReset 首次出现在 IIS 5 中,替代 IIS 4 中停止和启动 IIS 相关服务所需的 net 命令。在大多数情况下,它确实提供了一个较为可靠的方式来重设 IIS 5。恰如 KB 文章所说的,“IISReset 命令行工具会等到服务正常关闭,然后再启动这些服务。由于多数服务依赖于 IISAdmin 服务,因此这种关闭可能不会太及时。”如果 IIS 没有在超时之前关闭,服务就会被取消,您对元数据进行的更改可能不会被写入,其结果是您的 IIS 配置好像“回复”到以前的配置。这种情况只有在 IIS 处于挂起状态或是您的元数据太大时才会出现。

解决办法就是发出 IISRESET 时使用 /NOFORCE 命令和 /TIMEOUT:xxx,其中 xxx 指您希望使用的 IISRESET 停止等待重设前的秒数。

请记住,很少需要对 IIS 6 使用 IISRESET。大多数情况下,您可以回收应用程序池来达到相同目的。相比于 IISRESET 会导致服务器关闭所有应用程序(包括 FTP、SMTP 和 NNTP)来说,回收应用程序池的后果不会那么严重。作为结果,如果您习惯于使用 IISRESET 来重新启动应用程序,请转而开始重新写入脚本来回收应用程序池。

您可以在 IIS 6 资源指南 和以下 Microsoft KB 文章中找到有关 IISRESET 的更多信息:

IISReset 可能不保存 IIS 的配置更改

教学:将 IISReset 配置为在复位服务之前等待比默认时间更长的时间

Iisreset.exe 的 Internet 信息服务 5.0 命令行语法

不能利用 /timeout:0 开关参数发出 IISRESET 命令

只有注册用户登录后才能发表评论。