首页主机资讯centos lamp缓存策略优化

centos lamp缓存策略优化

时间2025-11-20 17:54:03发布访客分类主机资讯浏览860
导读:CentOS LAMP缓存策略优化 一 分层缓存总体策略 建议采用自上而下的多层缓存体系: 浏览器缓存:通过 mod_expires 设置资源 Cache-Control/Expires,对静态资源设置较长有效期,对HTML按业务可适度...

CentOS LAMP缓存策略优化

一 分层缓存总体策略

  • 建议采用自上而下的多层缓存体系:
    1. 浏览器缓存:通过 mod_expires 设置资源 Cache-Control/Expires,对静态资源设置较长有效期,对HTML按业务可适度缓存。
    2. 页面/反向代理缓存:在 Apache 前部署 VarnishNginx 作为反向代理,缓存可公开缓存的页面与接口响应。
    3. 应用层数据缓存:使用 APCu(本地用户态缓存)与 Memcached/Redis(分布式对象/会话/页面片段缓存)。
    4. PHP字节码缓存:启用 OPcache,避免重复解析编译。
    5. 数据库缓存:优先调大 InnoDB Buffer Pool,在新版本中避免依赖查询缓存(多数版本已弃用/移除)。
    6. 连接与I/O优化:启用 mod_deflate(GZIP) 压缩;静态资源使用 noatime 挂载;必要时使用 CDN 承接热点静态资源。
      以上策略在 CentOS 的 LAMP 环境中均可通过常用模块与组件落地,组合使用能显著降低后端负载与响应时延。

二 Apache HTTP Server 缓存配置

  • 启用模块与压缩:安装并启用 mod_cache、mod_cache_disk、mod_expires、mod_deflate,对文本类资源开启压缩,减少传输体积。
  • 浏览器缓存示例(/etc/httpd/conf.d/expires.conf):
    <
        IfModule mod_expires.c>
        
        ExpiresActive On
        ExpiresByType text/html       "access plus 1 hour"
        ExpiresByType text/css        "access plus 1 week"
        ExpiresByType application/javascript "access plus 1 week"
        ExpiresByType image/png       "access plus 1 month"
        ExpiresByType image/jpg       "access plus 1 month"
    <
        /IfModule>
        
    
    <
        IfModule mod_deflate.c>
        
        AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/json
    <
        /IfModule>
        
    
  • 页面/反向代理缓存示例(/etc/httpd/conf.d/cache.conf,使用磁盘缓存):
    <
        IfModule mod_cache.c>
        
        <
        IfModule mod_cache_disk.c>
        
            CacheRoot "/var/cache/httpd/mod_cache_disk"
            CacheEnable disk /
            CacheDirLevels 2
            CacheDirLength 1
        <
        /IfModule>
        
    <
        /IfModule>
        
    
  • 高并发建议:将 Apache 切换为 mpm_event 并与 PHP-FPM 配合(通过 mod_proxy_fcgi),事件驱动更省连接与内存,适合与 Varnish/Nginx 前置配合。

三 PHP 层缓存配置

  • OPcache(php.ini 或 /etc/php.d/10-opcache.ini):
    [opcache]
    zend_extension=opcache.so
    opcache.enable=1
    opcache.memory_consumption=128
    opcache.interned_strings_buffer=8
    opcache.max_accelerated_files=10000
    opcache.validate_timestamps=1
    opcache.revalidate_freq=60
    opcache.enable_cli=0
    
    说明:开发环境可开启 validate_timestamps 便于热更新;生产环境可按需调整为定时校验以降低开销。
  • APCu(本地用户缓存,适合键值/片段/配置):
    [apcu]
    extension=apcu.so
    apcu.enable_cli=0
    apcu.shm_size=32M
    apcu.ttl=7200
    apcu.user_ttl=7200
    apcu.gc_ttl=3600
    
  • 分布式对象/会话缓存(Memcached 示例):
    ;
     安装:yum install php-pecl-memcached
    [memcached]
    extension=memcached.so
    memcached.sess_consistency=0
    memcached.sess_lock_wait=1500
    memcached.sess_lock_peers=1
    memcached.sess_lock_peers_timeout=5000
    memcached.sess_prefix=phpsess_
    
    如需更高可用与丰富数据结构,可改用 Redis(php-pecl-redis)。

四 MariaDB/MySQL 层缓存配置

  • InnoDB 缓冲池(/etc/my.cnf 或 /etc/mysql/my.cnf):
    [mysqld]
    innodb_buffer_pool_size=1G
    innodb_buffer_pool_instances=8
    innodb_log_file_size=256M
    innodb_log_buffer_size=16M
    
    建议将 innodb_buffer_pool_size 设为可用内存的较大比例(如 50%–70%,视业务与内存总量而定),以缓存热点数据与索引。
  • 查询缓存:在 MySQL 5.7 中已不推荐使用,在 MariaDB 10.1+ 多版本中默认禁用或移除,建议通过应用层缓存与索引优化替代。
  • 其他:结合业务调整 max_connections、连接池与慢查询日志,减少慢查询对缓存命中率与并发的影响。

五 Varnish 与系统层优化要点

  • Varnish 反向代理缓存(/etc/varnish/default.vcl 简化示例):
    backend default {
        
        .host = "127.0.0.1";
        
        .port = "8080";
    
    }
    
    
    sub vcl_recv {
    
        if (req.method == "PURGE") {
        
            return(synth(200, "Purged"));
    
        }
    
        if (req.http.X-Forwarded-Proto == "https") {
        
            set req.http.X-Forwarded-Proto = "https";
    
        }
        
        return(hash);
    
    }
    
    
    sub vcl_backend_response {
    
        if (beresp.http.Content-Type ~ "^(text|application)/") {
        
            unset beresp.http.Set-Cookie;
        
            set beresp.ttl = 1h;
    
        }
        
        return(deliver);
    
    }
        
    
    说明:对可缓存内容设置 beresp.ttl;对带 Set-Cookie 或用户私有内容跳过缓存;按需实现 PURGE 接口与 HTTPS 透传。
  • 系统层与文件系统:
    • 减少交换倾向:vm.swappiness=10;脏页刷写:vm.dirty_background_ratio=5、vm.dirty_ratio=10
    • 挂载选项:为静态资源所在分区使用 noatime,降低元数据写入。
    • 网络(/etc/sysctl.conf 示例):
      net.ipv4.tcp_tw_reuse=1
      net.ipv4.tcp_fin_timeout=30
      net.ipv4.tcp_keepalive_time=1200
      net.ipv4.ip_local_port_range="1024 65535"
      net.core.somaxconn=1024
      net.core.netdev_max_backlog=2000
      
      执行 sysctl -p 使配置生效。
  • 上线前务必:语法检查 apachectl configtest、灰度/压测与监控基线对比,确保缓存策略与业务一致性(如登录态、购物车、A/B 实验等不应被错误缓存)。

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


若转载请注明出处: centos lamp缓存策略优化
本文地址: https://pptw.com/jishu/752253.html
centos定时器与cron的区别 如何在centos上缩小分区

游客 回复需填写必要信息