执行Apache的维护工作

减少Apache的内存消耗

在使用的服务中,由于Apache(httpd)消耗了大量内存,因此需要调整并限制内存量的设置。

关于Apache,当启动服务时,会生成多个进程(httpd)。
每个进程都会接收来自客户端的请求(http/https),处理后返回响应。
同时进行接收请求和返回响应的工作。

为了处理多个请求,我们使用了多进程模块(MPM)。
多进程模块(MPM)有预分配、工作线程和事件三种。
默认情况下,设置为”预分配”模式。

关于「prefork」的内容

一个进程有一个线程。
线程是向CPU发送指令的单位,因此,当启动的进程数量较少时,对于请求的处理速度会变慢。
相反,如果生成的进程太多,服务器将消耗内存。
针对多个并发请求,Apache会增加或减少进程。
备忘:进程使用内存,线程使用CPU。

由于处理fork过程时会增加负担,因此需要进行设置以抑制其发生。
根据预先进行fork的概念,它被命名为”prefork”。
像”prefork”这样的进程被称为”单线程进程”。
备注:”fork”命令是用于从一个进程调用另一个进程的命令,是Linux系统调用的一种。

每个子进程(fork)都负责处理通信。
因为一个进程不会受到其他进程的影响,所以可以提供稳定的响应。

作为方针

    1. 考虑同时处理的数量,确定启动的最大进程数。

 

    1. 考虑内存量,确定最小进程数。

 

    2-2. 还需要考虑应用程序所使用的内存量。

根据服务器可用内存和进程所使用的内存数量计算而得出的最大进程数。


根据以上内容进行如下设置:
1. 推测出高负荷状态并设置最大空闲进程数=MaxSpareServers
2. 考虑性能即使在低负荷状态下也设置最小空闲进程数=MinSpareServers

不要忘记设置可以同时应答多个客户端的最大值「MaxClients」。由于是单线程进程,所以MaxClients = MaxSpareServers。

参考网站:https://qiita.com/nownabe/items/1111cc32da9fe63289f0
参考网站:https://qiita.com/takahashi-kazuki/items/2352aec16d6a1dc40582

参考网站:https://qiita.com/nownabe/items/1111cc32da9fe63289f0
参考网站:https://qiita.com/takahashi-kazuki/items/2352aec16d6a1dc40582

广告
将在 10 秒后关闭
bannerAds