适用于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

如何在CentOS 7上安装Oxwall

如何在CentOS 7上安装Oxwall

Oxwall是一个开源社交网络软件平台,可用于免费构建自定义社交网站(SNS)。在这篇文章中,

如何在Ubuntu 16.10上安装Review Board

如何在Ubuntu 16.10上安装Review Board

使用其他系统?Review Board是一个免费且开源的工具,用于检查源代码,文档,图像等。这是基于网络的软件战

如何在Debian 9 LAMP VPS上安装October 1.0 CMS

如何在Debian 9 LAMP VPS上安装October 1.0 CMS

使用其他系统?October 1.0 CMS是基于Laravel框架构建的简单,可靠,免费和开源的内容管理系统(CMS)

如何使用Ubuntu 15.10在Vultr服务器上安装Xubuntu桌面

如何使用Ubuntu 15.10在Vultr服务器上安装Xubuntu桌面

Xubuntu是XFCE + Ubuntu!XFCE是Ubuntu的轻量级GUI /桌面。Vultr服务器需要其他依赖项,默认情况下未安装这些依赖项。

如何在Debian 9上安装Monica

如何在Debian 9上安装Monica

使用其他系统?Monica是一个开源的个人关系管理系统。可以将其视为CRM(销售团队使用的一种流行工具

如何使用SSL和安全密码保护由Nginx驱动的网站

如何使用SSL和安全密码保护由Nginx驱动的网站

简介SSL(代表安全套接字层)及其后续版本TLS(代表传输层安全性)是需要加密的加密协议。

如何在Fedora 26 LAMP VPS上安装MODX Revolution

如何在Fedora 26 LAMP VPS上安装MODX Revolution

使用其他系统?MODX Revolution是一种快速,灵活,可扩展,免费和开源的企业级内容管理系统(CMS),由

如何在Ubuntu 17.04上安装JuliaLang

如何在Ubuntu 17.04上安装JuliaLang

朱莉娅(Julia)通常称为JuliaLang,是一种用于数值计算的编程语言。Julia的速度和C一样快,但是却不牺牲可读性

在Ubuntu 14.04上安装Ruby on Rails

在Ubuntu 14.04上安装Ruby on Rails

Ruby on Rails(RoR)是用Ruby编程语言编写的框架,可让您将Ruby与HTML,CSS和类似的程序结合使用。

在Fedora 28上安装Anchor CMS

在Fedora 28上安装Anchor CMS

使用其他系统?Anchor是用PHP编写的轻量级开源博客CMS。Anchors源代码托管在GitHub上。本指南将向您展示

将Debian 9升级到Debian 10

将Debian 9升级到Debian 10

简介Debian 10(Buster)是Debian 9(Stretch)的后继产品。它于2019年7月6日发布。在本教程中,我们将升级一个existin

如何管理Linux服务器时区设置

如何管理Linux服务器时区设置

在Linux服务器上正确设置日期和时间非常重要。您的服务器日志和其他重要信息都将反映时区

如何在Ubuntu 16.04上安装Taiga项目管理工具

如何在Ubuntu 16.04上安装Taiga项目管理工具

使用其他系统?Taiga是用于项目管理的免费和开源应用程序。与其他项目管理工具不同,Taiga使用增量

在Ubuntu上配置Nagios:第1部分-Nagios服务器

在Ubuntu上配置Nagios:第1部分-Nagios服务器

本文是有关在Ubuntu 14.04上安装和配置Nagios的2部分系列文章的一部分。第1部分:Nagios服务器第2部分:远程主机概述Nagio

如何访问Vultr VPS

如何访问Vultr VPS

Vultr提供了几种不同的方式来访问VPS以进行配置,安装和使用。访问凭据VPS ar的默认访问凭据

如何在Debian 9上安装Grav CMS

如何在Debian 9上安装Grav CMS

使用其他系统?Grav是用PHP编写的开源平面文件CMS。Grav源代码公开托管在GitHub上。本指南将向您展示如何

如何在Fedora 26 LAMP VPS上安装Pagekit 1.0 CMS

如何在Fedora 26 LAMP VPS上安装Pagekit 1.0 CMS

使用其他系统?Pagekit 1.0 CMS是一个美观,模块化,可扩展,轻量级,免费和开源的内容管理系统(CMS),具有

如何在Ubuntu 16.04 LAMP VPS上安装BigTree CMS

如何在Ubuntu 16.04 LAMP VPS上安装BigTree CMS

使用其他系统?BigTree CMS 4.2是一种快速,轻量级,免费和开源的企业级内容管理系统(CMS),具有广泛的功能。

如何在CentOS 7上设置vsFTPd

如何在CentOS 7上设置vsFTPd

FTP是用于通过Internet传输文件的有用协议,本指南将向您展示如何设置vsFTPd(非常安全的文件传输协议守护程序)o

在Debian / Ubuntu中使用Rsync设置文件镜像

在Debian / Ubuntu中使用Rsync设置文件镜像

简介如果您经营一个重要的网站,则最好将文件镜像到辅助服务器。如果您的主服务器有网络

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

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 機器變磚。閱讀這篇文章以了解更多信息