首页主机资讯centos lnmp资源限制设置

centos lnmp资源限制设置

时间2025-10-30 21:16:03发布访客分类主机资讯浏览612
导读:CentOS LNMP资源限制设置指南 LNMP(Linux+Nginx+MySQL+PHP)架构在高并发场景下,资源限制(如文件描述符、进程数、内存等)是影响稳定性的关键因素。以下从系统级、Nginx、PHP-FPM/PHP、MySQL四...

CentOS LNMP资源限制设置指南
LNMP(Linux+Nginx+MySQL+PHP)架构在高并发场景下,资源限制(如文件描述符、进程数、内存等)是影响稳定性的关键因素。以下从系统级NginxPHP-FPM/PHPMySQL四个核心组件,梳理资源限制的设置方法:

一、系统级资源限制设置

系统级限制是组件配置的基础,需先调整以确保组件配置生效。

1. 文件描述符限制(nofile)

文件描述符用于管理打开的文件、套接字等资源,高并发下易成为瓶颈。

  • 修改/etc/security/limits.conf(永久生效):
    在文件末尾添加以下内容(适用于所有用户,soft为软限制,hard为硬限制):
    * soft nofile 65535
    * hard nofile 65535
    
  • 修改/etc/sysctl.conf(调整系统全局文件描述符上限):
    添加以下内容并执行sysctl -p使配置生效:
    fs.file-max = 2097152
    fs.nr_open = 2097152
    
  • 验证:执行ulimit -n查看当前用户的文件描述符限制。

2. 系统内核参数优化

调整TCP连接参数,提升并发处理能力:

  • 编辑/etc/sysctl.conf,添加以下内容:
    net.ipv4.tcp_max_tw_buckets = 6000  # 减少TIME_WAIT状态连接占用
    net.ipv4.tcp_tw_reuse = 1           # 启用TIME_WAIT连接重用
    net.ipv4.tcp_max_syn_backlog = 65535 # 增加SYN队列长度
    net.core.somaxconn = 65535          # 增加监听队列长度
    
  • 执行sysctl -p使配置生效。

二、Nginx资源限制设置

Nginx作为Web服务器,需调整工作进程、连接数等参数以适应高并发。

1. 工作进程与连接数

  • 编辑/usr/local/nginx/conf/nginx.conf(或/etc/nginx/nginx.conf):
    worker_processes auto;
      # 根据CPU核心数自动设置(如4核则设为4)
    events {
        
        worker_connections 1024;
      # 每个工作进程最大连接数(需小于系统nofile限制)
    }
        
    
  • 说明worker_processes建议设置为CPU核心数的1-2倍;worker_connections需结合系统nofile限制(如worker_processes×worker_connections ≤ nofile)。

2. 文件描述符限制(systemd服务)

若Nginx以systemd方式运行,需修改服务文件:

  • 编辑/etc/systemd/system/nginx.service(或/lib/systemd/system/nginx.service):
    [Service]段添加:
    LimitNOFILE=65535
    
  • 执行以下命令使配置生效:
    systemctl daemon-reload
    systemctl restart nginx
    

三、PHP-FPM/PHP资源限制设置

PHP-FPM负责处理PHP请求,其进程管理和内存限制直接影响PHP性能。

1. PHP-FPM进程管理

  • 编辑/usr/local/php/etc/php-fpm.d/www.conf(或/etc/php-fpm.d/www.conf):
    pm = dynamic  # 动态进程管理模式(推荐)
    pm.max_children = 50  # 最大子进程数(根据内存计算:如每个PHP进程占30MB,2GB内存可设为50-60)
    pm.start_servers = 5  # 启动时的子进程数
    pm.min_spare_servers = 5  # 最小空闲子进程数
    pm.max_spare_servers = 35  # 最大空闲子进程数
    pm.max_requests = 500  # 每个子进程处理500个请求后重启(防止内存泄漏)
    rlimit_files = 10240  # 每个PHP-FPM进程的文件描述符限制(需≥系统nofile限制)
    
  • 说明pm.max_children是关键参数,需根据服务器内存计算(避免内存耗尽);pm.max_requests可防止PHP进程内存泄漏。

2. PHP内存与执行时间限制

  • 编辑/usr/local/php/etc/php.ini
    memory_limit = 256M  # 单个PHP脚本最大内存(根据应用需求调整,如Nextcloud可设为2G)
    max_execution_time = 300  # 脚本最大执行时间(秒,如上传大文件需调整为300)
    max_input_time = 60  # 输入数据最大处理时间
    post_max_size = 16M  # POST请求最大大小(需≥upload_max_filesize)
    upload_max_filesize = 10M  # 单个文件最大上传大小(根据需求调整,如2G)
    
  • 说明memory_limit需与pm.max_children配合(如memory_limit×pm.max_children ≤ 服务器内存)。

3. OPcache加速

启用OPcache缓存PHP脚本编译结果,提升执行速度:

  • 编辑/usr/local/php/etc/php.ini,添加以下内容:
    [opcache]
    zend_extension=opcache.so
    opcache.enable=1
    opcache.memory_consumption=128  # OPcache缓存大小(MB,如128M)
    opcache.interned_strings_buffer=8  # 内部字符串缓存大小(MB)
    opcache.max_accelerated_files=4000  # 缓存的脚本文件数量
    opcache.revalidate_freq=60  # 脚本重新验证频率(秒)
    

四、MySQL资源限制设置

MySQL作为数据库,需调整连接数和文件句柄限制以支持高并发。

1. 连接数与文件句柄

  • 编辑/etc/my.cnf(或/etc/mysql/my.cnf):
    [mysqld]
    max_connections = 500  # 最大连接数(根据应用需求调整,如高并发可设为1000+)
    open_files_limit = 8192  # MySQL能打开的最大文件数(需≥系统nofile限制)
    innodb_buffer_pool_size = 1G  # InnoDB缓冲池大小(建议为服务器内存的50%-80%,如2GB内存设为1G)
    
  • 说明max_connections过高会导致内存耗尽,需结合pm.max_children(PHP-FPM)和Nginx连接数调整;innodb_buffer_pool_size是MySQL性能关键参数,需预留足够内存。

五、验证与监控

  • 验证配置生效
    • 执行ulimit -n查看系统文件描述符限制;
    • 执行nginx -t检查Nginx配置语法;
    • 执行systemctl restart nginx php-fpm mysqld重启服务;
    • 查看PHP-FPM状态:php-fpm -t(测试配置)或systemctl status php-fpm(查看运行状态)。
  • 监控资源使用
    使用tophtopvmstatiostat等工具监控CPU、内存、磁盘I/O使用情况;使用ss -s查看TCP连接数;使用mysqladmin status查看MySQL连接数。

以上设置需根据服务器硬件配置(CPU、内存、磁盘)和应用场景(如高并发上传、复杂查询)进行调整,建议在测试环境中验证后再应用于生产环境。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: centos lnmp资源限制设置
本文地址: https://pptw.com/jishu/739286.html
centos如何查看定时器 centos lnmp模块安装教程

游客 回复需填写必要信息