适用于Ubuntu 14.04的低端VPS的Apache优化

Apache非常容易安装和初始化,但是它预装了许多模块,因此,在低RAM VPS上运行时,您可能会遇到性能问题。

因此,并不总是需要更大的服务器,但是您可以简单地以正确的方式配置Apache设置并获得最佳性能。为此,您应该做一些事情。

本教程适用于Ubuntu 14.04 LTS,但原理也与以前的版本相似。


1.禁用Apache模块

您可以看到该命令安装的ls /etc/apache2/mods-available/所有模块以及当前通过激活的所有模块的列表 ls /etc/apache2/mods-enabled/

在最初的Apache安装中,默认情况下启用了15个或更多模块。这些太多了,大多数都不用了。

首先,您必须列出所有当前处于活动状态的模块,并将其保存以备将来参考,以防万一禁用了某些必需的功能并必须重新启用它。然后只需使用命令逐个禁用模块(以moduleName为例):

sudo a2dismod moduleName

...并在每次更改后重新启动Apache,以查看是否发生任何错误。

如果不需要,您应该禁用的一些模块是:

  • 的PHP
  • SSL协议
  • 改写
  • 佩尔
  • 蟒蛇

禁用模块并重新加载Apache配置后,可以通过使用文本编辑器(例如nano)打开Apache错误日志来检查错误。

sudo nano /var/log/apache2/error.log

如果出现错误,请使用以下方法重新启用相应的模块:

sudo a2enmod moduleName

然后,重新启动Apache,直到整理出最小列表!


2.设置mpm_prefork

使用默认的Apache配置(对于小型服务器而言,这种配置不能很好地平衡),内存可能会很快耗尽,并且您的云服务器可能会过载。这将导致网页处于持续加载状态。服务器可能会保持这些死的Apache进程处于活动状态,从而尝试不必要地提供内容,从而减少了可提供的进程数量。

要解决此问题,首先必须找出除Apache之外,服务器还需要多少RAM,以及Apache进程正在使用的平均内存量。

当Apache运行时,在服务器上打开top命令。

top -bn 1

在结果表上:

  • 除apache2之外的每个进程的RES列上的数字相加,然后将其从RAM总量中删除。假设您获得600 MB的空间
  • 从所有apache2进程中获取平均值。假设获得20 MB
  • 然后,除法600/20 = 30个最大Apache进程

下一步,编辑mpm_prefork模块配置文件:

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

它可能看起来像这样:

<IfModule mpm_prefork_module>
    StartServers             2
    MinSpareServers          2
    MaxSpareServers          5
    MaxRequestWorkers        30
    MaxConnectionsPerChild   0
</IfModule>

哪里:

  • StartServers:要启动的服务器进程数。
  • MinSpareServers:保持备用的最小服务器进程数。
  • MaxSpareServers:保持备用状态的最大服务器进程数。
  • MaxRequestWorkers:允许启动的最大服务器进程数。
  • MaxConnectionsPerChild:服务器进程服务的最大请求数。

MaxRequestWorkers设置中,您必须将其更改为在上面的部分中找到的任何内容。

现在,如果您的VPS过载,并且一次可以达到服务的最大客户端数量,它将为那些用户提供服务,而其他用户则将快速失败。然后,他们可以重新加载页面以重试。最好使这些连接快速关闭,但让服务器保持健康状态,而不是永远保持打开状态。


3.减少您的日志

为了最大限度地提高性能,您可以绝对减少日志记录。在默认的Apache配置中,LogLevel设置设置为warn。您可以将其更改为错误,以仅保留错误消息。

打开Apache配置文件:

sudo nano /etc/apache2/apache2.conf

找到这行:

LogLevel warn

...并将其更改为:

LogLevel error

然后,保存文件并使用以下命令重新启动Apache:

sudo service apache2 restart

Apache保留日志的默认文件是/var/log/apache2/error.log


4.考虑更换mod_php

如果运行PHP网站,则很有可能正在使用mod_php模块。即使请求的静态资源(例如图像,css和javascript),此模块也可能导致每个Apache子进程使用100 MB以上的RAM。

php-fpm模块是一个很好的选择,它是使用fastcgi协议的独立过程。使用php-fpm,用于Apache进程的内存对于静态内容可以降至10 MB,对于动态内容可以降至60 MB。

尽管要使这些更改适应工作可能会有些困难,但是值得付出努力。


5.考虑更换mpm_prefork

大多数Apache配置都使用mpm_prefork模块,该模块是线程安全的,并使用多个子进程(每个进程有一个线程),每个进程一次处理一个连接。如果您不需要外部模块(例如PHP或Rails),则可以将其替换为apache2-mpm-worker模块,这通常会更快。Worker MPM使用具有多个线程的多个子进程,每个线程一次处理一个连接。

为了启用工作程序模块,您必须安装它。

sudo apt-get install apache2-mpm-worker

此命令将卸载mpm_preforkmos_php和其他不兼容的附加模块。



Leave a Comment

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

什麼是日誌文件系統,它是如何工作的?

什麼是日誌文件系統,它是如何工作的?

我們的計算機以稱為日誌文件系統的有組織的方式存儲所有數據。這是一種有效的方法,可以讓計算機在您點擊搜索時立即搜索和顯示文件。 https://wethegeek.com/?p=94116&preview=true

技術奇點:人類文明的遙遠未來?

技術奇點:人類文明的遙遠未來?

隨著科學的快速發展,接管了我們的大量工作,我們陷入無法解釋的奇點的風險也在增加。閱讀,奇點對我們意味著什麼。

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

2021 年人工智能對醫療保健的影響

2021 年人工智能對醫療保健的影響

過去幾十年,醫療保健領域的人工智能取得了巨大飛躍。因此,醫療保健中人工智能的未來仍在日益增長。