让我以这种方式构思......
“假设我有一台运行在单核英特尔处理器上的应用服务器,并为200个并发用户提供服务。将硬件转移到双核系统,我的应用服务器现在可以为350个并发用户服务吗?”
我希望解决的基本问题是 - “添加额外的处理器内核有助于提高服务器的I / O能力”。因为有时这正是硬件供应商在宣传他们的多核服务器时所暗示的。
答案 0 :(得分:3)
您必须对服务器进行概要分析,确定其瓶颈并对其进行处理。
如果你受限于内存,请购买更多内存或购买内存更快的电脑。
如果您受磁盘限制,并且大量提供静态内容,请考虑使用SSD驱动器。
如果你的数据库绑定了,请考虑一下。
但通常你是“配置绑定”,并调整你的配置,例如更改池中的线程数等,可以立即改进。
许多Web服务器和数据库正是为了利用额外内核而编写的软件。当然,许多人还会收取每个核心的许可费用,所以也要考虑这个方面。
答案 1 :(得分:1)
您可能会或可能不会看到好处,但由于CPU并未真正执行I / O,因此我不希望任何重大好处是任务主要受I / O限制。
编辑:我的回答是假设你的代码是用来实际使用多个内核的。如果不是,您的应用程序将无法从其他内核中受益,但机器将更好地配备其他同时执行的任务。
答案 2 :(得分:0)
当然,这取决于您的应用程序服务器的编写方式。如果软件不使用任何并行编程技术,那么即使硬件支持,也无法并行运行它。
答案 3 :(得分:0)
如果您的服务器是单线程的(使用基于选择的IO),并且请求处理是无副作用的(即它可以在概念上并行化),那么在多核机器上运行(匹配)多个实例肯定会最大化机器的计算效用。
这是否转换为更高的吞吐量取决于请求处理是否是cpu绑定的。根据经验,IO是分布式系统的主要瓶颈。但是,如果(请求)消息组装需要大量计算,那么每个请求之外的某个给定的CPU开销超出IO成本。拥有多个cpus辅助在这种情况下显然会有所不同。
除了协议级别的考虑因素外,显然如果处理每个请求需要大量计算,那么出现cpu瓶颈会影响服务器可用性。使用多个CPU显然会有所帮助。