我有一个带有 4 核 8 线程的 Intel i7 CPU 的 Linux/Debian 服务器。当我运行我的重型 Apache/PHP 作业时,它使用 1 个线程,而当我运行并发 Apache/PHP 作业时,它们每个都使用自己的线程。
因此,如果我想为高流量做好准备,是否只是最大化内核数量(通过选择其他 CPU)以能够处理更多并发作业,前提是它有足够的内存并且数据库/文件系统没有不会带来额外的挑战?
我曾尝试同时运行 8 个和 10 个作业,它使用了所有线程,CPU 利用率大多为 100%(但运行完美),所以看起来这个理论并没有完全关闭 - 但还有其他东西可以打破这种线性思维吗?
或者,我可以使用具有多台服务器的负载平衡系统,但我想知道使用单台服务器能走多远。
PS。Apache/PHP 正在使用禁用线程安全的 mod_php,因此它使用 Prefork MPM。不确定我敢使用 Worker MPM,因为我不确定线程安全......
PSS。另外,我不一定要寻找更好的性能,主要是能够处理更高的流量/更多的并发作业。
总有一个可扩展性限制,它可以是系统的任何组件。
如果您的吞吐量有很好的线性增长,并且响应时间不是太糟糕,那么 CPU 目前不是您的限制因素。继续使用更多 CPU 进行测试。想一想,您可以从各种云中租用非常大的虚拟机。当 VM 大于一个 CPU 插槽时,您可能会开始看到 NUMA 效果。
理想情况下,吞吐量只是停止增加,因为它遇到了一些其他瓶颈,但它也可能迅速下降。找出答案的唯一方法是测试。
使用多个负载平衡后端有不可扩展性的原因,包括高可用性。
根据您的描述(100% CPU 利用率),您的应用程序似乎受 CPU 限制。因此,添加更多 CPU 内核或迁移到具有更快内核的机器可能会提高您的性能。
许多云提供商每小时只向您收取几美分,以租用具有许多 CPU 内核和大量 RAM 的强大虚拟机。继续在 16 或 32 个内核上进行测试,以了解您的性能如何随 CPU/内核数量而扩展。
是的,我建议首先增加系统中的核心数量,然后再增加系统数量。