systemctl list-units --types service
列出所有运行中的服务,禁用不需要的服务(如acpid
、laptop-detect
等),减少后台进程的内存消耗。/etc/sysctl.conf
文件,优化内存管理。关键参数包括:
vm.swappiness=10
(降低Swap倾向,优先使用物理内存);net.core.somaxconn=65535
(提升TCP连接队列长度,减少连接等待);net.ipv4.tcp_fin_timeout=30
(缩短TCP连接关闭后的等待时间)。apt-get remove
删除不常用的工具(如nano
、vim
、man-db
等),释放磁盘空间和内存占用。worker_processes auto;
(自动匹配CPU核心数,避免过多进程浪费内存);worker_connections 1024;
(每个worker的最大并发连接数,根据服务器负载调整,建议1024-4096)。sendfile on;
(使用内核级文件传输,减少用户态与内核态切换);tcp_nopush on;
(配合sendfile
优化数据包发送);keepalive_timeout 65; keepalive_requests 10000;
(复用TCP连接,减少频繁建立/关闭的开销)。server_tokens
(隐藏Nginx版本信息,减少响应头大小);根据需求关闭gzip
压缩(若CPU资源紧张,可牺牲部分压缩率换取内存节省)。static
模式(pm=static
),避免动态创建/销毁进程的开销;pm.max_children
:根据服务器内存计算(公式:(总内存 - 系统预留内存) / 单个PHP进程内存
,单个PHP进程约占用100-300MB),例如2GB内存服务器可设置为5-10
;pm.start_servers
、pm.min_spare_servers
、pm.max_spare_servers
:静态模式下无需设置,动态模式下需根据并发量调整(如start_servers=2
,min_spare=1
,max_spare=3
)。php.ini
,开启opcache.enable=1
,并调整以下参数:
opcache.memory_consumption=128
(OpCache缓存大小,根据PHP脚本数量调整);opcache.interned_strings_buffer=64
(字符串驻留缓存);opcache.max_accelerated_files=10000
(缓存的脚本文件数量);opcache.validate_timestamps=0
(生产环境关闭文件时间戳检查,提升性能)。memory_limit=128M
(防止单个PHP脚本占用过多内存);request_terminate_timeout=30
(超时终止长时间运行的脚本)。innodb_buffer_pool_size
是MySQL内存使用的核心参数,建议设置为物理内存的50%-80%(如4GB内存服务器设置为2-3GB),用于缓存数据和索引,减少磁盘IO。max_connections
根据应用并发需求设置(如100-300),避免过多连接导致内存耗尽;可配合连接池(如ProxySQL
)复用连接,进一步提升效率。query_cache_type=0
,query_cache_size=0
);若以读为主,可设置query_cache_size=64M
,query_cache_type=1
,但需注意缓存失效的开销。slow_query_log=1
,long_query_time=1
(记录执行时间超过1秒的查询),定期分析优化慢查询,减少数据库内存占用。SELECT *
(只查询需要的字段);使用索引优化查询;减少N+1查询(如用JOIN替代循环查询)。pdksh
替代bash
(减少Shell进程内存);选择轻量级CMS(如WordPress Lite)或框架(如Laravel的精简版)。htop
、glances
等工具查看进程内存占用,识别内存泄漏或高消耗进程(如mysqld
、php-fpm
)。Valgrind
工具检测PHP或应用程序的内存泄漏,定位问题代码并修复。pm.max_children
、innodb_buffer_pool_size
),确保内存使用始终处于合理范围。