首页主机资讯LNMP在Ubuntu上的资源占用情况

LNMP在Ubuntu上的资源占用情况

时间2025-11-21 04:13:04发布访客分类主机资讯浏览488
导读: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
怎样优化Linux PHP-FPM启动速度 Ubuntu LNMP中MySQL如何优化

游客 回复需填写必要信息