0

让我这样构图。。

“假设我有一个在单核 Intel 处理器上运行的应用程序服务器并为 200 个并发用户提供服务。将硬件移动到双核系统是否可以让我的应用程序服务器现在为 350 个并发用户提供服务”?

我希望解决的基本问题是——“添加额外的处理器内核是否有助于提高服务器的 I/O 能力”。因为有时这正是硬件供应商在吹捧他们的多核服务器时所暗示的。

4

4 回答 4

3

你必须分析你的服务器,确定它的瓶颈,然后处理它们。

如果您受内存限制,请购买更多内存或购买内存更快的计算机。

如果您受磁盘限制,并且提供大量静态内容,请考虑使用 SSD 驱动器。

如果它是您的数据库绑定,请考虑这一点。

但通常你是“配置绑定”的,并且调整你的配置,例如改变池中的线程数,等等,会给你带来立竿见影的改进。

许多网络服务器和数据库正是为利用额外内核而编写的软件。当然,许多还收取每个内核的许可费,所以也要考虑这个方面。

于 2009-05-07T10:48:29.893 回答
1

您可能会或可能不会看到好处,但由于 CPU 并没有真正执行 I/OI,因此不会期望任何显着的好处是任务主要受 I/O 限制。

编辑:我的回答假设您的代码是这样编写的,您实际上是在使用多个内核。如果不是这样,您的应用程序将不会受益于额外的内核,但机器将更好地为其他同时执行的任务提供服务。

于 2009-05-07T10:44:27.953 回答
0

当然,这取决于您的应用程序服务器是如何编写的。如果软件不使用任何并行编程技术,那么即使硬件支持这样做,您也无法并行运行它。

于 2009-05-07T10:43:29.827 回答
0

如果您的服务器是单线程的(使用基于选择的 IO),并且请求处理是无副作用的(即它可以在概念上并行化),那么在多核机器上运行(匹配)多个实例肯定会最大化计算效用机器。

这是否转化为更高的吞吐量取决于请求处理是否受 CPU 限制。根据经验,IO 是分布式系统的主要瓶颈。但话虽如此,如果(请求)消息组装需要大量计算,那么每个请求都会有一定的给定 CPU 开销,超出 IO 成本。在这种情况下,拥有多个 CPU 辅助显然会有所作为。

除了协议级别的考虑之外,显然如果处理每个请求都需要大量计算,那么 CPU 瓶颈将影响服务器的可用性。使用多个 CPU 显然会有所帮助。

于 2009-05-08T12:53:56.720 回答