LNMP在Ubuntu上的资源占用情况
导读:LNMP在Ubuntu的资源占用概览与优化要点 一、总体特征 Nginx 采用事件驱动,处理静态资源效率高,内存占用随并发增长较为平缓,是栈中常驻内存较低、CPU开销较小的组件。 MySQL/MariaDB 通常是内存消耗“大头”,关键在...
LNMP在Ubuntu的资源占用概览与优化要点
一、总体特征
- Nginx 采用事件驱动,处理静态资源效率高,内存占用随并发增长较为平缓,是栈中常驻内存较低、CPU开销较小的组件。
- MySQL/MariaDB 通常是内存消耗“大头”,关键在于缓冲池(如 InnoDB Buffer Pool)与查询复杂度;优化后可显著降低CPU与IO。
- PHP-FPM 的内存与CPU占用由进程数与脚本复杂度决定;启用 OPcache 能减少重复编译、显著降低CPU。
- 与 LAMP 相比,LNMP 以 Nginx 替代 Apache,整体更轻量、并发承载能力更强,更适合资源受限或中小规模场景。
二、空载与典型占用参考
- 下表为常见范围(不同版本、扩展与业务差异会导致波动,仅作量级参考):
| 组件 | 空载/低负载 | 中等并发或复杂查询 | 主要影响因素 |
|---|---|---|---|
| Nginx | 约10–50MB 内存;CPU 约1%–5% | 并发上千时内存可能**> 100MB**,CPU 约20%–30% | worker 进程数、连接数、是否启用 gzip |
| MySQL/MariaDB | 约50–100MB 内存 | 随缓冲池与查询负载上升至数百MB–数GB;复杂查询时CPU可达50%+ | innodb_buffer_pool_size、索引与查询复杂度、慢查询 |
| PHP-FPM | 每进程约15–30MB 内存 | 进程数过多导致内存飙升、CPU抖动 | pm.max_children、脚本与扩展开销、是否启用 OPcache |
- 说明:在同等业务下,Nginx 通常显著轻于 Apache;MySQL 的内存占用主要由缓冲池主导;PHP-FPM 进程过多最易造成内存耗尽与频繁换页。
三、影响占用的关键因素
- 并发连接与静态资源:Nginx 的并发处理能力较强,静态文件传输效率高;启用 gzip 可显著降低带宽,但会增加少量CPU负载。
- 数据库缓冲与查询:增大 innodb_buffer_pool_size 能减少磁盘IO、提升吞吐;缺少索引或复杂 JOIN 会显著拉高CPU与IO。
- PHP进程模型与缓存:合理设置 pm.max_children / pm.start_servers / pm.min|max_spare_servers 可避免频繁创建/销毁进程;启用 OPcache 通常可降低CPU约30%–50%。
四、在Ubuntu上的快速检查与定位
- 系统级与进程:
- 实时资源:top/htop;整体资源:free -h、vmstat 1、iostat -x 1、df -h;网络/端口:ss -tulpen。
- 服务状态:systemctl status nginx/mysql/php-fpm;日志定位:/var/log/nginx/error.log、/var/log/mysql/error.log、/var/log/php-fpm/error.log。
- Nginx 与 PHP-FPM 细粒度:
- Nginx 状态页:启用 ngx_http_stub_status_module,访问 /nginx_status 查看活跃连接、请求数等。
- PHP-FPM 状态:启用 pm.status_path,配合 curl 或监控采集器查看进程与排队情况。
- MySQL 细粒度:
- 运行状态:mysqladmin -u root -p status;实时线程与慢查询:SHOW STATUS; SHOW PROCESSLIST; 分析 slow.log。
- 可视化监控:
- 轻量自建:Prometheus + Grafana(Node Exporter 9100、Nginx Exporter 9113、MySQL Exporter 9104;Grafana 3000 端口)。
- 企业级:Zabbix/Nagios/Datadog 等。
五、实用优化建议
- Nginx:
- worker_processes 设为 CPU 核心数;worker_connections 依据并发调至 1024–2048+;启用 sendfile、keepalive、gzip(文本类资源)。
- MySQL:
- 将 innodb_buffer_pool_size 设为总内存的50%–80%(如 8GB 内存可配 4–6GB);为高频查询添加索引、减少全表扫描与复杂 JOIN;开启慢查询日志定位问题。
- PHP-FPM:
- 依据“每进程内存×并发”估算 pm.max_children,避免超过可用内存;按并发曲线设置 pm.start_servers / min|max_spare_servers;开启 OPcache 并合理分配内存。
- 系统与安全:
- 适度提升 ulimit -n(如 65535)避免“Too many open files”;精简不必要服务与扩展,降低常驻占用。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: LNMP在Ubuntu上的资源占用情况
本文地址: https://pptw.com/jishu/752872.html
