在Windows Server的老版本 IIS 中已经包含 CPU 节流功能,并且也有不错的体现,但是作为微软重磅推出的Windows Server 2012,似乎严格的追求了产品的高性能, IIS 8.0 的功能也进行了很大的改进。具体的改进体现在什么地方,我们一起来看一下。
在老版本 IIS 中,通过轮询机制定期检查 CPU 用量,如果用量超出阈值足够长的时间就会采取对应的操作。这种方法的问题在于,CPU 用量并不能真正受到限制——用量可能会远超配置的限制,并在足够长的时间内维持高位,随后轮询机制才会注意到。如果发现 CPU 用量超过阈值,唯一可用的“修正”操作就是关闭 IIS 工作进程(W3pw.exe)。当进程被关闭后的一段时间内,IIS 还会禁止被影响应用程序启动新的进程,因此该应用程序池不会立刻恢复,并继续消耗大量 CPU 资源。在这段时间内,对该应用程序的任何请求都将失败,这将造成很不好的用户体验。
在 IIS 8.0 中,我们与 Windows 内核团队合作完善了 CPU 用量的节流机制。通过取代古老的轮询机制设计方式,内核可以确保 CPU 用量总是维持在指定级别以下。通过这一改动,我们不再需要关闭超量应用程序的 W3Wp 进程,因此就算被限制,应用程序可以保持活跃,并继续响应用户的请求。
对于 IIS 8.0 中 CPU 节流机制,还有两个新的选项。Throttle 配置选项可以确保 CPU 用量在所有时间内都能不超过限制。ThrottleUnderLoad 配置选项则可以确保 CPU 资源使用率高时,CPU 用量能够不超过限制,但如果服务器闲置,则可以消耗更多 CPU 资源。在这种模式中,一旦其他进程需要更多 CPU 资源,IIS 工作进程就会受到限制,以确保其他进程能够获得所需资源。
新闻热点
疑难解答
图片精选