AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 932076
Accepted
TheStoryCoder
TheStoryCoder
Asked: 2018-09-22 07:50:52 +0800 CST2018-09-22 07:50:52 +0800 CST 2018-09-22 07:50:52 +0800 CST

扩展 Apache/PHP 就像最大化 CPU 内核数量一样简单?

  • 772

我有一个带有 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。另外,我不一定要寻找更好的性能,主要是能够处理更高的流量/更多的并发作业。

php
  • 2 2 个回答
  • 1257 Views

2 个回答

  • Voted
  1. John Mahowald
    2018-09-23T05:16:55+08:002018-09-23T05:16:55+08:00

    总有一个可扩展性限制,它可以是系统的任何组件。

    如果您的吞吐量有很好的线性增长,并且响应时间不是太糟糕,那么 CPU 目前不是您的限制因素。继续使用更多 CPU 进行测试。想一想,您可以从各种云中租用非常大的虚拟机。当 VM 大于一个 CPU 插槽时,您可能会开始看到 NUMA 效果。

    理想情况下,吞吐量只是停止增加,因为它遇到了一些其他瓶颈,但它也可能迅速下降。找出答案的唯一方法是测试。

    使用多个负载平衡后端有不可扩展性的原因,包括高可用性。

    • 1
  2. Best Answer
    Kai Petzke
    2018-09-23T06:20:28+08:002018-09-23T06:20:28+08:00

    根据您的描述(100% CPU 利用率),您的应用程序似乎受 CPU 限制。因此,添加更多 CPU 内核或迁移到具有更快内核的机器可能会提高您的性能。

    许多云提供商每小时只向您收取几美分,以租用具有许多 CPU 内核和大量 RAM 的强大虚拟机。继续在 16 或 32 个内核上进行测试,以了解您的性能如何随 CPU/内核数量而扩展。

    是的,我建议首先增加系统中的核心数量,然后再增加系统数量。

    • 1

相关问题

  • 用户特定的 Php.ini 当 php 作为模块运行时?

  • 使 php mail() 函数在 ubuntu-server 上工作的步骤是什么?

  • Web 服务器和数据库服务器位于完全不同的位置

  • PHP 作为 CGI 还是 Apache 模块?

  • 通过 VPN 连接什么是远程服务器 IP?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve