[ 2005/05/24 00:50 | by 网络毛毛虫 ]
为了更好的理解这一问题的解决方法,我们需要先介绍一下.NET Framework的安全机制。然后再结合我们的实际问题来讨论解决方案。

  为了解决安全问题,.NET Framework提供了一种称为代码访问安全性的安全机制。代码访问安全性允许根据代码的来源和代码的标识等属性将代码设置为不同级别的信任代码,同时还详细定义了不同级别的对代码的信任,从而可以详细的对代码设置各自的权限而不是将最大权限赋给所有的代码。使用代码访问安全性,可以减小恶意代码或各种错误的代码带来的严重的系统安全性问题的可能性。您可以设置允许代码执行的一组操作,同样可以设置永远不允许代码执行的一组操作。

  实现代码访问安全性的基础就是JIT(运行时编译)和IL(中间代码)。所以所有以公共语言运行库为目标的托管代码都会受益于代码访问安全性。非托管代码则无法完全使用代码访问安全性。
下面我们将介绍一下代码访问安全性实现的各种功能:

  代码访问安全性是控制代码对受保护资源和操作的访问权限的一种机制。在 .NET Framework中,代码访问安全性执行下列功能:

  · 定义权限和权限集,它们表示访问各种系统资源的权限。

  · 使管理员能够通过将权限集与代码组关联来配置安全策略。

  · 使代码能够请求运行所需权限以及其他一些有用的权限,以及指定代码绝对不能拥有哪些权限。

  · 根据代码请求的权限和安全策略允许的操作,向加载的每个程序集授予权限。

  · 使代码能够要求其调用方拥有特定的权限。

  · 使代码能够要求其调用方拥有数字签名,从而只允许特定组织或特定站点的调用方来调用受保护的代码。

  · 通过将调用堆栈上每个调用方所授予的权限与调用方必须拥有的权限相比较,加强运行时对代码的限制。

  为了确定是否已授予代码相应的权限,.NET运行库的安全系统将遍历整个调用堆栈,将每个调用方所授予的权限与目前要求的权限相比较。如果调用堆栈中的任何调用方没有要求的权限,则会引发安全性异常,并会拒绝访问和相应的操作。堆栈步旨在防止引诱攻击;在这种攻击中,受信程度较低的代码调用高度信任的代码,并使用高度信任的代码执行未经授权的操作。在运行时要求所有调用方都拥有权限将影响性能,但对防止代码遭受攻击至关重要。若要优化性能,可以使代码执行较少的堆栈步;但是,任何时候这样做时均必须确保不会暴露安全缺陷。

  还存在另外一种代码访问安全性的常见用途,即应用程序将控件从网络 Web 站点直接下载到客户端,这种方式的代码安全性也是可以在客户端进行设置的,根据签名等数据权限证书来确定是不是可以允许下载的控件运行。这种方法类似于ActiveX的安全性设置,但是比之在设置权限更加详细和强大。同JAVA APPLET的沙箱安全机制相比,.NET 的客户端控件可以在本地简单设置后访问客户端的各种资源。由于这一方面的用途不是我们的重点,所以我们在这里就不再更详细的讨论其用途及其实现原理了。

  下面我们就谈谈如何应用这一安全特性来解决ASP.NET中存在的系统安全漏洞。由于我们介绍的系统是共享主机,所以有其特殊性,即系统管理员无法事先给所有的代码赋予相应的权限,因为每个用户都可能有各种权限要求,并且这些要求特殊权力的代码在使用中都可能出现的,所以在权限管理上随时都有各种要求。
因此在权限设置方面,不仅仅是管理员设置,也包括了各个共享主机用户的权限请求,这也正是安全代码机制的一个重要部分。

  请求权限是您让运行库知道代码执行有哪些操作权限的方法。通过将属性(声明式语法)放到代码的程序级范围来为程序集请求权限。

  请求内置权限的代码示例:


//The attribute is placed on the assembly level.
using System.Security.Permissions;
[assembly:PermissionSetAttribute(SecurityAction.RequestMinimum, Name = "FullTrust")]

  将此段代码放在程序的开始部分(namespace声明之前),在编译时就会将请求的权限存储在程序集清单中。加载时,运行库检查权限请求,并应用安全策略规则来确定授予程序集哪些权限。

  虽然我们编写的大部分代码都没有请求权限,其实不管是共享主机形式还是独立服务器形式都应该请求权限,这是因为请求权限有助于确保只将代码需要的权限授予代码。如果没有授予代码额外权限,即使某些恶意代码想利用您的代码来进行安全性破坏,它也无法操作没有赋给您自己代码相应权限的额外系统资源。您只应该请求代码需要的那些权限,而不应请求更多权限。

  代码请求权限之后,系统管理员可以使用"权限查看"工具 (Permview.exe,位于您的.NET Framework的目录的bin目录下) 来检查您的程序集并根据其他条件来设置安全策略以决定是否给您的代码所请求的相应权限。如果您不显式地在代码中请求应用程序需要的权限,那么管理员将很难管理您的应用程序。在权限管理严格的主机上,将无法实现您的代码所要求的功能。

  请求权限会通知运行库应用程序正常运行需要哪些权限,或具体不需要哪些权限。在.NET Framework安装后的默认状态下,所有代码都是FullTrust(完全信任)的。这时是不需要申请任何权限的,但是管理员一旦修改了代码安全,我们使用的磁盘访问就要受到限制了,这是就需要申请相应的权限了。我们上边介绍的文件管理代码就需要具有本地硬盘读写操作的能力,则应用程序必须拥有 FileIOPermission。如果代码不请求 FileIOPermission,在本地安全设置不允许应用程序拥有此权限的主机上,在应用程序尝试磁盘操作时就会引发安全性异常。即使应用程序能够处理此异常,也不会允许它操作磁盘。当然,如果您的代码不访问受保护的资源或执行受保护的操作,则不必请求任何权限。例如,如果代码只根据向它传递的输入来计算结果而不使用任何资源,则不必请求权限。如果您的代码访问受保护的资源但未请求必要的权限,则仍可能允许它执行,但如果它尝试访问某种资源而它又没有必要的权限,则可能在执行过程中失败。

现在绝大多数的虚拟主机都禁用了 ASP 的标准组件:FileSystemObject,因为这个组件为 ASP 提供了强大的文件系统访问能力,可以对服务器硬盘上的任何文件进行读、写、复制、删除、改名等操作(当然,这是指在使用默认设置的 Windows NT / 2000 下才能做到)。但是禁止此组件后,引起的后果就是所有利用这个组件的 ASP 将无法运行,无法满足客户的需求。
  如何既允许 FileSystemObject 组件,又不影响服务器的安全性(即:不同虚拟主机用户之间不能使用该组件读写别人的文件)呢?这里介绍本人在实验中获得的一种方法,下文以 Windows 2000 Server 为例来说明。
  在服务器上打开资源管理器,用鼠标右键点击各个硬盘分区或卷的盘符,在弹出菜单中选择“属性”,选择“安全”选项卡,此时就可以看到有哪些帐号可以访问这个分区(卷)及访问权限。默认安装后,出现的是“Everyone”具有完全控制的权限。点“添加”,将“Administrators”、“Backup Operators”、“Power Users”、“Users”等几个组添加进去,并给予“完全控制”或相应的权限,注意,不要给“Guests”组、“IUSR_机器名”这几个帐号任何权限。然后将“Everyone”组从列表中删除,这样,就只有授权的组和用户才能访问此硬盘分区了,而 ASP 执行时,是以“IUSR_机器名”的身份访问硬盘的,这里没给该用户帐号权限,ASP 也就不能读写硬盘上的文件了。
  下面要做的就是给每个虚拟主机用户设置一个单独的用户帐号,然后再给每个帐号分配一个允许其完全控制的目录。
  如下图所示,打开“计算机管理”→“本地用户和组”→“用户”,在右栏中点击鼠标右键,在弹出的菜单中选择“新用户”:





  在弹出的“新用户”对话框中根据实际需要输入“用户名”、“全名”、“描述”、“密码”、“确认密码”,并将“用户下次登录时须更改密码”前的对号去掉,选中“用户不能更改密码”和“密码永不过期”。本例是给第一虚拟主机的用户建立一个匿名访问 Internet 信息服务的内置帐号“IUSR_VHOST1”,即:所有客户端使用 http://xxx.xxx.xxxx/ 访问此虚拟主机时,都是以这个身份来访问的。输入完成后点“创建”即可。可以根据实际需要,创建多个用户,创建完毕后点“关闭”:

现在新建立的用户已经出现在帐号列表中了,在列表中双击该帐号,以便进一步进行设置:

在弹出的“IUSR_VHOST1”(即刚才创建的新帐号)属性对话框中点“隶属于”选项卡:

刚建立的帐号默认是属于“Users”组,选中该组,点“删除”:

  现在出现的是如下图所示,此时再点“添加”:

在弹出的“选择 组”对话框中找到“Guests”,点“添加”,此组就会出现在下方的文本框中,然后点“确定”:

  出现的就是如下图所示的内容,点“确定”关闭此对话框:

  打开“Internet 信息服务”,开始对虚拟主机进行设置,本例中的以对“第一虚拟主机”设置为例进行说明,右击该主机名,在弹出的菜单中选择“属性”:

  弹出一个“第一虚拟主机 属性”的对话框,从对话框中可以看到该虚拟主机用户的使用的是“F:\VHOST1”这个文件夹:

  暂时先不管刚才的“第一虚拟主机 属性”对话框,切换到“资源管理器”,找到“F:\VHOST1”这个文件夹,右击,选“属性”→“安全”选项卡,此时可以看到该文件夹的默认安全设置是“Everyone”完全控制(视不同情况显示的内容不完全一样),首先将最将下的“允许将来自父系的可继承权限传播给该对象”前面的对号去掉:

此时会弹出如下图所示的“安全”警告,点“删除”:

 此时安全选项卡中的所有组和用户都将被清空(如果没有清空,请使用“删除”将其清空),然后点“添加”按钮。

  将如图中所示的“Administrator”及在前面所创建的新帐号“IUSR_VHOST1”添加进来,将给予完全控制的权限,还可以根据实际需要添加其他组或用户,但一定不要将“Guests”组、“IUSR_机器名”这些匿名访问的帐号添加上去!

  再切换到前面打开的“第一虚拟主机 属性”的对话框,打开“目录安全性”选项卡,点匿名访问和验证控制的“编辑”:

  在弹出的“验证方法”对方框(如下图所示),点“编辑”:

  弹出了“匿名用户帐号”,默认的就是“IUSR_机器名”,点“浏览”:

  在“选择 用户”对话框中找到前面创建的新帐号“IUSR_VHOST1”,双击:

 此时匿名用户名就改过来了,在密码框中输入前面创建时,为该帐号设置的密码:

  再确定一遍密码:

  OK,完成了,点确定关闭这些对话框。
  经此设置后,“第一虚拟主机”的用户,使用 ASP 的 FileSystemObject 组件也只能访问自己的目录:F:\VHOST1 下的内容,当试图访问其他内容时,会出现诸如“没有权限”、“硬盘未准备好”、“500 服务器内部错误”等出错提示了。
  另:如果该用户需要读取硬盘的分区容量及硬盘的序列号,那这样的设置将使其无法读取。如果要允许其读取这些和整个分区有关的内容,请右键点击该硬盘的分区(卷),选择“属性”→“安全”,将这个用户的帐号添加到列表中,并至少给予“读取”权限。由于该卷下的子目录都已经设置为“禁止将来自父系的可继承权限传播给该对象”,所以不会影响下面的子目录的权限设置。

此方法可以从根本上杜绝FSO的虚拟主机问题,昨天晚上我也试用了这一方法很方便的解决了FSO的问题。

在Microsoft .NET Framework Configuration中可以设置所有关于.NET Framework的属性。
  点击我的电脑,打开下拉菜单,我们可以看到程序集缓存、已配置程序集、远程处理服务、运行库安全策略、应用程序等五项。运行库安全策略设置是我们这篇文章的重点。
   
    我们可以先查看一下程序集缓存,在这里我们可以看到所有的全局程序集缓存,全局程序集缓存中存储了专门指定给由计算机中若干应用程序共享的程序集。在这里我们可以发现我们可以使用的所有的程序集,同时也可以添加和删除某些程序集。详细操作请参见.NET Framework SDK文档。
   
    我们在这里主要讨论的是运行库安全策略。在此策略中,按层次结构由高到低分为四个级别,即:企业、计算机、用户、应用程序。在计算权限授予时,运行库从该层次结构的顶部开始,然后向下进行计算。较低的策略级别不能对在较高级别上授予的权限进行增加,但是可以使权限减少。这就是说如果我们将计算机策略设置为较小的权限时,可以不必更改企业策略就可以使设置的权限生效,也就是说权限检查的顺序是从低级别到高级别,只有在低级别中不存在的设置才会检查上一级的设置。默认情况下,用户策略和应用程序域策略的限制性小于计算机策略和企业级策略。大部分默认策略存在于计算机级别。所以我们需要将默认安装的主机的权限在计算机级别上进行修改,修改的内容根据主机是不是共享主机,主机应用的其他不明代码的可能性来设置。如果是我们讨论的共享主机的话,在计算机级别上就尽量将权限设的小一些,为了避免我们讨论的文件系统安全问题,一定要注意权限中的本地磁盘访问权限。
   
    我们打开计算机策略设置可以发现几个默认的代码组、权限集和策略程序集。
   
    根据需要,我们可以添加代码组和自定义的权限集。
   
    在添加代码组的时候可以选择几种条件,主要的条件类型:默认为All Code、应用程序目录、哈希、强名称、作者、站点等。
   
    对于我们所要讨论的共享主机,我们需要将My_Computer_Zone下的All Code的权限更改为不能进行磁盘读写,在更改之前,我们需要先定义一个权限集。这一权限集的作用就是将我们需要点击权限集,右键快捷菜单中选择新建,会出现一个创建权限集的窗口,这里需要给我们新建的权限集命名。下一步就是将单个权限分配给权限集。如下图所示。





在这里我们可以给这个新建的权限集赋予一个的系统权限,如上图所示,可用的权限包括:目录服务、DNS、事件日志、环境变量、文件IO、OLEDB数据库操作、注册表等等。我们主要要说明的是文件IO操作,其他的权限操作可以根据自己的需求来设置。这里我们就不再说明了。
   
    在文件IO的权限设置中我们可以自定义针对每一个目录的权限,这里包括读、写、追加、路径盘等操作,在这里我们可以将我们需要的目录权限添加到列表中。因为我们是利用这一权限使所有没有配置权限的代码不可以进行文件IO操作,所以我们不强文件IO添加到分配的权限中。
   
    新建了这一权限集后,我们更改一下默认设置,即将All Code的权限设置为此新建的权限集,也就是说所有没有在此定义代码都不能访问文件IO系统。
   
    这里需要注意一件事情,因为Microsoft .NET Framework Configuration本身也需要文件IO权限,如果没有单独分配给Configuration一个文件IO操作权限的话,那么您就不能再次使用Configuration来设置权限了,只能重新安装.NET Framework了。所以我们需要将FullTrust权限分配给Configuration所使用的Dll,即mscorcfg.dll。在添加时,成员条件可以选择强名称,使用"导入",到winnt/window .net/framework/versionnumber/下选择mscorcfg.dll。如果需要运行其他配置程序,还需要设置相应的权限,这些系统程序一般都在系统程序集缓存中。
   
    这样我们就完成了一个简单的设置,可以防止任何未经验证的代码访问文件IO系统。这样就从根本上防止了磁盘恶意操作。
   
    如果您今后需要利用这一功能或者有共享主机用户需要使用文件IO功能,那么您可以在Microsoft .NET Framework Configuration中将其加入代码,如果不能使其使用其他功能,可以仅仅设置一个只具有文件IO权限的权限集。如果是共享主机用户您还可以给他分配直接到其所使用的目录的全部读写权限,对于他的日志文档,您可以将读功能分配给用户。通过上边新建权限集时我们可以发现:权限集可以规定到每一个目录的读写权限,所以可以将用户锁定于其可以使用的目录中。当然对于共享主机提供商来说,最好的方法就是自己实现这些功能,然后配置权限系统使用户使用共享主机提供商的程序来实现他们的正常操作,而避免了恶意文件操作。
   
    需要注意的是如果分配给每一个单独的程序相应的权限时,我们最好使用强名称这一方式或者其他的可验证方式,强名称由程序集的标识--其简单文本名称、版本号和区域性信息(如果提供)--加上公钥和数字签名组成。这就需要我们使用Sn.exe 来设置密钥、签名和签名验证。强名称保证了程序是开发人员开发的并且没有被改动。
   
    在进行上面的设置之后,管理员可以根据用户的各种需求来设置不同的代码集和权限集。
   
    我们已经简单的介绍了一下ASP.NET中关于文件IO系统的漏洞的防治方法,这一方法有些繁琐,但是却可以从根本上杜绝一些漏洞,由于.NET的JIT(运行时编译)和IL(中间语言),.NET可以在程序编译时检查程序的安全性设置,所以能从根本上防止一些非法访问。.NET的代码安全性的内容很全面,我们讨论的只是很少的一部分,更多的功能需要大家共同来探索、学习。 

[ 2005/05/24 00:44 | by 网络毛毛虫 ]
目 录
选择网络适配器

· WHQL 认证

· 卸载能力

· 中断调解

· 64位功能

· 铜缆和光纤网络适配器

· 双端口或4端口的网络适配器

调整网络适配器

· 启用卸载特性

· 网络适配器资源

· 中断调解

TCP 参数

选择存储系统

· WHQL 认证

· 减少待存储数据的数量

· 存储阵列的选择

· HW RAID 的级别

· 选择RAID 级别

· 确定卷的布局

· 中断调解

与存储有关的参数

· CountOperations

· NumberOfRequests

· DontVerifyRandomDrivers

选择正确的高性能硬件

操作系统最佳实践

IIS 6.0 优化

内核模式的调整

· 缓存管理设置

· 请求和连接管理设置

用户模式设置

· IIS 注册表设置

· IIS Metabase

· IIS 工作进程选项(IIS Admin UI、应用程序池属性)

· 安全套接字层的调整参数

· ISAPI

· 托管代码调整参数

· 影响IIS性能的其他问题

· NTFS 文件系统设置

· Tcpip.sys 的IIS性能设置

· IIS的网络适配器调整和绑定

一般考虑事项

服务器消息块服务器模型

文件服务器的常规调整参数

· PagedPoolSize

· NtfsDisable8dot3NameCreation

· Disablelastaccess

· NumTcbTablePartitions

· TcpAckFrequency

中断关联

客户端计算机的常规调整参数

· DormantFileLimit

· ScavengerTimeLimit

· DisableByteRangeLockingOnReadOnlyFiles

· TcpAckFrequency

对 Boot.ini 文件使用 /3GB 开关参数

关闭签名和密封功能

· Windows Server 2003面向 NetBench 的注册表调整参数

· 客户端计算机上面向 NetBench 的注册表调整参数

· 添加针对描述属性的索引(服务器)

· 关闭磁盘碎片自动整理程序

· 在 TCP/IP 增加 MaxUserPorts 和 TcpWindowSize

针对 NTttcp 的调整

· 网络适配器

· TCP

针对Chariot 的调整

 



介绍
对于用户现有的大多数工作,Microsoft® Windows Server™ 2003 应该都能够运行自如。但是,我们还可以调整服务器设置并获得更好的性能表现,尤其是在工作负载的性质不会随同时间推移而不断变化的时候。

大多数的有效调整都应该考虑到硬件、工作负载以及性能目标这些因素。本文介绍了有助于提高性能的重要调整参数和设置。并且介绍了每一种设置以及它的潜在功效,帮助用户根据自己的系统、工作负载和性能目标做出明智的决策。

说明:Microsoft Windows® 2000 Server 和 Windows Server 2003的注册表设置和调整参数可能存在较大差异。在调校服务器时请务必牢记:使用早期或过时的调整指南可能会得到意料之外的结果。

此外,在直接操作注册表时请总是谨慎行事。如果必须编辑注册表,请首先进行备份。

网络的性能调整
网络体系结构包括许多组件、接口和协议;图1描述了其中的部分内容。本节以下部分将针对服务器负载,对部分组件的优化调整加以讨论。


图 1 网络栈的组件

网络体系结构由多个层组成,这些层可以被大致划分为:

· 网络驱动程序和NDIS。这些是处于最底部的层。NDIS将它下方的驱动程序接口暴露它上方的层;例如:TCP/IP。

· 协议栈。此层实现了诸如TCP/IP 和 UDP/IP 这样的协议。这些层向位于它们上方的层暴露了TDI接口。

· 系统驱动程序。属于典型的TDI客户端,用来向用户模式的应用程序暴露接口。WinSock接口由Afd.sys加以暴露。

· 用户模式的应用程序。

耗费大量网络资源的工组负载的调整工作涉及所有层的调整。下面介绍了其中的部分工作。

选择网络适配器
网络密集型的应用程序需要高性能的网络适配器。本节内容介绍了选择网络适配器时的一些注意事项。

WHQL 认证
选择通过了Microsoft Windows Hardware Quality Labs(WHQL)认证的网络适配器。

卸载能力
卸载有助于降低服务器CPU的使用率,从而提高系统的整体性能。Microsoft TCP/IP 传输可以让具有相应任务卸载能力的网络适配器卸载以下的一项或多项任务:

· 校验和任务。TCP/IP 传输可以在发送和接收时卸载IP和TCP校验和的计算和验证工作。

· IP 安全性任务。TCP/IP 传输可以卸载身份验证标头(AH)和ESP(封装安全性负载)的已加密校验和的计算和验证工作。TCP/IP传输还可以卸载ESP负载的加密和解密工作。

· 大型TCP 数据包的分段。TCP/IP 传输支持大型发送卸载(LSO)。利用LSO,TCP/IP传输可以卸载大型TCP数据包的分段工作。

· 堆栈卸载。整个网络堆栈可以被卸载到具有相应能力的网络适配器上。

中断调解
某些网络适配器可以降低向处理器发出中断的频率,这些中断表明适配器上启动(或完成)了某个网络操作。某些网络适配器还能够将网络和主机处理器的负载考虑在内,以一种自适应的方式做出上述决定。减缓中断的发生频率通常可以降低主机CPU的负载,但是除非能够以一种智能和自适应的方式执行中断调解,否则在CPU方面的性能节省将以网络延迟的增加作为代价。

64位功能
具有64位能力的网络适配器可以对大容量物理内存地址(4GB以上)执行直接内存访问(DMA)操作。

铜缆和光纤网络适配器
使用铜缆的网络适配器和使用光纤的适配器具有同样的性能,但是在价格上要便宜一些。铜缆网络适配器上的收发器的价格也要更低一些。

双端口或4端口的网络适配器
这些网络适配器对于故障转移应用来说非常适宜,但是网络适配器上的所有端口都共享同一个中断。通常,对于同样的工作负载,使用两块单端口的网络适配器要比使用一块双端口的网络适配器具有更好的性能。

调整网络适配器
如果网络适配器允许,可以通过调整网络适配器来优化网络吞吐量和资源使用率。需要记住的是:具体的调整工作需要视网络适配器、工作负载、主机资源以及性能目标而定。

启用卸载特性
开启网络适配器的卸载特性一般总是有益的。但是,在某些情况下,网络适配器的处理能力可能不足以完成高吞吐量情况下的卸载工作。比如,启用LSO会降低某些网络适配器最大能承受的吞吐量。但是,即使是这样的网络适配器,如果对吞吐量方面的降低并不在意,也应该启用卸载特性。请注意:某些网络适配器需要为发送和接收路径单独启用卸载特性。

网络适配器资源
有几种网络适配器允许管理员配置资源。可以为接收缓冲区和发送缓冲区设置参数。部分网络适配器会主动管理它们的资源,而无需为这些网络适配器设置这些参数。

中断调解
某些网络适配器会保留 buffer coalescing (缓冲区合并)参数(发送和接收缓冲区有时单独进行配置)。在网络适配器不能够以自适应方式执行中断调解时,考虑缓冲区合并十分重要。

TCP 参数
高吞吐量情境下可以考虑进行调整的TCP 参数如表1所示。

表 1. TCP 参数

参数
描述

TCPWindowSize
该值决定了在任何一个给定的时间,能够在网络上传送的最大数据量(以字节计)。可以使用如下注册表条目,将其设置为从1到65,535 字节的任何值:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\
Services\Tcpip \Parameters\TcpWindowSize (REG_DWORD)

对于gigabit接口,此参数的默认值被设置为65,535左右(向下舍入为最接近的完整TCP数据包的倍数),100Mbps的连接设置为 16,384,其他速度更低的接口(例如调制解调器)则设置为8,192 —— 同样需要向下舍入。理想情况下,该值应该被设置为端到端网络带宽(以字节为单位)与往返延迟(以秒为单位)的乘积,也就是带宽与延迟的乘积。该值应该根据计算机预计接收到的TCP数据量进行设置。

Window Scaling
在带宽与延迟的乘积值很高的连接上(例如,卫星连接),可能需要将窗口的大小增加到64K以上。为了提高窗口大小,需要按照RFC1323中的规定,设置如下注册表条目,以启用TCP选项: HKEY_LOCAL_MACHINE\System\CurrentControlSet\
Services\Tcpip\Parameters\Tcp1323Opts (REG_DWORD)

为了使用大于65,535的窗口尺寸,该注册表条目应该被设置为1。在修改了该值之后,便可以将用来控制TCPWindowSize的注册表条目设置为大于64K的值(最大1GB)。

MaxHashTableSize
该值决定了保存TCP连接状态的散列表的大小。默认值为128乘以系统中处理器数量的平方。如果预计系统需要处理大量的并发连接,可以将如下注册表条目设置为一个较高的数值,以提高散列表的性能:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\
Services\Tcpip \Parameters\MaxHashTableSize (REG_DWORD)

最大值为 0x10000(65,536)。我们建议您在将要处理大量连接负载的大型服务器上将此值设置为最大值。需要记住的是:该表使用了不分页的池,所以,如果服务器没有许多不分页池可用,或者服务器不需要处理大量连接负载,那么请不要将本参数设置为一个太高的数值。

NumTcbTablePartitions
默认情况下,存放TCP连接状态的表拥有的分区数量等于处理器数目的平方。在大多数情况下,该设置是恰当的,而且会减少表的争用现象。但是,对于处理器数目大于16的服务器,默认值显得过于高了,并可能会因此占用太多的CPU资源。在这种情况下,请将以下注册表条目设置为一个小于处理器数目平方的数值:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\
Services\Tcpip\Parameters\
NumTcbTablePartitions (REG_DWORD)

MaxUserPort
当计算机上存在一个活动连接的时候,就会使用到端口。在给定了可用的用户模式端口(每个IP地址有5000个)的默认值和TCP超时等待要求之后,可能必须在系统中提供更多的端口以供使用。可以将如下注册表条目的值最大设置为 0xfffe(65534):

HKEY_LOCAL_MACHINE\System\CurrentControlSet\
Services\Tcpip \Parameters\MaxUserPort


 

存储系统的性能调整
存储体系结构的驱动程序堆栈包含许多组件,如图2所示。本节将讨论存储负载的调整方法。




图 2 存储驱动程序堆栈

选择存储系统
在选择存储系统时,最重要的考虑事项是:

· 为当前和未来的存储需要提供必要的存储空间、带宽和延迟特性。

· 选择HW RAID 类型的系统和备份过程,以便获得良好的性能表现和数据恢复能力。

WHQL 认证
选择通过了WHQL认证的存储适配器。

减少待存储数据的数量
如果希望减少在新的文件服务器上保存的数据数量,需要考虑以下问题:

· 当前在文件服务器上保存的数据量,这些文件服务器将要被合并到新的服务器中。

· 如果文件服务器将成为一个复制成员,存储在新的文件服务器上的数据中将有多少会参加复制。

· 未来需要在文件服务器上保存的数据量。

一般的指导原则是:针对超过目前增长速度的更快的未来增长进行规划。调查组织是否打算雇佣大量人员,或者组织中的各个部门是否计划实施一些需要超大存储容量的项目等等。

此外,还必须将操作系统文件、应用程序、RAID冗余、日志文件以及其他因素考虑在内。表2描述了影响文件服务器容量的部分因素。

表 2. 影响文件服务器性能的因素

因素
需要的存储容量

操作系统文件
至少1.5 GB。为了为可选组件、未来安装的服务包以及其他项目预留足够的空间,还应该为操作系统卷再额外规划3 GB到5 GB的空间。

分页文件
情况下,其大小默认为内存容量的1.5 倍。

内存转储
根据选择的内存转储文件选项,需要的磁盘空间可能等于物理内存的数量再加上1MB。

应用程序
根据应用程序的具体情况而有所变化,包括防病毒、备份、磁盘配额软件、数据库应用以及可选组件(例如,恢复控制台、Services for Unix和Services for NetWare)等。

日志文件
根据创建日志文件的应用程序而有所变化。某些应用程序允许用户设置日志文件的最大尺寸。必须确保有足够的剩余空间来容纳日志文件。

RAID 解决方案
视具体情况而有所变化;请参阅后文中的 选择RAID 级别 了解更多信息。

影子副本
默认情况下,使用10%的卷空间,但是我们建议用户为其使用更多空间。


 

存储阵列的选择
在选择存储阵列和适配器的时候需要考虑许多事项。在选择存储阵列类型的时候,可以考虑以下选项:

表3. 选择存储阵列时的选项

选项
描述

光纤通道或SCSI
· 光纤通道允许用户使用长的玻璃或铜制电缆将存储阵列连接到系统,从而提供高带宽。

· SCSI 提供了非常高的带宽,但是电缆长度有限。

HW RAID 能力
存储控制器具有 HW RAID 能力十分重要。表4介绍了RAID 0、RAID 1和RAID 5级别。

最大存储容量
· 总的存储区域。

· 访问存储系统时的带宽由阵列中的物理磁盘数量、控制器的速度以及磁盘类型(例如,SCSI或光纤通道)、HW RAID、以及将存储阵列连接到系统的适配器共同决定。


 

HW RAID 的级别
大多数存储阵列都具有部分的HW RAID功能,并包括如下RAID选项。

表4. HW RAID 选项

选项
描述

RAID 0
RAID 0 表现为一个逻辑磁盘,由一组物理磁盘组成,并以带区方式访问磁盘。

· 整体来看,这种方式是速度最快的HW RAID配置方式。

· 这是一种最为廉价的RAID配置方式,因为无需复制数据。

· 和RAID 0 和 RAID 5 不同,RAID 0 不提供额外的数据恢复机制。

RAID 1
RAID 1 表现为一个逻辑磁盘,它与另一个磁盘互为镜像。

· RAID 1的写操作的速度慢于RAID 0,因为需要向两块或两块以上的物理磁盘写入数据,而且它的写操作具有最长的延迟时间。

· 在某些情况下,RAID 1读取数据的速度要快于RAID 0,因为它可以从最闲的一块物理磁盘中读取数据。

· 从物理磁盘方面来看,RAID 1是最为昂贵的配置方式,因为数据被完整地保存成两份或者更多的副本。

· 在物理磁盘发生故障之后所需的恢复时间方面,RAID 1的速度最快,因为第二块物理磁盘可以立即投入使用。可以在安装新的镜像磁盘的同时,允许用户访问所有数据。

RAID 5
RAID 5 表现为一个逻辑磁盘,它将奇偶校验信息写入到另一块磁盘中,如图3所示。

· RAID 5 使用独立的数据磁盘,并且具有分布式的奇偶校验块。

· RAID 5 的速度慢于RAID 0,因为每一个逻辑磁盘的写I/O都会将数据被写入到多块磁盘。但是,RAID 5提供了RAID 0 所没有的数据恢复功能,因为可以根据奇偶校验来重新构造数据。

· 在物理磁盘发生故障之后,RAID 5 需要花费额外的时间(和RAID 1相比)进行恢复,因为它需要利用保存在其他磁盘上的奇偶校验信息来重新构造磁盘上的数据。

· 因为不需要在磁盘上保存数据的完整副本,RAID 5的成本低于RAID 1。

其他
其他的RAID组合方式包括RAID 0+1、Raid 10 以及 Raid 50。


 

下图描绘了RAID 5 的配置方式。



图 3  RAID5 概述

选择RAID 级别
选择每一个RAID 级别时都需要全面考虑如下因素:

· 成本

· 性能

· 可用性和可靠性

您可以评估各种数据类型的读写负载,然后确定为了实现组织的性能表现和可用性(可靠性)目标所需耗费的资金,最后为文件服务器选择最佳的RAID级别。表5介绍了4种常见的RAID级别、它们的相对成本、性能表现、可用性和可靠性以及建议使用的场合。

表5. RAID 考虑因素

 
RAID-0

带区
RAID-1

镜像
RAID-5

带奇偶校验的带区
RAID-0+1

带区镜像

最小磁盘数量
2
2
3
4

可用的存储容量
100%
50%
N-1/N

此处的 N 为磁盘的数目
50%

容错性
无。其中一块磁盘的故障会丢失卷中的所有数据。
可以允许损失多块磁盘,只要有一对镜像磁盘没有损失即可。
可以容忍其中一块磁盘发生故障。
可以允许损失多块磁盘,只要还有一对镜像磁盘没有损失即可。根据阵列中镜像磁盘的对数而有所变化 1。

读性能
由于改善了并发性,一般会得到提高
良好的读性能
由于改善了并发性,一般会得到提高
由于改善了并发性,并且每个请求可以有两个来源,从而提高了性能。

写性能
由于改善了并发性,一般会得到提高
比JBOD 差(对于大多数负载,在20% 和 40% 之间)
很差,除非执行完整的带区写入操作(大型请求),比JBOD低大约25%左右(4:1 请求)。
可能提高,也可能降低,具体情况视请求的大小、热点(静态或动态)等因素而定。

最佳用途
只用于存储临时数据
操作系统日志文件
· 操作系统

· 用户和共享数据

· 应用程序文件
· 操作系统

· 用户和共享数据

· 应用程序文件

· 日志文件


1如果某块磁盘发生故障,在替换磁盘之前如果其镜像伙伴也发生故障,数据将会丢失。但是,任何其他成员磁盘的故障并不会导致数据丢失。

 

如果您使用了两块以上的磁盘,RAID 0+1永远都是比RAID 1更好的解决方案。

在确定应该在RAID 0、RAID 5和RAID 0+1虚拟磁盘中包括的磁盘数量的时候,应该考虑以下信息:

· 随着添加更多的磁盘而获得的性能提升。

· 可靠性,两块磁盘的平均故障时间(MTTF),将随着在RAID 5或RAID 0中添加磁盘而不断降低。

· 随着添加更多磁盘,可用的存储容量将增加,但是成本也会随之一同上升。

· 带区单元的大小。软件解决方案将其固定在64 KB。硬件解决方案则从4KB到1MB不等。理想的带区单元的大小可以在不中断请求的情况下最大限度改善磁盘操作(因为多块磁盘可以服务于同一个请求)。例如:

· JBOD上的一个顺序请求流(大型)在一个时间只会导致一块磁盘处于繁忙状态。为了让所有磁盘都处于繁忙状态,带区单元需要被设为1/N(此处的 N 等于请求的大小)。

· 对于N个小型的随机请求流,如果N大于磁盘的数目,而且没有热点,那么带区集将不会提高系统的性能。但是,如果存在热点,带区单元的大小就需要精心设置,以便将请求被分割的现象降至最少,同时最大限度地避免热点完全落入一个或两个带区单元。您可能会将单元的大小设置为请求大小的低倍数,例如5倍或10倍,尤其是当请求大小位于某个容量界限时(例如,4KB或者8KB)。

· 当流的数量少于磁盘的数量时,需要对流进行分割,以便所有磁盘都保持繁忙状态。根据上面的两个例子,例如,如果您有10块磁盘和5个流,那么需要对半分割每个请求(将带区单元的大小设置为请求大小的一半)。

确定卷的布局
任何时候,都应该尽可能地将不同类型的数据分别放在不同的卷上。例如,为操作系统和分页文件使用一个卷,为共享的用户数据、应用程序和日志文件使用一个或多个卷

将不同类型的数据放在不同虚拟磁盘的不同卷中。使用不同的虚拟磁盘对于那些会产生大量数据写入负载的数据类型(例如日志文件)来说显得尤其重要,因为单个磁盘集(包含虚拟磁盘)可以专门用来处理由于日志文件的更新而产生的磁盘I/O。将分页文件放在单独的虚拟磁盘上可以小幅度地提高系统性能,但是这种性能提升一般不值得为其付出额外的成本。

为了在最大限度降低成本的同时提高性能,将位于同一个虚拟磁盘上的一个或多个卷中的不同数据类型合并到一起通常是一种有益的做法。一个常见的方法就是:将操作系统和分页文件放在同一个虚拟磁盘上,而将用户数据、应用程序以及日志文件放在剩余虚拟磁盘的一个或多个卷上。

中断调解
某些存储适配器能够减慢向主机处理器发出中断的频率,这些中断表明发生(或)完成了某个磁盘操作。减缓中断频率通常会降低CPU的负载,但是,除非中断调解能够以智能化的方式执行;否则CPU性能的提高将以延迟时间的增加作为代价。

表6. 中断调解选项

设备
描述

64位功能
支持64位的适配器可以在大容量内存地址(大于4GB)上执行DMA操作。

铜缆和光纤(玻璃)适配器
使用铜缆的适配器和使用光纤的类似产品一般具有相同的性能表现,而且铜缆和光纤都可以用在某些光纤通道适配器上。使用铜缆和光纤的适配器应该说各有所长,分别有各自适用的环境。

双端口或4端口SCSI适配器
某些SCSI适配器在一块适配器卡上提供了2或4条SCSI总线。由于SCSI限制了能够连接到SCSI总线上的磁盘数量,这种做法通常是十分必要的。光纤通道的磁盘一般对连接到适配器的磁盘数量没有进行限制。


 

与存储有关的参数
您可以调整如下注册表参数,获得更高的吞吐量。

CountOperations
本参数允许您关闭系统和进程级别的I/O计数器。该计数器会影响磁盘和网络I/O请求的系统和磁盘计数。除了网络接口、IP和TCP计数器之外,物理和逻辑磁盘计数器不受本参数的影响。由于对进程和系统级别的I/O进行计数会产生可观的开销,而且系统仍然会分析物理、逻辑、网络接口、IP和TCP级别的I/O速率,因此在系统上使用此注册表参数关闭进程和系统计数器就非常有用。为了关闭进程和系统I/O计数器,需要在以下注册表条目中创建一个注册表值——以及I/O系统键(如果不存在)——并且将其值设置为0(REG_DWORD):

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Session Manager\I/O System\CountOperations.

为了使本设置生效,需要重新启动计算机。可以将CountOperations设置为1,或者删除CountOperations注册表条目,以重新开启进程和系统计数器。

NumberOfRequests
本参数允许您指定为某块给定适配器创建的SRB的数量。它能够提高性能,并且让Windows向逻辑磁盘发出更多的磁盘请求,这对于拥有并发能力的HW RAID 适配器来说尤其有用,因为每一个逻辑磁盘都由多块物理磁盘组成。但是,默认设置对于许多高速的HW RAID磁盘阵列来说通常不是最佳的设置。 可以将NumberOfRequests设置为32到96(十进制)之间的一个数值,改善磁盘阵列的整体性能。可以设置以下注册表条目: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\MINIPORT_ADAPTER\Parameters
\DeviceN\NumberOfRequests (REG_DWORD)

用具体的适配器名称替换miniport_adapter。为每个设备建立一个条目,并且在每个条目中用Device1、Device2…替换 DeviceN ,具体情况视添加的设备数量而定。为了让设置生效,需要重新启动计算机。例如,如果两块Emulex LP9000 微型端口适配器的微型端口驱动程序名称为lp6nds35,可以创建如下注册表条目,并将它的值设置为96:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\lp6nds35\Parameters\Device0\NumberOfRequests

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\lp6nds35\Parameters\Device1\NumberOfRequests

DontVerifyRandomDrivers
本参数会阻止驱动程序验证程序处于调试的目的随机校验驱动程序。为了禁用驱动程序校验程序,可以将以下注册表条目的值设为1(REG_DWORD):

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Session Manager\Memory Management\DontVerifyRandomDrivers.

IIS 6.0 性能调整
选择正确的高性能硬件
选择能够满足预期Web负载(包括平均负载、峰值负载、容量、成长规划以及响应时间)的正确硬件十分重要。硬件瓶颈会让软件调整带来的性能提升大打折扣。在选择硬件时,请考虑表7所列出的各个因素:

表7. 为IIS 6.0选择硬件时的考虑事项

因素
考虑事项

处理器的数目、类型和速度
· 脚本(ASP或 ASP.NET)以及加密(SSL)都是十分耗用CPU资源的工作。此外,并发的客户端负载也会加重CPU的负担。在为系统选择处理器的速度和数量时,应该考虑到这些因素。

· 大容量的 L2 处理器缓存能够提供更出色的性能。

· 两颗CPU的综合性能通常无法与单颗具有双倍速度(相对于上述两颗速度较慢的 CPU 而言)的 CPU 相媲美。

物理内存(RAM)的数量
在添加更多的站点、内容脚本(特别是ASP.NET脚本)和应用程序池(或者工作进程)时,添加内存有助于提升系统的性能。

网络适配器的数目、类型和速度
网络适配器不应该成为瓶颈。型号较新的网卡可以卸载某些服务器功能,从而提升性能。更多细节信息,请参阅前文中的网络性能调整。

磁盘控制器的类型,物理磁盘的数量和容量
· IIS 能够将经常访问的文件缓存在内存中。但是,不经常访问的文件(“冷门”文件)必须在需要时从磁盘上读取,需要经常访问“冷门”文件的大型站点需要拥有良好的磁盘性能(连接到大量磁盘的RAID控制器)。

· IIS 日志文件的大小以及预计的增长情况都应该纳入考虑范围之内。

IIS可能依靠的其他服务器
· 速度缓慢的SQL Server 可能会制约连接到其上的IIS服务器的响应率,即使IIS 服务器拥有优秀的硬件组件。

· 如果将IIS服务器和SQL Server(或者任何其他CPU密集型组件)放在同一台服务器上,会限制每个组件能够使用的资源,并且影响系统的整体性能。


 

操作系统最佳实践
· 如果可能,以全新方式安装操作系统。升级可能会留下过期、不想要或者不是最优的注册表设置,以及先前安装的服务和应用程序,如果这些服务和应用程序会自动启动,那么将占用宝贵的资源。如果安装了另一个操作系统并且需要保留该系统,那么应该在不同的分区安装新的操作系统,否则新安装的系统将覆盖Program Files\Common Files下的设置。

· 为了降低磁盘访问冲突,应该将系统分页文件、操作系统、Web数据、ASP模板缓存以及IIS日志尽可能放在不同的物理磁盘上。

· 避免安装不必要的服务和应用程序。

IIS 6.0 优化
IIS 6.0 应用了新的进程模型。内核模式的HTTP侦听程序(Http.sys)接收并发送HTTP请求(甚至可以使用它的响应缓存来满足请求)。工作进程注册URL子空间,Http.sys将请求发送到相应的进程(如果使用应用程序池,则发送到进程集合)。

图 4 展示了IIS 5.0和IIS 6.0进程模型之间的差异。IIS 5.0使用WinSock在端口80接受连接。请求由 inetinfo 进程负责接收,然后或者在进程内执行请求,或者将它交给dllhost 进程在进程外进行处理(为了达到隔离的目的)。响应则由 inetinfo 进程发送回去。

 



图 4  IIS 5.0 和 IIS 6.0 的进程模型

IIS 6.0 进程依赖于内核模式的Web驱动程序Http.sys。在新的模型中,Http.sys负责管理连接和处理请求。请求可能通过Http.sys缓存得到满足,也可能被交给一个工作进程以便得到进一步处理(见图5)。可以配置多个工作进程,从而以较低开销实现了隔离。

Http.sys包括了一个响应缓存。当请求与响应缓存中的某个条目相匹配的时候,Http.sys直接从内核模式中发送缓存响应。图5展示了请求通过Http.sys得到处理的情况(请求也可能向上交给某个工作进程进行处理)。



图 5  IIS 6.0中的请求处理

由于Web服务器既包括内核模式的组件,也包括用户模式的组件,必须对二者同时进行调整才能获得最佳性能。因此,针对特定负载的IIS 6.0调整工作需要对如下内容进行配置:

· Http.sys(内核模式驱动程序)以及相关的内核模式缓存。

· 工作进程和用户模式IIS,包括应用程序池配置。

此外,我们还将在后文中讨论会对性能造成影响的其他参数。

内核模式的调整
与性能有关的Http.sys设置可以划分为两类:缓存管理以及连接和请求管理。所有的注册表设置都保存在以下条目中:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Http\Parameters

如果HTTP服务正在运行,必须首先停止服务,然后重新启动计算机,以便让设置生效。

缓存管理设置
Http.sys具有的优点之一便是内核模式缓存。如果响应位于内核缓存中,那么可能可以完全通过内核模式来满足某个HTTP请求,这显然可以极大降低CPU处理请求的开销。但是,IIS 6.0的内核模式缓存是一种基于物理内存的缓存,每个条目都需要占用一定的内存空间。

缓存中的条目只有在被使用的时候才能提供益处。但是,条目在任何时候都会占用物理内存,不论它是否被使用。所以,需要对缓存某个项目带来的益处(能够直接从缓存中满足请求)以及它在整个生命期中的开销(需要占用物理内存)进行评估,并且考虑可用资源(CPU、物理内存)和工作负载的情况。Http.sys 试图仅在缓存中保存有用(经常被访问)的项目,但是,如果针对特定工作负载来调整Http.sys缓存,Web服务器的性能还可以获得一定程度的提高。

以下是一些有用的Http.sys内核模式缓存设置:

· UriEnableCache. 默认值:1。设为非零值可以启用内核模式响应和分段缓存。对于大多数工作负载,缓存都应该保持启用。如果希望获得超低响应和较低的缓存利用率,那么请考虑禁用缓存。

· UriMaxCacheMegabyteCount. 默认值:0。设为非零值可以指定内核缓存可以使用的最大内存数量。默认值为0,允许系统自动调节缓存能够使用的内存数量。注意:只能设置可以使用的最大内存数量,而且系统可能不允许缓存增长到指定的大小。

· UriMaxUriBytes. 默认值:262144 字节(256 KB)。本参数设定了内核缓存中每个条目的最大长度。大于这个长度的响应或分段都不会被缓存。如果有足够的资金,可以考虑增加此参数的值。如果资金有限,而且大型的条目会挤掉较小的条目,那么可以将本参数设为更小的值。

· UriScavengerPeriod. 默认值:120秒。一个“清道夫”程序会定期扫描Http.sys缓存,在两次扫描期间没有被访问过的条目将被删除。可以将扫描周期设置为一个较高的值,以减少扫描次数。但是,如果访问频率低的老条目仍然保留在缓存中,缓存占用的内存将不断增加。如果将此期限设置得过低,扫描频率会过于频繁,而且可能导致缓存的过度清洗和扰动。

请求和连接管理设置
此外,Http.sys管理入站HTTP/HTTPS 连接,并且是在这些连接上处理请求的第一个层。它使用内部数据结构保存有关连接和请求的信息。虽然这样的数据结构可以按需创建(或释放),但如果在look-aside里表中保存部分数据结构留作备用,则可以实现更高的 CPU 效率。保存这样的储备有助于Http.sys利用更少的CPU资源来处理负载波动。注意:负载波动不一定由外部的负载波动而引起。一些旨在改善批处理或者中断调解的内部优化措施也可能导致负载波动和起伏。

储备有助于减少CPU的使用率和缩短延迟时间,同时能够增加Web服务器的处理能力,但是也会增加内存的使用率。在调整Http.sys的请求和连接管理行为的时候,需要牢记的因素便是:可用的服务器资源,性能目标以及工作负载的特性。您可以使用以下请求和连接管理设置:

· MaxConnections。 本设置用来控制Http.sys所允许的并发连接的数量。每一个连接都会耗用非分页池(一种宝贵和有限的资源)。默认值的设置相当保守,以限制连接占用的非分页池数量。对于配备了充足内存的专用Web服务器,如果预计会产生大量的并发连接,可以将此值设置得更高一些。此值设置得越大,占用的非分页池就越多,所以要务必小心,应该使用一个与系统配置相适应的正确数值。

· IdleConnectionsHighMark、IdleConnectionsLowMark和IdleListTrimmerPeriod. 这些值用来控制对非并行使用的连接结构的处理:在某个时间必须提供多少可用的连接(用于处理连接负载的波动)、释放列表的上下界限、以及连接结构剪切和补充的频率等。

· RequestBufferLookasideDepth 和 InternalRequestLookasideDepth 这些值控制与缓冲区管理有关的数据结构的处理工作,以及应该完成多少储备以应付负载波动情况。

用户模式设置
IIS 注册表设置
以下注册表设置可以在下面的条目下找到:

HKLM\System\CurrentControlSet\Services\Inetinfo\Parameters\

· MaxCachedFileSize(REG_DWORD),以字节为单位。决定了能够被缓存的文件大小(默认为256 KB)。实际值根据数据表中最大文件的数量和大小以及可用的RAM数量而定。对频繁访问的大型文件进行缓存可以降低CPU使用率,减少磁盘访问以及相关的延迟时间。

· MemCacheSize(REG_DWORD),以MB为单位。将IIS用户模式缓存限制为指定的大小(默认设置为根据可用内存的数量由IIS调整缓存的大小)。根据“热门”文件集合(频繁访问文件的集合)的大小以及RAM数量或者IIS进程地址空间(正常情况下应该在2GB以下),需要认真选择本参数的值。

· DisableMemoryCache(REG_DWORD)。如果设置为1(默认为0),则禁用用户模式的IIS缓存。在缓存命中率非常小的时候,可以完全禁用缓存,以避免与缓存代码路径有关的开销。

· MaxPoolThreads(REG_DWORD)。设置每个处理器能创建的池线程的最大数量(默认为4,范围不限。)每一个池线程都观察网络请求,然后处理它们。MaxPoolThreads 计数没有包括当前处理ISAPI应用程序的线程。如果CPU的平均使用率没有处于最佳状态,应该增加本参数的值,因为现有的所有线程都为繁忙状态,没有用于处理新请求的可用线程。

· PoolThreadLimit(REG_DWORD)。设置系统能创建的池线程的最大数量(默认值为处理器数量的4倍,范围不限)。PoolThreadLimit 必须大于或等于MaxPoolThreads。正常情况下,PoolThreadLimit = MaxPoolThreads ´ 处理器数量。仅仅设置其中的一个参数是不够的。如果同时指定了MaxPoolThreads 和PoolThreadLimit参数,则可以施加更严格的限制。

· ObjectCacheTTL(REG_DWORD),以秒为单位。控制没有被访问过的对象在IIS用户模式缓存中停留的时间长度(默认值为30秒,如设置为0xFFFFFFFF则禁用对象缓存清道夫线程)。如果系统配备了足够的内存,而且提交的内容不经常变化,那么可以增加本参数的值。如果系统内存不足而且用户模式缓存的大小在不断增长,则应该降低本参数。请参阅本节下面的 ActivityPeriod 部分。

· ActivityPeriod(REG_DWORD),以秒为单位。只有当文件在活动期限(默认为10秒钟,如果设为0则禁用本选项)内被重复命中,才允许缓存文件。本参数会降低由于缓存不经常访问的文件而引起的缓存开销,如果缓存内容变化不大,而且没有足够的可用内存,那么可以增加活动期限的值;或者,如果缓存上存在大量请求负载,可以降低活动期限的值。

· DataSetCacheSize(REG_DWORD)默认值为50。设置配置数据库数据集缓存中虚拟目录条目的最大数量。如果已经安装的虚拟目录的数量超过了默认值,可以增加本参数的值。在提交静态内容的时候,一个容量不足的数据集缓存会增加延迟时间(更低的吞吐量和更低的CPU使用率)。

IIS Metabase
以下设置可以在 W3SVC/ 下找到。

· AspMaxDiskTemplateCacheFiles。启用ASP脚本模板的磁盘缓存。ASP模板的编译是一件非常耗费处理器资源的工作。内存大小限制了可以缓存在内存中的模板的数量。从磁盘上的模板缓存中取回编译后的模板所需的开销比编译ASP内存缓存中没有的模板要小。请参见下文中的 AspScriptEngineCacheMax 一节。

· AspDiskTemplateCacheDirectory。如果可能,可以将其设置为不频繁使用的磁盘(例如,没有和操作系统、分页文件、IIS日志或者其他频繁访问的内容共享的磁盘)。默认目录是 “%windir%\system32\inetsrv\Template Disk cache\ASP Compiled Templates”。

· AspScriptEngineCacheMax。将其设置为内存容量所允许的最大的脚本引擎数(默认为125)。

· AspScriptFileCacheSize。设置为内存容量所允许的最大的ASP模板数量(默认250)。请参阅前文中的AspMaxDiskTemplateCacheFiles一节。

· AspExecuteInMTA。如果在交付某些ASP内容时希望对出现的错误或故障进行检测,请将本参数设置为1(启用)。例如,如果需要托管多个站点,而且每个站点都运行在它自己的工作进程之下,那么便可以启用本参数。错误一般可以在事件查看器中的COM+部分中看到。本设置启用了ASP中的多线程单元模型(默认值为0,表示禁用)。

· AspProcessorThreadMax。如果当前设置(默认为25)不足以满足负载的需求(可能会导致某些请求出现错误),可以增加本参数的值。

· CentralBinaryLoggingEnabled。通过将本参数设置为TRUE,可以启用集中的二进制日志记录。二进制IIS日志记录可以减少对CPU的使用,降低占用的磁盘空间以及减少磁盘I/O操作。集中的二进制日志可以被导向一个二进制文件,而无论托管站点的数量如何。分析二进制格式的日志需要一个后处理工具。

IIS 工作进程选项(IIS Admin UI、应用程序池属性)
在没有管理员干预、服务重启或者计算机重启的情况下,IIS管理界面上的IIS工作进程回收选项为发生的紧急故障或事件提供了有效的解决办法。这样的情况包括内存泄漏,泄漏会增加内存负担,或者导致工作进程进入不响应或空闲状态。在正常情况下,可能不需要启用回收选项,所以可以关闭它(或者对系统进行配置,以很低的频率执行回收工作)。在下面的章节中,黑体字名称是per-app-pool(应用程序池)变量。在使用脚本设置这些变量的时候,可以使用路径“ /LM/W3SVC/AppPools/n”,在这里n 代表应用程序池索引。

有三个选项,如下表所示:

· 回收选项。可以在“回收”选项卡中找到。

· 性能选项。 可以在“性能”选项卡中找到。

· 工作进程健康监视选项。可以在“健康”选项卡中找到。

表 8. 回收选项

参数
描述

PeriodicRestartRequests,DWORD,选项默认为禁用,默认值为35000
按照时间定期回收

PeriodicRestartRequests,DWORD,选项默认为禁用,默认值为35000
根据请求的(累计)数量定期回收

PeriodicRestartSchedule, MULTISZ,默认为禁用,默认为空字符串值
在指定的时间进行回收

·  PeriodicRestartMemory, DWORD,默认值为512 MB

· PeriodicRestartPrivateMemory, DWORD,默认值为192 MB

 
如果达到了以下两个条件之一,基于内存的回收(默认为禁用)将允许回收工作进程:

· 虚拟内存的最大容量

· 已使用内存的最大容量

如果面临不断增长的内存容量压力,可以其中一个参数或全部参数,基于严格的内存容量标准,频繁回收工作进程,以缓解内存压力。


 

表 9. 性能选项

参数
描述

IdleTimeout,DWORD,以分钟为单位,默认值为20
在进程的空闲时间超过指定的时间时,关闭工作进程。这样可以节省有限的内存资源,但是如果CPU负载繁重,需要频繁启动新的工作进程,则不建议采取这种做法,因为创建进程会带来一定的开销。

AppPoolQueueLength,DWORD,默认值为2000
限制每个应用程序池(App-Pool)的内核请求队列的长度。请求会消耗分页池,在对分页池具有大量需求的情况下,应该降低本参数的值。如果超过指定的长度,会导致服务器拒绝请求,并产生编号为503的非自定义错误。

CpuAccounting,BOOLEAN,默认为禁用(0),启用为1
监视CPU的使用情况。您可以按照百分比设置CPU的最大使用率(CpuLimit,DWORD,默认值为0)和监视工作的刷新周期(CpuResetInterval,DWORD,默认值为0,以分钟计)。如果达到了CPU的使用率限制,或者不采取任何操作(但是会在事件日志中写入一个事件),或者关闭工作进程(CPUAction,DWORD,默认值为0,表示“不采取任何操作”;最大值为1,表示“关闭工作进程”)。

MaxProcesses,默认:使用1个工作进程处理所有请求
可以在操作的Web Garden(Web园)模式中控制工作进程的总数量。在Web Garden模式中,几个工作进程负责处理单个应用程序池下的请求负载。没有通过不同的应用程序池为Web站点预先分配任何工作进程。在某些情况下,一个工作进程无法满足负载的处理需要(可以通过糟糕的CPU使用率和漫长的响应时间看出这一点),增加工作进程的数量则有助于改善系统的吞吐量和CPU使用率。在托管了多个站点的情况下,可以考虑采用Web Garden模式。此外,在其中一个进程突然崩溃的情况下,采用多个工作进程还提供了更多可靠性,而且几乎不会出现所有服务均中断的情况。与预先分配应用程序池相比,Web Garden模式更容易设置和控制。


 

表10. 健康选项

参数
描述

PingingEnabled,BOOLEAN, 默认值为1

PingInterval,DWORD,默认值为30秒
以固定时间间隔(PingInterval)Ping 工作进程(PingingEnabled)。如果没有响应,则认为工作进程发生错误,IIS将试图终止进程并产生一个新的进程。

RapidFailProtection,BOOLEAN,默认

RapidFailProtectionMaxCrashes, DWORD,默认为5个故障

RapidFailProtectionInterval, DWORD,默认为5分钟
设置在给定的时间段内(RapidFailProtectionInterval)允许产生的最大故障数量(RapidFailProtectionMaxCrashes),对不断快速产生故障的情况加以控制(RapidFailProtection)。如果到达了指定了故障率,应用程序池将被禁用,并且在事件日志中写入相关信息。

StartupTimeLimit,DWORD,默认为90秒
控制工作进程的启动时间,超过此时间,则认为其发生了故障。

ShutdownTimeLimit,DWORD,默认为90秒
控制工作进程的关闭时间,超过了此时间,则认为其处于不响应状态。


 

安全套接字层的调整参数
安全套接字层(Secure Sockets Layer,SSL)的使用会加重CPU的负担。SSL中最为耗费资源的部分为建立会话所需的开销(包括一次完整的握手),然后是重新连接的开销和加密/解密的开销。为了获得更好的SSL性能,请执行如下操作:

· 启用SSL会话的“保持活动”(keep-alive)特性。这样可以消除建立会话所需的开销。

· 如果可能,重新使用会话(特别是对于那些没有“保持活动”的流量)。

· 注意:密钥越长,安全性就越高,但是需要的CPU时间就越多。

· 注意:并不是所有的页面组件都需要加密。但是,混合的纯文本HTTP和HTTPS可能会导致客户端浏览器弹出一个警告,告知并不是所有的页面内容都得到了保护。

ISAPI
对于ISAPI,没有任何具体的调整参数。如果编写一个私有的ISAPI扩展,请确保代码在执行和资源使用方面具有高效率。请参阅后文中的 影响IIS性能的其他问题。

托管代码调整参数
· 确信已经预先编译了所有的脚本。可以在每个目录中调用一个.NET脚本来完成这项工作。在编译完成之后,需要复位IIS。在修改了Machine.config、 Web.config或任何.aspx脚本之后需要重新编译。

· 如果不需要会话状态信息,请确信在每个页面中关闭了此项目。

· 当用户在隔离模式(每个站点一个应用程序池)下运行包含ASP.NET脚本的多个主机的时候,应该监视内存使用情况。请根据预计将要并发运行的应用程序池的数量,为IIS服务器配备足够的内存。考虑在存在多个隔离进程的地方使用多个应用程序域(app-domains)。

影响IIS性能的其他问题
· 安装没有缓存意识的过滤器。安装没有HTTP缓存意识的过滤器会导致IIS禁用全部缓存,从而造成性能急剧下降。老的ISAPI过滤器(在IIS 6.0之前编写的过滤器)可能会存在这个问题。可以使用HTTP缓存的过滤器在配置数据库中被标记为“具有缓存意识”的过滤器。

· CGI 请求。出于性能的考虑,我们不建议使用CGI应用程序处理请求。由于需要频繁创建(和删除)CGI进程,会产生大量的系统开销。更好的替代办法是使用ISAPI程序和ASP(或ASP.NET)脚本。这些方式都可以使用隔离。

NTFS 文件系统设置
HKLM\System\CurrentControlSet\Control\FileSystem\ 下的 NtfsDisableLastAccessUpdate (REG_DWORD)1。

通过禁止更新最后一次访问的文件或目录的日期和时间戳记,这个针对整个系统的开关参数会降低磁盘I/O负载和缩短延迟。默认情况下本键不存在,因此需要额外添加。如果操作包含数千个目录的大型数据集(或者大量主机),禁用更新的效果十分明显。如果只需要保留信息Web供Web管理使用,我们建议用户使用IIS日志代替它。

警告:某些应用程序(例如增量备份工具)需要使用这些更新信息,如果没有这些信息,它们将无法正常工作。

Tcpip.sys 的IIS性能设置
请参阅前文中的 网络性能调整。

IIS的网络适配器调整和绑定
· 确信所有网络适配器设置都为最佳状态。

· 将每一块网络适配器分别绑定到一颗CPU(具体方法取决于网络适配器的数量、CPU的数量以及每块网络适配器上的端口数量)。

请参阅前文中的网络性能调整。

文件服务器性能调整
一般考虑事项
为了满足预期的文件服务器负载,选择正确的硬件十分重要,在选择硬件时需要考虑平均负载、峰值负载、容量、成长规划以及响应时间。硬件瓶颈会使软件调整获得的性能提升大打折扣。

在选择硬件和设置操作系统时,需要考虑以下问题。

表11. 选择正确的硬件以提升性能

问题
建议

处理器的数量、类型和速度
· 大容量的 L2 处理器缓存能够提供更出色的性能。

· 两颗CPU的综合性能无法与单颗具有双倍速度(相对于上述两颗速度较慢的 CPU 而言)的 CPU 相媲美。

内存(RAM)的数量
如果计算机内存不足,而且需要立即添加更多内存,Windows Server 2003 使用硬盘空间模拟系统内存。这些内存被称作虚拟内存,也经常被称为分页文件。

· 尽力避免将分页文件与操作系统文件放在同一个驱动器上。

· 避免将分页文件放在容错驱动器上,例如镜像卷或者RAID-5卷。分页文件不需要容错,由于需要将数据写入到多个位置,某些容错系统的写入速度会因此变得非常慢。

· 不要将多个分页文件放在同一个物理硬盘驱动器的不同分区上。

网络适配器的数量、类型和速度
· 网络适配器不应该成为系统瓶颈。型号较新的网络适配器可以卸载某些服务器功能,从而提高系统性能。

· 确信所有网络适配器设置都是最优的。

· 将每块网络适配器分别绑定到一颗CPU(具体方法取决于网络适配器的数量、CPU的数量以及每块网络适配器上的端口数目)。

· 更多细节信息,请参阅前文中的网络性能调整。

磁盘控制器的类型、物理磁盘的数量以及它们的整体容量
· 文件服务器将频繁接收访问的文件放入缓存。但是,必须从磁盘上读取访问不频繁的文件。为了处理针对大批文件的大量请求所带来的庞大数据量,磁盘性能必须非常出色(连接大量磁盘的RAID控制器)。

· 将系统分页文件、操作系统以及数据尽可能放在不同的物理磁盘上。

· 确信分配单元大小与卷的大小相匹配。


 

服务器消息块服务器模型
服务器消息块(Server Message Block,SMB)模型包括两个实体:客户端和服务器。

客户端通过重定向程序(Rdbss.sys和SMB 小型重定向程序Mrxsmb.sys)为服务器上所保存的文件接收请求。它通过TCP/IP,使用SMB协议发送请求。

服务器通过TCP/IP协议,从客户端接收多个请求,然后将请求发送到本地文件系统(Ntfs.sys),由它负责访问存储堆栈。



图 6  客户机-服务器通信的SMB模型

文件服务器的常规调整参数
下列注册表调整参数会影响文件服务器的性能。

PagedPoolSize
HKLM\System\CurrentControlSet\Control\SessionManager\MemoryManagement\ (REG_DWORD)

文件缓存空间和分页池空间共享系统虚拟地址中的一个公共区域。限制分页池可以得到更大的系统缓存,从而能够缓存更多的内容,实现更快的文件服务性能。

NtfsDisable8dot3NameCreation
HKLM\System\CurrentControlSet\Control\FileSystem\ (REG_DWORD)

默认值为 0。该参数用于确定 NTFS 是否为长文件名以及包含来自扩展字符集的文件名生成符合 8.3(DOS)命名协定的短文件名。如果该注册表项的值为 0,那么文件潜在可以有两个名称:用户指定的名称和 NTFS 生成的短名称。若用户指定的名称符合 8.3 命名协定,NTFS 则不再生成短名称。

修改该值不会更改文件的内容,但可以避免对文件创建短名称属性,并能更改 NTFS 显示和管理文件的方式。

Disablelastaccess
HKLM\System\CurrentControlSet\Control\FileSystem\. (REG_DWORD)

默认不创建该注册表项。

如果您有一个 NTFS 卷包含大量文件夹或文件,而且有一个程序依次对它们进行访问,那么用于生成Last Access Time(最后一次访问时间)更新的 I/O 带宽会占用 I/O 总带宽的很大比例。如要提高对文件夹或文件的访问速度,您可以将 disablelastaccess 设置为禁止更新 Last Access Time(最后一次访问时间)。在您使用了该命令并重新启动计算机之后,Last Access Time 将不再得到更新。如果您创建一个新文件,Last Access Time 则与 File Creation Time(文件创建时间)保持一致。

NumTcbTablePartitions
HKLM\system\CurrentControlSet\Services\Tcpip\Parameters\. (REG_DWORD)

默认创建该键。

该参数控制 TCB 表的分区数量。可以对 TCB 表进行分区,减少对其的争用,从而提高多处理器系统的可伸缩性。

TcpAckFrequency
注意:TcpAckFrequency 只能应用于 Windows Server 2003。 TcpAckFrequency 的推荐设置介于 TcpWindowSize 的值的三分之一和二分之一之间。

对于千兆网卡:

HKLM\system\CurrentControlSet\Services\Tcpip\Parameters\Interfaces

对每个千兆网络适配器添加:

TcpAckFrequency (REG_DWORD) = 13(十进制)

注册表默认不包含该项。如果仅确认数据而不是针对所有的控制数据包,那么每 13 个数据包仅确认一次,而不是默认的两次。这样,在从客户端向服务器执行大量写入(上载)操作时,有助于降低网络堆栈(Network Stack)的数据包处理开销。

对于 FastEthernet 网卡:

HKLM\system\CurrentControlSet\Services\Tcpip\Parameters\Interfaces

对每个 FastEthernet 网络适配器添加:

TcpAckFrequency (REG_DWORD) = 5(十进制)

注册表默认不包含该项。如果仅确认数据而不是针对所有的控制数据包,那么每 5 个数据包仅确认一次,而不是默认的两次。这样,在从客户端向服务器执行大量写入(上载)操作时,有助于降低网络堆栈(Network Stack)的数据包处理开销。

中断关联
中断关联指在多处理器服务器上将中断操作从一个特定设备绑定到特定的处理器上。这将在所指定的处理器上强制运行 ISR 和 DPC 例行程序。由于网络连接和文件服务器话路均位于相同上网络适配器上,因此将中断操作从网络适配器绑定到处理器,可以在一组指定的处理器上处理传入的数据包(SMB 请求、数据),从而提高局部性和可伸缩性。您无法在单处理器计算机上配置中断关联。

中断关联筛选器(Interrupt-Affinity Filter,IntFiltr)工具允许您更改系统中 CPU 的中断关联。

使用该实用程序,您可以将任何设备的中断操作指向一个特定的处理器或一组处理器(避免总是对系统中所有的 CPU 发送中断请求)。注意:不同的设备可以有不同的中断关联设置。该实用程序可应用于任何运行 Windows Server 2003 的服务器,无论采用何种处理器或中断控制器。

客户端计算机的常规调整参数
DormantFileLimit 
HKLM\system\CurrentControlSet\Services\lanmanworkstation\parameters\ (REG_DWORD)

默认不创建该注册表键。(仅针对 Windows XP 客户端计算机。)

指定在应用程序关闭文件后可以通过共享打开的最大文件数。

ScavengerTimeLimit
HKLM\system\CurrentControlSet\Services\lanmanworkstation\parameters\ (REG_DWORD)

Windows XP client computers only.

重定向器在开始清除休眠文件句柄(当前无法被任何应用程序所用的已缓存的文件句柄)之前所等待的时间(秒)。

DisableByteRangeLockingOnReadOnlyFiles
HKLM\System\CurrentControlSet\Services\LanmanWorkStation\Parameters\ (REG_DWORD)

仅针对 Windows XP 客户端计算机。

一些分布式应用程序会在对各个客户端进行同步时锁定某个只读文件的部分内容,它们要求关闭所有只读文件的文件句柄缓存和折叠(collapsing)功能。如果不在系统上运行这类应用程序,并且在客户端计算机上启用了折叠功能,那么就可以设定该参数。

TcpAckFrequency
注意:TcpAckFrequency 只能应用于 Windows XP 客户端。TcpAckFrequency的推荐设置介于 TcpWindowSize 的值的三分之一和二分之一之间。

对于Gigabit网卡:

HKLM\system\CurrentControlSet\Services\Tcpip\Parameters\Interfaces

对Gigabit适配器添加:

TcpAckFrequency (REG_DWORD) = 13(十进制)

注册表默认不包含该项。

如果仅确认数据而不是针对所有的控制数据包,那么每 13 个数据包仅确认一次,而不是默认的两次。这样,在从客户端向服务器执行大量写入(上载)操作时,有助于降低网络堆栈(Network Stack)的数据包处理开销。

对于 FastEthernet 网卡:

HKLM\system\CurrentControlSet\Services\Tcpip\Parameters\Interfaces

对每个 FastEthernet 适配器添加:

TcpAckFrequency (REG_DWORD) = 5(十进制)

注册表默认不包含该项。如果仅确认数据而不是针对所有的控制数据包,那么每 5 个数据包仅确认一次,而不是默认的两次。这样,在从客户端向服务器执行大量写入(上载)操作时,有助于降低网络堆栈(Network Stack)的数据包处理开销 。

Active Directory的性能调整
大型 Active Directory® 环境只有少数几个特殊的调整要求。

对 Boot.ini 文件使用 /3GB 开关参数
在服务器计算机上,大容量内存有助于减少磁盘 I/O 活动。使用 /3GB 开关参数,可以为 x86 服务器提供更多用户模式虚拟空间,并且改善Active Directory 的缓存。

Windows 2000 包含两种设置:

· 运用 /3GB 开关参数,主 Active Directory 缓存的最大容量可达1024MB。

· 不运用/3GB开关参数,主 Active Directory 缓存的容量仅被限制为512MB。

对于 Windows Server 2003,Active Directory 缓存可更自由地增长,但是大小受虚拟地址空间的限制。

关闭签名和密封功能
运行附带Service Pack 1(SP1)的 Windows XP 或更高版本的客户端计算机以及运行 Windows Server 2003 的服务器具备签名和密封功能以实现更高的安全性,而且这些功能在默认情况下为启用状态。默认状态下,Windows 2000 客户端并未启用签名和密封功能,但是安装了Service Pack 3(SP3)的 Windows 2000 提供了一个选项来启用该功能。具有安全网络的生产环境不需要启用该设置。Windows Server 2003 操作系统家族提供了一个用于禁用签名和密封功能的选项。您可以在此找到该设置:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ldap\ ldapclientintegrity = REG_DWORD 0x0

针对 Web 工作负载执行基准测试(WebBench)
考虑使用以下原则对 Web 工作负载执行基准测试

· 将 IIS 服务器以及其它相关计算机从企业网络流量中隔离出来。

· 允许通过充足的预热时间获得稳定的状态。

· 同步客户端时钟和 IIS 服务器时钟以确保正确测试基于时间的请求。

· 为了实现最佳性能,在 IIS 的管理用户界面(Admin UI)中,关闭所有回收、性能和电源选项,除非您遇到紧急情况而这些选项能帮上忙。更多信息,新参见本文前面的“IIS 6.0性能调整”一节。

· 如果使用 SSL,则选择一个合理且一致的键容量。

WebBench 4.1 提供了测量 Web 服务器性能的方法。WebBench 使用客户端计算机模拟 Web 浏览器。但是,不同于真正的浏览器,客户端不显示服务器通过响应其请求所发送的文件。相反,当客户端接收到服务器的响应时,随即记录与该响应相关联的信息,接着马上向服务器发送另一个请求。

下面三个表格列出了高端和低端服务器设置以及客户端计算机调整参数。

表 12. 高端服务器设置

类型
设置

IIS 设置
·  注册表(位于:HKLM\System\CurrentControlSet/Services\Inetinfo\Parameters\)

· MaxCachedFileSize (REG_DWORD) 1048576

· IIS Metabase(位于:W3SVC/)

· 通过设定 CentralBinaryLoggingEnabled = TRUE,启用集中记录的二进制日志文件

· SSL 调整参数:键容量为 1024 字节。如要进行富有挑战性的基准测试,可对所有服务器使用相同的键容量。

Http.sys 设置
· 注册表(位于:HKLM\System\CurrentControlSet/Services\HTTP\Parameters\)

UriMaxUriBytes (REG_DWORD) 1048576 (最大的文件)。

NTFS 文件系统设置
· 注册表(位于:HKLM\System\CurrentControlSet\Control\FileSystem\)

NtfsDisableLastAccessUpdate (REG_DWORD) 1

针对 IIS 的 TCPIP.SYS 性能设置
· 注册表(位于:HKLM\System\CurrentControlSet\Services\tcpip\parameters\)

MaxHashTableSize (REG_DWORD) 0xffff

请参见本文前面的“网络性能调整”一节。

针对 IIS 的网络适配器调整与绑定
· 每个网络适配器均绑定一颗 CPU。

请参见本文前面的“网络性能调整”一节。


 

低端服务器设置的特点如下:

· 单处理器、单网络适配器。

· 有限的物理内存——至少 256 MB;通常为 512 MB 的 RAM。

· 需执行分页操作。

· 对于大批 ASP 文件和严重耗费内存的动态内容,建议不要使用该服务器设置。

表 13. 低端服务器设置

类型
设置

IIS 设置
· 注册表(位于:HKLM\System\CurrentControlSet/Services\Inetinfo\Parameters\)

MaxCachedFileSize (REG_DWORD) 1048576

MemCacheSize (REG_DWORD) 10

· IIS Metabase(位于:W3SVC/)

通过设定 CentralBinaryLoggingEnabled = TRUE,使用集中保存的二进制日志文件

Http.sys 设置
· 注册表(位于:HKLM\System\CurrentControlSet\Services\http\parameters\)

UriMaxUriBytes (REG_DWORD) 1048576

RequestBufferLookasideDepth (REG_DWORD) 256

InternalRequestLookasideDepth (REG_DWORD) 256

LargeMemMegabytes (REG_DWORD) 150

NTFS 文件系统设置
· 注册表(位于:HKLM\System\CurrentControlSet\Control\FileSystem\)

NtfsDisableLastAccessUpdate (REG_DWORD) 1


 

表 14. 客户端计算机调整参数

类型
设置

我的计算机性能设置
· 针对程序优化处理器调度

· 针对程序优化内存应用

针对 IIS 的 TCPIP.SYS 性能设置
· 注册表(位于:HKLM\System\CurrentControlSet\Services\tcpip\parameters\)

MaxUserPort (REG_DWORD) 0xfffe

MaxHashTableSize (REG_DWORD) 0xffff

TcpWindowSize (REG_DWORD) 65536(在配备 100 BaseT Ethernet 网络适配器的客户端上修改注册表)

请参见本文前面的“网络性能调整”一节。


 

针对文件服务器工作负载执行基准测试(NetBench)
NetBench 7.02 是 eTesting Labs 的基准测试程序,允许您测量文件服务器处理客户端网络文件请求的性能。NetBench 可以为您提供服务器 I/O 吞吐量的总得分、平均响应时间以及各台客户端计算机的单独得分。您可以使用这些测试分数衡量、分析和预测服务器处理客户端请求的能力。在各项测试间通常要对数据卷进行格式化,以便清空工作区,确保以全新状态开始测试工作。如要提高性能和伸缩性,建议把客户端数据分散在多个数据卷上。

Windows Server 2003面向 NetBench 的注册表调整参数


设置

HKLM\System\CurrentControlSet\Control\SessionManager\
MemoryManagement\
PagedPoolSize = 192000000(十进制)(默认为0)

HKLM\System\CurrentControlSet\Control\FileSystem\
NtfsDisable8dot3NameCreation = 1(默认为0)

添加:Disablelastaccess = 1

默认不创建该注册表键。

HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\
添加:NumTcbTablePartitions = 8

默认不创建该注册表键。

HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\
Interfaces\
对每个Gigabit网络适配器添加:TcpAckFrequency (REG_DWORD) = 13(十进制) 。

默认不创建该注册表键。对于 FastEthernet 适配器,将该参数为 5。


 

客户端计算机针对 NetBench 的注册表调整参数


设置

HKLM\System\CurrentControlSet\
Services\LanmanWorkStation\
Parameters\
DisableByteRangeLockingOnReadOnlyFiles = 1;
针对 Windows XP 客户端计算机

HKLM\system\CurrentControlSet\
Services\Tcpip\Parameters\
Interfaces\
对每个Gigabit网络适配器添加:
TcpAckFrequency = 13(十进制)。

默认为不创建该注册表键。对于 FastEthernet 适配器,将该参数设为 5。

HKLM\system\CurrentControlSet\
Services\lanmanworkstation\
parameters\
添加 DormantFileLimit = 100(十进制)。

默认不创建该注册表键;针对 Windows XP 客户端计算机。

HKLM\System\CurrentControlSet
\Services\lanmanworkstation\
parameters\
ScavengerTimeLimit = 100(十进制);针对 Windows XP 客户端计算机。


 

针对Active Directory工作负载执行基准测试(DirectoryMark)
下列调整对于执行DirectoryMark 工作负载基准测试很有帮助。最好从一台强大的客户机上执行对大型服务器的 DirectoryMark 测试。这样,操作人员可以启动大量线程,同时还能接收中央数据报告。该设置需要一块Gigabit网络适配器以及性能大致相当的客户机和服务器,同时服务器至少拥有 2 GB 的内存。

添加针对描述属性的索引(服务器)
使用架构编辑器添加一个针对描述属性的索引,后者用于DirectoryMark Addressing 和 Messaging Search Mixes。

关闭磁盘碎片自动整理程序
在服务器启动 15 分钟后,磁盘碎片自动整理程序(Auto Defragmenter)随即启动。该程序将运行一个小时,以后每12个小时重新启动一次。基准测试要求测试结果可重复,因此建议关闭磁盘碎片自动整理程序,以便避免对正在运行的基准测试造成任何可能的干扰。如果已启用磁盘碎片自动整理程序,那么可以在事件日志中查看磁盘碎片整理程序的运行情况。

下方注册表参数用于关闭磁盘碎片自动整理程序:

HKLM\SYSTEM\CurrentControlSet\Services\NTDS\Parameters\DSA Heuristics = REG_SZ 000001

在 TCP/IP 增加 MaxUserPorts 和 TcpWindowSize
频繁使用 LDAP 绑定需要广泛运用动态端口。在服务器和客户端计算机上,需要通过 TCP 保持这些端口开启几分钟,因此需要超出实际用量的可用 MaxUserPorts 端口。

可以调整下列注册表参数:

HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\MaxUserPort = REG_DWORD 0xfffe

HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\TcpWindowSize = REG_DWORD 0xffff

 

针对网络工作负载执行基准测试(Ttcp、Chariot)
针对 NTttcp 的调整
NTttcp 是一个面向 Windows 和基于 Winsock 的 ttcp 端口,用于协助测量网络驱动程序在不同网络拓扑结构和硬件设置上的性能和吞吐量。NTttcp 向用户提供一个多线程的异步性能基准测试程序,可用来测量在现有网络设置上可取得的数据传输率。

选项:

· 单一线程应该能够提供最佳吞吐量。

· 仅在出现许多个客户端时,需要多个线程。

· 发布充足的用户接收缓冲区(使用“-a”选项),减少 TCP 复制。

· 不应该发布过多的用户接收缓冲区,因为在您需要使用其它缓冲区前,首批已发布的缓冲区将返回给您。

· 最好是将每组线程绑定给一个处理器(“-m”选项中的第二个分隔参数)。

· 每个线程均创建一个连接(监听)不同端口的套接字。

表 15. 针对 NTttcp 发送器和接收器的示范语法

语法
详细说明

针对发送器的示范语法

NTttcps –m 1,0,10.1.2.3 –a 2
· 单线程

· 绑定于CPU 0

· 连接到 IP 地址为 10.1.2.3 的计算机

· 发布两个重叠的发送缓冲区

· 默认的缓冲区容量:64 KB

· 默认的缓冲量:20 KB

针对接收器的示范语法

NTttcpr –m 1,0,10.1.2.3 –a 6 –t 1000
· 单线程

· 绑定于CPU 0

· 连接到 IP 地址为 10.1.2.3 的计算机

· 发布两个重叠的发送缓冲区

· 默认的缓冲区容量:64 KB

· 默认的缓冲量:20 KB


 

网络适配器
确认您已启用了所有卸载特性。

TCP
只有带宽-延迟乘积较大时,才可以针对Gigabit Ethernet(64 KB)为 TcpWindowSize 设定高于默认值的数值。

例如,在局域网上使用 Intel MT Gigabit 网卡时,可以针对 NTttcp 保留所有网络适配器和 TCP 设置的默认值。

· Intel MT 网络适配器默认卸载 LSO 及校验和(同时针对接收和发送)。

· Intel MT 网络适配器自行管理其资源,不需要您更改任何网络适配器资源值。

· 未应用Coalesce Buffers(合并缓冲区),但默认的中断调解模式运转良好。

针对Chariot 的调整
Chariot 是 NetIQ 的一个网络工作负载生成器,通过向网络施加负载来帮助用户预测网络应用程序的性能。

Chariot 的 High_Performance_Throughput 脚本工作负载可用来模拟 NTttcp 工作负载。有关该工作负载的调整考虑事项与 NTttcp 相同。

相关链接
请访问下列资源,了解更多信息:

· Windows Server 2003网站上的性能与伸缩性资源:http://www.microsoft.com/windowsserver2003/evaluation/performance/default.mspx。

访问这些类型时,会返回以下信息:

HTTP 错误 404 - 文件或目录未找到。

原因分析:

IIS6.0取消了对某些MIME类型的支持,例如ISO,致使客户端下载出错。

解决方法:

在IIS中属性->HTTP头->MIME类型->新建。在随后的对话框中,扩展名填入.cert,MIME类型是application。

然后重启IIS。

组图:重庆今日上午发生恶性持枪抢劫事件

枪击现场


组图:重庆今日上午发生恶性持枪抢劫事件

法医对受害者进行检查。



组图:重庆今日上午发生恶性持枪抢劫事件

抬走受伤男子



  2005年5月16日上午9时30分,两名身高1.7米左右的中年男子在重庆沙平坝汉渝路美国加洲牛肉面馆前,向一对刚从银行出来的夫妇射击并抢走皮包。枪声惊动一过路男子,两人顺势向该男子射击,造成其右腿受伤。随后,两男子从地下通道逃离现场。

  目前,具体情况警方还在进一步调查中

[ 2005/03/22 13:02 | by 网络毛毛虫 ]
具体方法是:

1、发送“0000”到186201,移动会自动回复您一条短信(免费),这条短信将提示您已经订阅的短信服务。

2、您可以发送“00000”到您订阅短信的特服号,退定该服务。
  如果出现被莫名其妙的扣费,可以拨打1860进行投诉,告知详细情况,如果确实是非正常扣费,移动一般会进行退费。
[ 2005/03/20 21:09 | by 网络毛毛虫 ]

1、新建的图书馆

2、新建的图书馆no.2

春天的校园1

春天的校园2

春天的校园3

春天的校园4----行将成为历史的荷花池

春天的校园5

春天的校园6

春天的校园7

春天的校园8----二教俯瞰

换个角度看景色

校园照片1

校园照片2

校园照片3

校园照片4

夜幕下的校门
秋实公寓
完整的图书馆
竹林~~~~~~~~
第二教学楼
2005年春,荷花池边的景色。明年的现在她将消失~~~~~~
至今我都不明白含义的“现代作品”~~~~
这里可曾留下你的“倩影”?
在学校的历史上,这栋楼承担了很多角色:办公室、教室、学生宿舍......
大家战斗过的地方~~~~~~哈哈
后勤处
培训中心
第一教学楼
绿瓦楼
[ 2005/03/20 13:49 | by 网络毛毛虫 ]
方法:先去 http://cnc.qq.com/bbn/ 这个网站注册一个号码然后去 http://club.qq.com/ 登陆然后点开通会员选择宽带服务然后选网通的会弹出一个页面把你刚才 注册的号码登陆上去就可以了
(信息产业部令第33号)

《非经营性互联网信息服务备案管理办法》已经2005年1月28日中华人民共和国信息产业部第十二次部务会议审议通过,现予发布,自2005年3月20日起施行。

部 长:王旭东

二00五年二月八日

非经营性互联网信息服务备案管理办法

第一条 为规范非经营性互联网信息服务备案及备案管理,促进互联网信息服务业的健康发展,根据《互联网信息服务管理办法》、《中华人民共和国电信条例》及其他相关法律、行政法规的规定,制定本办法。

第二条 在中华人民共和国境内提供非经营性互联网信息服务,履行备案手续,实施备案管理,适用本办法。

第三条 中华人民共和国信息产业部(以下简称“信息产业部”)对全国非经营性互联网信息服务备案管理工作进行监督指导,省、自治区、直辖市通信管理局(以下简称“省通信管理局”)具体实施非经营性互联网信息服务的备案管理工作。

拟从事非经营性互联网信息服务的,应当向其住所所在地省通信管理局履行备案手续。

第四条 省通信管理局在备案管理中应当遵循公开、公平、公正的原则,提供便民、优质、高效的服务。

非经营性互联网信息服务提供者从事非经营性互联网信息服务时,应当遵守国家的有关规定,接受有关部门依法实施的监督管理。

第五条 在中华人民共和国境内提供非经营性互联网信息服务,应当依法履行备案手续。

未经备案,不得在中华人民共和国境内从事非经营性互联网信息服务。

本办法所称在中华人民共和国境内提供非经营性互联网信息服务,是指在中华人民共和国境内的组织或个人利用通过互联网域名访问的网站或者利用仅能通过互联网IP地址访问的网站,提供非经营性互联网信息服务。

第六条 省通信管理局通过信息产业部备案管理系统,采用网上备案方式进行备案管理。

第七条 拟从事非经营性互联网信息服务的,应当通过信息产业部备案管理系统如实填报《非经营性互联网信息服务备案登记表》(以下简称“《备案登记表》”,格式见本办法附录),履行备案手续。

信息产业部根据实际情况,对《备案登记表》进行调整和公布。

第八条 拟通过接入经营性互联网络从事非经营性互联网信息服务的,可以委托因特网接入服务业务经营者、因特网数据中心业务经营者和以其他方式为其网站提供接入服务的电信业务经营者代为履行备案、备案变更、备案注销等手续。

第九条 拟通过接入中国教育和科研计算机网、中国科学技术网、中国国际经济贸易互联网、中国长城互联网等公益性互联网络从事非经营性互联网信息服务的,可以由为其网站提供互联网接入服务的公益性互联网络单位代为履行备案、备案变更、备案注销等手续。

第十条因特网接入服务业务经营者、因特网数据中心业务经营者以及以其他方式为网站提供接入服务的电信业务经营者和公益性互联网络单位(以下统称“互联网接入服务提供者”)不得在已知或应知拟从事非经营性互联网信息服务的组织或者个人的备案信息不真实的情况下,为其代为履行备案、备案变更、备案注销等手续。

第十一条 拟从事新闻、出版、教育、医疗保健、药品和医疗器械、文化、广播电影电视节目等互联网信息服务,根据法律、行政法规以及国家有关规定应经有关主管部门审核同意的,在履行备案手续时,还应向其住所所在地省通信管理局提交相关主管部门审核同意的文件。

拟从事电子公告服务的,在履行备案手续时,还应当向其住所所在地省通信管理局提交电子公告服务专项备案材料。

第十二条 省通信管理局在收到备案人提交的备案材料后,材料齐全的,应在二十个工作日内予以备案,向其发放备案电子验证标识和备案编号,并通过信息产业部备案管理系统向社会公布有关备案信息;材料不齐全的,不予备案,在二十个工作日内通知备案人并说明理由。

第十三条 非经营性互联网信息服务提供者应当在其网站开通时在主页底部的中央位置标明其备案编号,并在备案编号下方按要求链接信息产业部备案管理系统网址,供公众查询核对。

非经营性互联网信息服务提供者应当在其网站开通时,按照信息产业部备案管理系统的要求,将备案电子验证标识放置在其网站的指定目录下。

第十四条 非经营性互联网信息服务提供者在备案有效期内需要变更其《备案登记表》中填报的信息的,应当提前三十日登陆信息产业部备案系统向原备案机关履行备案变更手续。

第十五条 非经营性互联网信息服务提供者在备案有效期内需要终止提供服务的,应当在服务终止之日登陆信息产业部备案系统向原备案机关履行备案注销手续。

第十六条 非经营性互联网信息服务提供者应当保证所提供的信息内容合法。

本办法所称非经营性互联网信息服务提供者提供的信息内容,是指互联网信息服务提供者的网站的互联网域名或IP地址下所包括的信息内容。

第十七条 省通信管理局应当建立信誉管理、社会监督、情况调查等管理机制,对非经营性互联网信息服务活动实施监督管理。

第十八条 互联网接入服务提供者不得为未经备案的组织或者个人从事非经营性互联网信息服务提供互联网接入服务。

对被省通信管理局处以暂时关闭网站或关闭网站处罚的非经营性互联网信息服务提供者或者非法从事非经营性互联网信息服务的组织或者个人,互联网接入服务提供者应立即暂停或终止向其提供互联网接入服务。

第十九条 互联网接入服务提供者应当记录其接入的非经营性互联网信息服务提供者的备案信息。

互联网接入服务提供者应当依照国家有关规定做好用户信息动态管理、记录留存、有害信息报告等网络信息安全管理工作,根据信息产业部和省通信管理局的要求对所接入用户进行监督。

第二十条 省通信管理局依法对非经营性互联网信息服务备案实行年度审核。

省通信管理局通过信息产业部备案管理系统,采用网上方式进行年度审核。

第二十一条 非经营性互联网信息服务提供者应当在每年规定时间登陆信息产业部备案管理系统,履行年度审核手续。

第二十二条 违反本办法第五条的规定,未履行备案手续提供非经营性互联网信息服务的,由住所所在地省通信管理局责令限期改正,并处一万元罚款;拒不改正的,关闭网站。

超出备案的项目提供服务的,由住所所在地省通信管理局责令限期改正,并处五千元以上一万元以下罚款;拒不改正的,关闭网站并注销备案。

第二十三条 违反本办法第七条第一款的规定,填报虚假备案信息的,由住所所在地省通信管理局关闭网站并注销备案。

第二十四条 违反本办法第十条、第十八条、第十九条的规定的,由违法行为发生地省通信管理局责令改正,并处一万元罚款。

第二十五条 违反本办法第十三条的规定,未在其备案编号下方链接信息产业部备案管理系统网址的,或未将备案电子验证标识放置在其网站指定目录下的,由住所所在地省通信管理局责令改正,并处五千元以上一万元以下罚款。

第二十六条 违反本办法第十四条、第十五条的规定,未在规定时间履行备案变更手续,或未依法履行备案注销手续的,由住所所在地省通信管理局责令限期改正,并处一万元罚款。

第二十七条 非经营性信息服务提供者违反国家有关法律规定,依法应暂停或终止服务的,省通信管理局可根据法律、行政法规授权的同级机关的书面认定意见,暂时关闭网站,或关闭网站并注销备案。

第二十八条 在年度审核时,非经营性互联网信息服务提供者有下列情况之一的,由其住所所在地的省通信管理局通过信息产业部备案系统等媒体通告责令其限期改正;拒不改正的,关闭网站并注销备案:

(一)未在规定时间登陆备案网站提交年度审核信息的;

(二)新闻、教育、公安、安全、文化、广播电影电视、出版、保密等国家部门依法对各自主管的专项内容提出年度审核否决意见的。

第二十九条 本办法自2005年3月20日起施行。

信息产业部网站 2005年2月22日'
[ 2005/03/16 22:52 | by 网络毛毛虫 ]
  有许多种原因可能导致Web站点无法正常工作,这使得系统地检查所有问题变得很困难。下面将集中分析总结导致Web站点崩溃的最常见的问题。如果可以解决这些常规问题,那么也将有能力对付出现的一些意外情况。

   磁盘已满

  导致系统无法正常运行的最可能的原因是磁盘已满。一个好的网络管理员会密切关注磁盘的使用情况,隔一定的时间,就需要将磁盘上的一些负载转存到备份存储介质中(例如磁带)。

  日志文件会很快用光所有的磁盘空间。Web服务器的日志文件、SQL*Net的日志文件、JDBC日志文件,以及应用程序服务器日志文件均与内存泄漏有同等的危害。可以采取措施将日志文件保存在与操作系统不同的文件系统中。日志文件系统空间已满时Web服务器也会被挂起,但机器自身被挂起的几率已大大减低。

   C指针错误

  用C或C++编写的程序,如Web服务器API模块,有可能导致系统的崩溃,因为只要间接引用指针(即,访问指向的内存)中出现一个错误,就会导致操作系统终止所有程序。另外,使用了糟糕的C指针的Java模拟量(analog)将访问一个空的对象引用。Java中的空引用通常不会导致立刻退出JVM,但是前提是程序员能够使用异常处理方法恰当地处理错误。在这方面,Java无需过多的关注,但使用Java对可靠性进行额外的度量则会对性能产生一些负面影响。

   内存泄漏

  C/C++程序还可能产生另一个指针问题:丢失对已分配内存的引用。当内存是在子程序中被分配时,通常会出现这种问题,其结果是程序从子程序中返回时不会释放内存。如此一来,对已分配的内存的引用就会丢失,只要操作系统还在运行中,则进程就会一直使用该内存。这样的结果是,曾占用更多的内存的程序会降低系统性能,直到机器完全停止工作,才会完全清空内存。

  解决方案之一是使用代码分析工具(如Purify)对代码进行仔细分析,以找出可能出现的泄漏问题。但这种方法无法找到由其他原因引起的库中的泄漏,因为库的源代码是不可用的。另一种方法是每隔一段时间,就清除并重启进程。Apache的Web服务器就会因这个原因创建和清除子进程。

  虽然Java本身并无指针,但总的说来,与C程序相比,Java程序使用内存的情况更加糟糕。在Java中,对象被频繁创建,而直到所有到对象的引用都消失时,垃圾回收程序才会释放内存。即使运行了垃圾回收程序,也只会将内存还给虚拟机VM,而不是还给操作系统。结果是:Java程序会用光给它们的所有堆,从不释放。由于要保存实时(Just In Time,JIT)编译器产生的代码,Java程序的大小有时可能会膨胀为最大堆的数倍之巨。

  还有一个问题,情况与此类似。从连接池分配一个数据库连接,而无法将已分配的连接还回给连接池。一些连接池有活动计时器,在维持一段时间的静止状态之后,计时器会释放掉数据库连接,但这不足以缓解糟糕的代码快速泄漏数据库连接所造成的资源浪费。

   进程缺乏文件描述符

  如果已为一台Web服务器或其他关键进程分配了文件描述符,但它却需要更多的文件描述符,则服务器或进程会被挂起或报错,直至得到了所需的文件描述符为止。文件描述符用来保持对开放文件和开放套接字的跟踪记录,开放文件和开放套接字是Web服务器很关键的组成部分,其任务是将文件复制到网络连接。默认时,大多数shell有64个文件描述符,这意味着每个从shell启动的进程可以同时打开64个文件和网络连接。大多数shell都有一个内嵌的ulimit命令可以增加文件描述符的数目。

   线程死锁

  由多线程带来的性能改善是以可靠性为代价的,主要是因为这样有可能产生线程死锁。线程死锁时,第一个线程等待第二个线程释放资源,而同时第二个线程又在等待第一个线程释放资源。我们来想像这样一种情形:在人行道上两个人迎面相遇,为了给对方让道,两人同时向一侧迈出一步,双方无法通过,又同时向另一侧迈出一步,这样还是无法通过。双方都以同样的迈步方式堵住了对方的去路。假设这种情况一直持续下去,这样就不难理解为何会发生死锁现象了。

  解决死锁没有简单的方法,这是因为使线程产生这种问题是很具体的情况,而且往往有很高的负载。大多数软件测试产生不了足够多的负载,所以不可能暴露所有的线程错误。在每一种使用线程的语言中都存在线程死锁问题。由于使用Java进行线程编程比使用C容易,所以Java程序员中使用线程的人数更多,线程死锁也就越来越普遍了。可以在Java代码中增加同步关键字的使用,这样可以减少死锁,但这样做也会影响性能。如果负载过重,数据库内部也有可能发生死锁。

  如果程序使用了永久锁,比如锁文件,而且程序结束时没有解除锁状态,则其他进程可能无法使用这种类型的锁,既不能上锁,也不能解除锁。这会进一步导致系统不能正常工作。这时必须手动地解锁。

   服务器超载

  Netscape Web服务器的每个连接都使用一个线程。Netscape Enterprise Web服务器会在线程用完后挂起,而不为已存在的连接提供任何服务。如果有一种负载分布机制可以检测到服务器没有响应,则该服务器上的负载就可以分布到其它的Web服务器上,这可能会致使这些服务器一个接一个地用光所有的线程。这样一来,整个服务器组都会被挂起。操作系统级别可能还在不断地接收新的连接,而应用程序(Web服务器)却无法为这些连接提供服务。用户可以在浏览器状态行上看到connected(已连接)的提示消息,但这以后什么也不会发生。

  解决问题的一种方法是将obj.conf参数RqThrottle的值设置为线程数目之下的某个数值,这样如果越过RqThrottle的值,就不会接收新的连接。那些不能连接的服务器将会停止工作,而连接上的服务器的响应速度则会变慢,但至少已连接的服务器不会被挂起。这时,文件描述符至少应当被设置为与线程的数目相同的数值,否则,文件描述符将成为一个瓶颈。

   数据库中的临时表不够用

  许多数据库的临时表(cursor)数目都是固定的,临时表即保留查询结果的内存区域。在临时表中的数据都被读取后,临时表便会被释放,但大量同时进行的查询可能耗尽数目固定的所有临时表。这时,其他的查询就需要列队等候,直到有临时表被释放时才能再继续运行。

  这是一个不容易被程序员发觉的问题,但会在负载测试时显露出来。但可能对于数据库管理员(DataBase Administrator,DBA)来说,这个问题十分明显。

  此外,还存在一些其他问题:设置的表空间不够用、序号限制太低,这些都会导致表溢出错误。这些问题表明了一个好的DBA对用于生产的数据库设置和性能进行定期检查的重要性。而且,大多数数据库厂商也提供了监控和建模工具以帮助解决这些问题。

  另外,还有许多因素也极有可能导致Web站点无法工作。如:相关性、子网流量超载、糟糕的设备驱动程序、硬件故障、包括错误文件的通配符、无意间锁住了关键的表。

  (山东 王鑫)
  博客即Blog,是继E-mail、BBS、ICQ之后出现的又一种网络交流方式。Blog是Weblog的简称。Weblog,是Web和Log的组合词。Web,指World Wide Web;Log,原义是“航海日志”,后指任何类型的流水性记录。Weblog是在网络上的一种流水记录形式。博客有三大作用:发表观点;知识过滤与积累;深度交流沟通的网络新方式。

  博客是一种傻瓜式的工具,你只需几分钟就可以申请、构建起属于自己的博客领地。博客具有一定的功能,其中最核心的功能是撰写日志、个性化的收藏、友情博客。撰写日志能让人们以时间为顺序记录生活、学习、工作的事情,并且通过评论让关心某一日志的人群参与交流;个性化的收藏是以个人的视角,以整个互联网为资源,精选和记录自己在互联网上看到的精彩资源,它在一定程度上支持人们的知识管理和知识共享;通过友情博客,各成员只要登录自己的博客空间就能随时了解友情博客成员的最新日志,便于及时交流。

  问题的提出

  2002年,我校申报了中央电教馆主持的全国教育科学“十五”规划重点课题《基于现代信息技术环境下学与教的理论与实践研究》的子课题“基于网络的校际协作学习”。笔者在课题研究中深深地体会到:

  1. 网络空间对于网上协作的重要性

  如何构建一个良好的网络协作空间直接关系着网上主题活动的生命力。校际协作可以采用的协作手段有几种:视频会议、E-mail、BBS论坛、互送录像、信件、直接面对。在实际工作中,我们具体使用的协作工具有E-mail、BBS论坛、网络会议。其中,E-mail只能算是一种通信工具,适用于一些简单的沟通;网络会议对硬件设备要求高,需要一定的网络速度,并且要求参与会议各方必须同时在线;实际工作中使用较多的是BBS论坛,它的典型特征在于共享性、异步性。作为面向学校的协作学习,协作学习的论坛肯定不能与社会性的论坛混为一谈。因此,总课题组在综合学习网站上开辟了自己的学习论坛。学习论坛在这里所起的作用是与别人交流。但是笔者发现,学习论坛对一个主题很难形成深度的交流,并且难以形成成员的个性化空间。

  2. 过程评价的重要性

  校际协作学习的主题活动的一个典型特点就是时空跨越,这种学习突破了以书本、课堂、学校为中心,学习的灵活性和学习空间的广阔性也带来了学习管理和学习评价的难度,那种单一的结论性评价已经无法真实评价学生的成效,而要更多地关注学习的过程评价和学生的多元评价。

  根据以上分析的两个方面,笔者尝试性地引入目前发展较快的网络交流方式——博客,用于支持基于网络的校际协作学习。

  利用博客构建基于网络的

  校际协作学习

  利用撰写日志、个性化的收藏、友情博客三个功能,结合基于网络协作学习的基本模式,笔者尝试着利用博客构建基于网络的协作学习。

  学生活动:围绕主题进行活动,收藏相关网络资源,发表主题学习日志(反思、电子文档、活动记录),观察成员的最新日志,参与日志的评论交流,参与自我评价、学生互评。

  教师活动:指导主题活动,收藏相关网络资源,发表主题教学日志,观察学生成员日志,解答学生日志中出现的问题,指导协作学习、进行评价。

  基于网络的校际协作学习从主题发起到学习结束,一般有如下过程:接触主题、发现主题、协作学习、结果归纳。当然,用博客进行基于网络的协作学习应该遵循基本的学习过程,但是在具体操作上要有自己的特点。附图是利用博客支持协作学习的学习过程。

  博客支持协作学习的优点

  通过博客支持,能为基于网络的校际协作学习带来如下几个好处:

  1. 博客的零技术特性,降低了基于网络的校际协作学习的门槛。即使没有专业化的协作学习平台,也能进行协作学习。各协作组织只要拥有自己的博客空间就可以方便地进行基于网络的协作学习。

  2. 博客个性化的共享,提高了协作成员的个体自觉性和整体的合作性。个性化激励着每个成员在撰写学习日志时充满了高度的自觉性和责任感,在一定程度上表现协作成员的个性,是自己内心世界和生活环境相互作用的体现,体现了个体成员的成就感。但是它的共享性却保证各成员间深度的交流,保证了将成员间的隐性知识转化为显性知识。通过友情博客,各成员能及时了解其他成员的学习动态,通过对某一日志的评论、留言、个性收藏,达到学习组织内的互通有无、互相竞争、互相协作。这种个性化的共享比BBS论坛更易于管理,易于实现管理的分散性和有序性,易于调动学习者的参与性。

  3. 以时间为序的组织方式体现了协作学习的过程。以时间为序的组织方式记录了成员学习和思考的过程,便于成员对自己学习的全过程进行反思、总结和提炼出成果;便于协作成员对日志中体现的细节话题进行深度讨论和交流;便于教师及时、全面地掌握学生学习中反馈的问题,通过评论、留言及各种手段给以帮助和指导;便于实现过程性的多元评价,通过学习日志体现出学习者的学习过程,从技术角度支持了学习文件夹的评价方法,支持了学习者的自我评价,支持了协作者间的相互评价,支持了教师对学生的评价,也支持了协作组织间的相互评价和自我评价。

  4. 博客个性化的收藏夹为知识管理提供了方便。成员可以十分方便地从互联网上获得资源,形成一个有序和松散的大型资源宝库。对于主题学习的进一步深入提供了资源保障,使每一位成员真正成为资源的管理者和消费者。

  只要能适当的改进、科学的应用、大胆的尝试,用博客支持基于网络的协作学习,一定会得到不断的发展。

  (福建省邵武明鸿中学 李新林)

 
分页: 26/47 第一页 上页 21 22 23 24 25 26 27 28 29 30 下页 最后页 [ 显示模式: 摘要 | 列表