Web服务器上的更多核心与更快核心

时间:2020-03-05 18:38:06  来源:igfitidea点击:

关于双核与四核的讨论与四核本身的讨论一样古老,答案通常是"取决于情况"。因此,这里的场景是Web服务器(Windows 2003(不确定x32还是x64),4 GB RAM,IIS,ASP.net 3.0)。

我的印象是Web服务器中的CPU不需要那么快,因为请求通常很轻便,因此,当我们收到许多小的请求时,拥有更多(较慢)内核应该是一个更好的选择。

但是,由于我在IIS负载平衡方面经验不足,并且不想花很多钱只是为了找出错误的选择,因此,如果我有更多的经验,可以请问有更多经验的人发表评论吗?更快或者更慢的内核更好?

解决方案

回答

越多越好。随着编程语言变得越来越复杂和抽象,将需要更多的处理能力。

Atleat Jeff相信Quadcore会更好。

回答

我们在linux上使用apache,它派生了一个处理请求的进程。我们发现更多的内核有助于提高吞吐量,因为它们减少了等待放入运行队列的进程的延迟。我没有IIS的丰富经验,但我想同样的情况适用于它的线程池。

回答

对于像Web服务器这样的东西,(相对)容易地划分处理每个连接的任务。我可以肯定地说,Web服务器是并行代码最常见(且已淘汰)的用途之一。并且由于我们能够将大部分处理分为多个离散线程,因此更多的内核确实可以使我们受益。这是什至可以共享主机的重要原因之一。如果IIS和Apache之类的服务器软件无法并行运行请求,则意味着每个页面请求都必须以队列方式抛出,这可能会使加载时间变得异常缓慢。

这也是为什么高端服务器操作系统(如Windows 2008 Server Enterprise)支持诸如64核和2TB RAM之类的原因。这些应用程序实际上可以利用许多核心。

另外,由于每个请求的CPU负载可能都很低,因此(对于某些应用程序)我们可能会放弃使用速度较慢的内核。但是,显然,使每个内核速度更快可能意味着能够更快地完成每个任务,并且从理论上讲,可以处理更多任务和更多服务器请求。

回答

马克·哈里森(Mark Harrison)说:

I don't have much experience with IIS, but I imagine the same scenario applies with its thread pool.

实际上,更多的内核=可以同时运行更多的线程。 IIS本质上是多线程的,可以轻松利用这一点。