优化 Apache

优化 Apache

我正在尝试优化 Digital Cloud 托管上的虚拟服务器上的 apache。我正在遵循一个教程,该教程告诉我确保在 apache2.conf 中设置以下值

KeepAlive Off

...

<IfModule mpm_prefork_module>
StartServers 2
MinSpareServers 6
MaxSpareServers 12
MaxClients 80
MaxRequestsPerChild 3000
</IfModule>

但是,我在这个文件中唯一能找到的是“KeepAlive Off”。没有任何其他属性或

我的文件位置是 /etc/apache2/apache2.conf,我使用的是 Ubuntu 14.04 x64 和 apache 2.4.7。有人能告诉我为什么我的文件中没有这个吗?直接添加它安全吗?

谢谢!

答案1

我的直觉告诉我,您安装了 WordPress、Drupal 或类似的重量级 PHP 应用程序,现在您想知道为什么您的 Apache 每秒无法处理一千亿个请求。

事实是,如今您必须首先在 Apache(或任何其他 Web 服务器软件)上调整所有内容。瓶颈很可能出在您的应用程序中、[缺乏] 缓存、数据库/SQL 查询设计不良、某些数据库软件以默认设置运行,或者其他原因。

在您的典型环境中,除非您的流量很大,否则 Web 服务器软件本身是最后需要任何类型优化的。

请更具体地告诉我们为什么以及您实际上尝试进行性能调整。

在您的评论后进行编辑

不过,在对 Apache 进行优化之前,您需要仔细研究并对其应用程序和数据库进行基准测试。"Why he's repeating that, I just wanna optimize my Apache!!",您现在可能想知道。

这一切都取决于您的应用程序能够多快地呈现 Apache 能够提供的内容。如果您的应用程序和/或数据库需要两秒钟才能返回某些内容,那么优化 Apache 本身几乎毫无用处,如果瓶颈在其他地方,它不会使任何事情变得更快。而且,无论如何,在运行这些基准测试后,您可以了解如何开始调整您的 Apache。

那么,如果您的应用程序运行缓慢,该怎么办?Varnish或者类似的前端缓存memcached等在这种情况下会更多地提高性能,而不是调整 Apache。

答案2

Apache 的默认配置并不算不合理,因为配置的编写者无法知道您将在其上运行什么,也不知道您将在哪个服务器上运行它。但它倾向于提供静态内容。一旦您开始动态生成内容,情况就会发生变化。

对于给定的应用程序和硬件,您当然可以做得比默认设置更好,而且很可能这里的人们可以就此为您提供建议,但您确实需要提供有关您的设置的更多信息。

有很多旋钮需要调整,而且每个旋钮的配置方式都非常相互依赖。没有简单的方法可以替代对所涉及的内容的充分理解,以及对您实际遇到的瓶颈进行实际调查。您需要制定一个总体策略并进行相应的配置,而不是孤立地考虑各种设置,然后您需要在适合您预期用途的负载条件下检查实际发生的情况并进行改进。

因此,如果您真的想自己解决这个问题,请重写您的问题,并提供更多信息,下面我会大致介绍一下这意味着什么。然后考虑一下这是否真的适合服务器故障问题。您可能无法一次回答所有问题。

另外,想想这是否真的是你想自己做的事情。我猜你已经在编写应用程序方面学到了足够多的东西,最好与经验丰富的系统管理员合作来设置你的系统,偶尔检查一下并调整配置,并讨论如何让你的应用程序与系统很好地配合。

  1. 告诉我们您的托管环境类型(VPS?裸机?)和资源(RAM、磁盘系统、CPU)。

  2. 请告诉我们一些有关您的应用程序的信息,以及它们将如何运行的更多信息。为了进行优化,首先要关注的是内存的使用方式,以及每个请求可能需要多长时间才能得到服务。在 apache 进程(例如 mod_php)中运行应用程序与在单独的引擎(例如 php-fpm)中运行应用程序之间存在很大差异。此外,一些系统运行多线程应用程序服务器,这与运行多个系统进程有很大不同。了解每个请求将占用多少内存也很重要。

  3. 一般来说,有很多方法可以布局您的配置。关于最佳实践有很多好建议,但这里有不同的理念,保持一致很重要,这样您就知道在哪里可以找到东西。不要指望每个人都使用与您相同的布局。您说过您正在运行 ubuntu,所以可能只是尝试与 Ubuntu 的方法保持一致。具体来说,这意味着尽可能避免在 /etc/apache2/apache.conf 中进行更改,而是使用 /etc/apache/conf.d/ 中的文件和 /etc/apache/sites-available/ 中的站点。每当新版本的 apache 对 apache.conf 进行更改时,这将使事情变得容易得多。坚持使用默认的 ubuntu 方法将使熟悉 Debian 和 Ubuntu 的人更容易知道系统上的东西可能在哪里,并更容易使用这些人的建议。

  4. 优化 Apache 配置很大程度上取决于您的缓存架构。虽然这会增加复杂性,但要获得高性能的应用程序/服务器,您将需要一个前端缓存系统(可能从使用 varnish 或 squid 的页面级缓存开始),以及应用程序内的缓存层。您是否拥有这样的缓存层将对如何优化 Apache 产生很大影响。但是,要有效地使用这样的层,您的应用程序需要能够向缓存层发送适当的标头。

答案3

是的,您可以添加 KeepAlive。它是 Apache 核心的一部分,因此不依赖于模块。默认情况下,它是开启的。

http://httpd.apache.org/docs/2.2/mod/core.html#keepalive

编辑:您指的是prefork 模块。在模块页面上,显示以下内容。

该 MPM 具有很强的自我调节能力,因此很少需要调整其配置指令。

这些变化给我的印象是,可能如果您的服务器持续处于高负载状态,请提高服务器的性能。在这种情况下,最好寻找一台新服务器。如果您没有特定的负载要求,默认设置可能最适合您。

相关内容