上次修改时间: 2011年3月3日
适用范围: SharePoint Foundation 2010
本文内容
设置的持久性
可以更改的内容和不能更改的内容
更改 SPHttpThrottleSettings 的属性
本主题描述如何以编程方式更改 Microsoft SharePoint Foundation 中的性能监视和 HTTP 请求限制系统的设置。
设置的持久性
每个 SharePoint Foundation Web 应用程序都有自己的性能监视和请求限制设置。这些设置作为一个 SPHttpThrottleSettings 对象长期保存在配置数据库中,该对象是 Web 应用程序的 HttpThrottleSettings 属性的值。
可以更改的内容和不能更改的内容
系统的以下方面不能更改:
运行状况分数始终为从 0 到 10 的整数,最小分数表示运行状况最好,最大分数表示运行状况最不好。
给定监视器的运行状况分数基于所监视的计数器样本的时间加权平均数,您不能更改加权算法。(但是,有一种方法可以禁止使用多个样本。请参见下面的项目符号列表。)
将为每个工作进程给出一个整体运行状况分数,此分数等于任何 Web 应用程序的注册监视器的运行状况最不好的分数。
只有在一个工作进程的运行状况分数为 10 时,该工作进程才会进入限制模式,也就是说,至少有一个性能监视器的运行状况分数为 10。
只有在一个工作进程的运行状况分数为 10 且持续了至少 60 秒的时间时,该工作进程才会进入第二阶段限制。这意味着,在至少 60 秒的连续时间内,有某个监视器或其他监视器的分数为 10。但是,某个给定的监视器的分数不必一直为 10。如果监视器 A 分数为 10 的状态持续了 45 秒,而监视器 B 分数为 10 的状态持续了 45 秒且时间上与监视器 A 分数为 10 的状态持续时间发生了重叠,则有可能在 60 秒的时间跨度内,始终至少有一个监视器的分数为 10。
可以通过编程方式更改系统的以下几个方面:
是否对 Web 应用程序启用限制。请参阅本主题后面的更改 SPHttpThrottleSettings 的属性。
对所监视的计数器的采样频率。必须使用相同频率对某个特定 Web 应用程序监视的所有计数器进行采样。请参阅本主题后面的更改 SPHttpThrottleSettings 的属性。
使用每个计数器的多少个样本来计算每个计数器的加权平均值。*将此值设置为 1 可有效地关闭平均值计算。*某个特定 Web 应用程序的所有监视器必须都使用相同数量的样本。请参阅本主题后面的更改 SPHttpThrottleSettings 的属性。
监视哪些 Windows Server 2008 计数器。有关详细信息,请参阅如何:注册或取消注册性能计数器。
哪些请求类型永远不会被阻止、哪些请求类型将被阻止以及这些请求是在第一阶段限制还是在第二阶段限制中被阻止。有关详细信息,请参阅如何:创建和注册或取消注册请求分类器。
与特定监视器相关联的运行状况分数计算器。有关详细信息,请参阅如何:创建、修改和更改区域样式运行状况分数计算器。
运行状况分数计算器用来为给定的计数器值(或值的函数)分配一个分数的区域边界(值的子范围)。(这一点只适用于标准的区域样式的运行状况分数计算器。)有关详细信息,请参阅如何:创建、修改和更改区域样式运行状况分数计算器。
更改 SPHttpThrottleSettings 的属性
通过编程方式启用或禁用请求限制不会带来任何特殊的挑战。更改用于计算加权平均值的样本数或更改计数器采样的频率也不会带来任何特殊的挑战。下面的代码显示了控制台应用程序项目的 program.cs 文件。Microsoft Visual Studio 项目要求对位于 %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\ISAPI 中的 Microsoft.SharePoint.dll 进行引用。下面的代码将采样频率从默认的 5 秒更改为 10 秒,对父 Web 应用程序启用限制监视,并将样本数量从默认值 12 更改为 5。请注意,应调用 Update() 以便将更改保存到配置数据库中。
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;
using Microsoft.SharePoint.Utilities;
namespace Contoso.SharePoint.Utilities
{
class ThrottleSettingsChanger
{
static void Main(string[] args)
{
Uri webApplicationUri = new Uri("Http://localhost/");
SPWebApplication webApplication = SPWebApplication.Lookup(webApplicationUri);
SPHttpThrottleSettings throttleSettings = SPHttpThrottleSettings.GetHttpThrottleSettings(webApplication);
throttleSettings.RefreshInterval = 10000;
throttleSettings.PerformThrottle = true;
throttleSettings.NumberOfSamples = 5;
throttleSettings.Update();
}
}
}