centos

怎样调整CentOS Apache内存使用

小樊
39
2025-09-30 18:31:10
栏目: 智能运维

一、前置准备:确认当前内存使用情况

在调整前,需先了解Apache及系统的内存占用现状,为后续参数设置提供依据:

二、核心调整:修改Apache配置文件(MPM模块参数)

Apache的内存使用主要由**MPM(多处理模块)**决定,CentOS默认使用prefork(进程模式,适合兼容性场景),高性能场景建议切换至worker(线程模式)或event(异步线程模式)。需根据模块类型调整对应参数:

1. 切换MPM模块(可选但推荐)

编辑Apache配置文件(/etc/httpd/conf/httpd.conf/etc/apache2/apache2.conf),注释prefork模块,启用workerevent模块:

# 注释prefork模块(若存在)
# <IfModule mpm_prefork_module>
#     ...
# </IfModule>

# 启用worker模块(示例配置)
<IfModule mpm_worker_module>
    StartServers             2       # 启动时的工作进程数(每个进程包含多个线程)
    MinSpareThreads         25       # 最小空闲线程数
    MaxSpareThreads         75       # 最大空闲线程数
    ThreadLimit             64       # 单个进程的最大线程数(需≤ThreadsPerChild)
    ThreadsPerChild         25       # 每个工作进程创建的线程数
    MaxRequestWorkers      150       # 最大并发请求数(=ThreadsPerChild×StartServers)
    MaxConnectionsPerChild   0       # 每个进程处理的请求数(0=无限制,建议设为1000~10000防内存泄漏)
</IfModule>

注:worker模式通过线程处理请求,内存占用远低于prefork(每个线程共享进程内存)。

2. 调整prefork模块参数(若坚持使用)

若因兼容性需保留prefork模块,需调整以下参数平衡并发与内存:

<IfModule mpm_prefork_module>
    StartServers             5       # 启动时的进程数(根据负载调整)
    MinSpareServers          5       # 最小空闲进程数(避免频繁创建进程)
    MaxSpareServers         10       # 最大空闲进程数(避免内存浪费)
    MaxRequestWorkers      150       # 最大并发进程数(关键参数,需匹配内存容量)
    MaxConnectionsPerChild 1000      # 每个进程处理的请求数(防内存泄漏)
</IfModule>

3. 优化KeepAlive设置

KeepAlive可减少TCP连接开销,但会增加内存占用(长连接保持进程/线程活跃)。调整以下参数:

KeepAlive On                     # 启用KeepAlive
MaxKeepAliveRequests    100      # 每个连接的最大请求数(避免单个连接占用过久)
KeepAliveTimeout        5        # 连接保持时间(秒,建议5~10秒)

注:若网站静态资源多(如图片、CSS),可适当增大MaxKeepAliveRequests;若动态请求多,建议缩短KeepAliveTimeout

三、辅助优化:减少内存占用的其他措施

1. 禁用不必要的模块

Apache默认加载大量模块,禁用未使用的模块可释放内存。执行以下命令查看已加载模块:

httpd -M  # 或 apachectl -M

禁用模块(如statusautoindex):

LoadModule status_module modules/mod_status.so  # 注释掉此行(在配置文件中)

2. 启用缓存模块

通过缓存静态资源(HTML、CSS、JS)减少重复请求,降低内存负载:

# 启用mod_cache和mod_disk_cache
LoadModule cache_module modules/mod_cache.so
LoadModule cache_disk_module modules/mod_disk_cache.so

# 配置缓存路径和大小
CacheEnable disk /
CacheRoot "/var/cache/apache2"
CacheDirLevels 2
CacheDirLength 1

3. 调整内核参数(可选)

通过修改内核参数优化内存管理:

# 降低vm.swappiness(减少Swap使用,优先用物理内存)
echo "vm.swappiness=10" >> /etc/sysctl.conf
sysctl -p

# 允许内存过量使用(避免OOM Killer频繁终止进程)
echo "vm.overcommit_memory=1" >> /etc/sysctl.conf
sysctl -p

四、应用更改与持续监控

注意事项

0
看了该问题的人还看了