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 / 问题 / 684424
Accepted
ServerChecker
ServerChecker
Asked: 2015-04-22 09:32:01 +0800 CST2015-04-22 09:32:01 +0800 CST 2015-04-22 09:32:01 +0800 CST

如何在 Ubuntu 14.04 服务器上调整 Apache

  • 772

目前在 Ubuntu 14.04 上的 Apache 2(确切地说是 Apache 2.4.7)上,我有以下设置:

/etc/apache2/mods-enabled/mpm_prefork.conf

<IfModule mpm_prefork_module>
StartServers                    20
MinSpareServers                 100
MaxSpareServers                 250
MaxRequestWorkers               150
MaxConnectionsPerChild          0
</IfModule>

该服务器是一个 8GB (RAM) 的亚马逊服务器,它只是为一些谷歌广告活动加载一个三页的注册表单。

我在网上找到了一个名为apachetuneit.sh的脚本,但过了一会儿 Apache 报告了这个错误:

[Tue Apr 21 16:45:42.227935 2015] [mpm_prefork:error] [pid 1134] AH00161: 服务器达到 MaxRequestWorkers 设置,考虑提高 MaxRequestWorkers 设置

我如何判断如何设置这些设置?

我只是专门询问如何调整 Apache 2.4,仅此而已。这就是为什么这个问题与这个问题不同。

ubuntu
  • 2 2 个回答
  • 66546 Views

2 个回答

  • Voted
  1. Best Answer
    ServerChecker
    2015-04-22T17:20:56+08:002015-04-22T17:20:56+08:00
    1. 认识到 Ubuntu 14.04 使用 Apache 2 和 PHP 通过一个mpm_prefork模块运行,其中一个可编辑的文件位于 /etc/apache2/mods-enabled/mpm_prefork.conf。此外,请认识到从 Apache 2.4 开始,MaxClients现在被重命名为MaxRequestWorkers,因此任何有关 MaxClients 的文档都需要切换到 MaxRequestWorkers。

    2. 使用以下命令暂时停止 Apache Web 服务:

        sudo 服务 apache2 停止
    1. 等待 5 秒,然后运行以下命令来查看服务器上有多少可用的虚拟内存:
        sudo free -ht

    阅读 Mem: 行并查看 free 列。将此视为您可以专用于 Apache 的 RAM 量,尽管我通常喜欢在更强大的服务器上扣除 2GB(如 > 4GB),或者在更轻的服务器上扣除 1GB。所以,如果免费专栏说我有 13GB 的免费空间,我会建议给 Apache 11GB。这是一个基线。如果我们偶尔在日志中遇到任何数据库问题(例如在 3 天内的日志中出现 3 次)它需要更多内存,那么我们可能会认为我们只有 10GB 而不是 11GB(在这种情况下) )。如果我们在 Apache 日志中遇到服务器需要更多 MaxRequestWorkers,那么这是一个单独的问题,我将在下面解决。

    1. 启动 Apache Web 服务器。
        sudo 服务 apache2 启动
    1. 打开大约 10 个浏览器选项卡,从您的网站连接到一些较长或加载速度较慢的页面,并在每个选项卡上刷新 3-4 次。

    2. 之后,现在快速运行以下命令:

        sudo ps -ylC apache2 | awk '{x += $8;y += 1} END {print "Apache 内存使用量 (MB):"x/1024; print "平均进程大小 (MB): "x/((y-1)*1024)}'

    快速运行 5 次。

    查看“平均进程大小”值,然后在运行该值的 5 次中取平均值。

    现在进行以下数学运算,并确保根据需要将 GB 转换为 MB,以便所有数字都以 MB 值表示。所以,要么乘以 1024,要么除以 1024,这取决于你需要走的路。

    MaxRequestWorkers =可用基线(有缓冲区空间)/平均进程大小

    例如,我有一个 14GB 的服务器,但是当 Apache 停止时,服务器显示它使用了 1GB 空闲的 RAM。然后我为操作系统提供另外 1GB 的额外缓冲空间,以备不时之需。这意味着我将有一个 12GB 的免费基线。现在我必须将它从 GB 转换为 MB,因此我乘以 12 x 1024 并得到 12288。12288 MB 是我的基线自由值。在我的例子中,我看到平均进程大小是 21MB。所以,我取 12288 / 21,我得到大约 585。现在,系统操作员通常会向下舍入这个值,所以我得到 580。

    1. 编辑文件 /etc/apache2/mods-enabled/mpm_prefork.conf 并考虑将其设置为以下默认值,将 XXX 替换为 MaxRequestWorkers 计算:
    
    
    
    `<IfModule mpm_prefork_module>`
      StartServers                    2
      MinSpareServers                 2
      MaxSpareServers                 5
      MaxRequestWorkers               XXX
      ServerLimit                     XXX
      MaxConnectionsPerChild          0
    </IfModule>
    

    请注意,您可能看不到 ServerLimit 参数。添加它。如果不存在此参数,则默认为 256,但需要与 MaxRequestWorkers 的值相同,否则您将收到错误消息。

    1. Apache 配置中的另一个关键因素是带有 Timeout 变量的 /etc/apache2/apache2.conf 文件,以秒为单位。这是在超时之前您可以从服务器发送或接收的时间。您还必须记住文件上传或文件下载,例如,如果您有一个网站,人们可以上传或下载 CSV 或其他大文件。并且您需要记住一个繁忙的数据库服务器,并且您可能需要在页面超时之前提供一些时间。使 Timeout 变量越小,Web 服务器接收新连接的可能性就越大。但是请注意,将此值设置得太低可能会对 PHP 会话变量造成严重破坏,尽管不会对基于浏览器会话的 cookie 造成破坏。所以,例如,值 300(5 分钟)可能对依赖于 Web 应用程序工作流的 PHP 会话变量而不是浏览器会话 cookie 的 Web 服务器有好处。对于只提供静态广告登陆页面的 Web 服务器来说,45 的值可能是好的,但对于需要大量使用 PHP 会话变量的服务器来说就很糟糕了。因此,将此文件中的 Timeout 参数编辑为您需要的数量。这可能需要对您的所有网页进行一些测试,以查看该值是否太低。但是,除非您在大文件上传或大文件下载中遇到问题,否则不要将其设置为高于 300 可能是个好主意。但是对于需要大量使用 PHP 会话变量的服务器来说会很糟糕。因此,将此文件中的 Timeout 参数编辑为您需要的数量。这可能需要对您的所有网页进行一些测试,以查看该值是否太低。但是,除非您在大文件上传或大文件下载中遇到问题,否则不要将其设置为高于 300 可能是个好主意。但是对于需要大量使用 PHP 会话变量的服务器来说会很糟糕。因此,将此文件中的 Timeout 参数编辑为您需要的数量。这可能需要对您的所有网页进行一些测试,以查看该值是否太低。但是,除非您在大文件上传或大文件下载中遇到问题,否则不要将其设置为高于 300 可能是个好主意。

    2. 现在重新启动您的 Apache Web 服务。如果你做错了什么,Apache 很可能会在你重新启动它的那一刻告诉你,你可以纠正它。

        sudo 服务 apache2 重启
    1. 现在重复您之前执行的 10 个选项卡浏览器技巧,并查看您是否在 Apache Web 服务器错误日志中遇到 Apache 配置错误:
        sudo tail -f /var/log/apache2/error.log

    ...如果您愿意,请按 CTRL+C 摆脱这种情况。

    寻找关于需要 MaxRequestWorkers 的投诉(最近因为您重新启动了 Web 服务器)。如果您发现即使使用最佳 MaxRequestWorkers 设置,您的网站或 Web 应用程序也可能需要更多的火力。考虑以下选项:

    • 使用 CDN 下载大文件、图像和脚本。
    • 使用 CloudFlare 等缓存服务。
    • 重做您的网站或 Web 应用程序策略,以使用多个 Web 服务器作为负载均衡器后面的一个“Web 应用程序”。
    • 向服务器添加更多 RAM,从而重新进行此计算。

    1. 现在 Apache 服务器已经调整,它是一种基线调整。您需要在 2-3 周内对其进行检查,并在 Apache 错误日志中查找 MaxRequestWorker 问题。由此,您可以做出优化决定(参见第 10 步)。您还可以在 Ubuntu 上使用 apt 安装 Munin,并查看 Apache 的性能随时间的变化,并在您决定需要对 Web 服务器正在处理的流量进行任何处理之前绘制出增长的想法。
    • 47
  2. g491
    2015-04-22T09:40:21+08:002015-04-22T09:40:21+08:00

    您可以将 MaxRequestWorkers 提高到多少取决于您的每个 httpd / apache 进程占用多少 RAM。如果每个占用 50MB(只是选择一个随机数),那么您同时使用的每 20 个请求工作人员(即并发连接)将占用 1GB。所以在那个例子中,你最多可以有 8GB * 20 = 160 MaxRequestWorkers。但是,你不能为 apache 用完所有的 RAM,你需要保留一些用于在那里运行的其他东西。还留一些备用 RAM 有助于提高性能,因为操作系统将使用它来缓存内容并提高性能(尽管与服务器速度相比,最好不要用完连接,因为站点会显得很慢,而用户的浏览器等待连接可用,如果它们都用完了)。

    • 3

相关问题

  • 无法通过 Ubuntu VPN 访问外部网络

  • ubuntu apt-get upgrade - 如何在 shell 中单击确定?

  • VirtualBox 上 Ubuntu 的访客优化技巧 [关闭]

  • 外部硬盘上的 virtualbox 虚拟硬盘驱动器(Vista 主机上的 ubuntu 客户机)

  • 如何在 Ubuntu 上挂载 LVM 分区?

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