ubuntu lamp缓存优化策略
导读:Ubuntu LAMP 缓存优化策略 一 分层缓存总体思路 建议采用自下而上的多层缓存: 应用层:PHP 字节码缓存(OPcache)+ 用户数据缓存(APCu/Memcached/Redis)。 Web 层:Apache 页面/对象缓...
Ubuntu LAMP 缓存优化策略
一 分层缓存总体思路
- 建议采用自下而上的多层缓存:
- 应用层:PHP 字节码缓存(OPcache)+ 用户数据缓存(APCu/Memcached/Redis)。
- Web 层:Apache 页面/对象缓存(mod_cache_disk)+ 浏览器缓存(mod_expires)。
- 数据层:MySQL/MariaDB 缓冲池(InnoDB buffer pool)与查询缓存(视版本与负载)。
- 边缘层:静态资源走 CDN,动态内容可叠加 Varnish 反向代理。
- 配合压缩与连接复用(mod_deflate、KeepAlive)可进一步降低带宽与握手开销。
二 Apache 层缓存配置
- 启用模块
- 启用磁盘缓存与过期控制:
sudo a2enmod cache cache_disk expires deflate
- 启用磁盘缓存与过期控制:
- 启用压缩(mod_deflate)
- 建议在虚拟主机或全局配置中加入:
< IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript < /IfModule>
- 建议在虚拟主机或全局配置中加入:
- 浏览器缓存(mod_expires)
- 对静态资源设置长期 Cache-Control/Expires:
< IfModule mod_expires.c> ExpiresActive On ExpiresByType image/jpg "access plus 1 month" ExpiresByType text/css "access plus 1 week" ExpiresByType application/javascript "access plus 1 week" < /IfModule>
- 对静态资源设置长期 Cache-Control/Expires:
- 页面/对象缓存(mod_cache_disk)
- 示例(按目录或虚拟主机启用):
< IfModule mod_cache.c> < IfModule mod_cache_disk.c> CacheRoot "/var/cache/apache2/mod_cache_disk" CacheEnable disk / CacheDirLevels 2 CacheDirLength 1 CacheIgnoreHeaders Set-Cookie CacheMaxExpire 86400 CacheDefaultExpire 3600 < /IfModule> < /IfModule>
- 示例(按目录或虚拟主机启用):
- 验证与生效
- 检查模块:
apache2ctl -M | egrep 'cache|disk_cache|expires|deflate' - 重载生效:
sudo systemctl reload apache2
- 检查模块:
- 可选:高并发场景优先使用 MPM Event 并配合 KeepAlive,以提升连接复用与吞吐。
三 PHP 层缓存配置
- OPcache(字节码缓存,PHP 5.5+ 内置)
- 建议基础配置(php.ini):
[opcache] opcache.enable=1 opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10000 opcache.revalidate_freq=60 opcache.fast_shutdown=1
- 建议基础配置(php.ini):
- APCu(用户数据缓存,适合 WordPress 等对象/查询结果缓存)
- 安装:
sudo apt-get install php-apcu - 启用后在 php.ini 加入:
extension=apcu.so - 应用侧使用 APCu 存储频繁读取的数据(如配置、片段、计算结果)。
- 安装:
- 分布式对象缓存(Memcached/Redis)
- Memcached:
sudo apt-get install php-memcached memcached,配置-m与-l后重启服务。 - Redis:
sudo apt-get install php-redis,在应用/框架中配置连接 127.0.0.1:6379。
- Memcached:
- 说明:传统 APC 已不再维护,PHP 7+ 推荐使用 OPcache + APCu 的组合。
四 MySQL MariaDB 层缓存优化
- InnoDB 缓冲池(核心)
- 将大部分可用内存分配给 InnoDB 数据/索引缓存(需为系统与其他进程预留内存):
- 示例:
innodb_buffer_pool_size=1G(在 my.cnf 的 [mysqld] 段)。
- 示例:
- 将大部分可用内存分配给 InnoDB 数据/索引缓存(需为系统与其他进程预留内存):
- 查询缓存(视版本与负载)
- 对读多写少、结果集稳定的场景可开启:
- 示例:
query_cache_type=1、query_cache_size=64M(注意高并发写入时可能带来锁争用)。
- 示例:
- 对读多写少、结果集稳定的场景可开启:
- MyISAM 场景(如仍在使用)
- 可设置键缓存:
key_buffer_size=256M(示例值),并合理调整会话级缓冲区,避免过大导致内存浪费。
- 可设置键缓存:
- 其他常用项(按负载调优)
innodb_log_file_size、innodb_flush_log_at_trx_commit等参数结合持久性与吞吐目标权衡。
- 建议:优先保障 InnoDB 缓冲池命中率,查询缓存仅作为补充手段。
五 边缘层与运维实践
- 边缘缓存与网络优化
- 静态资源使用 CDN 分发,动态内容可前置 Varnish 做反向代理缓存。
- 启用 HTTP/2(若使用支持 HTTP/2 的前端或反向代理)以多路复用提升加载速度。
- 监控与维护
- 定期清理/重建缓存目录(如磁盘缓存)、更新系统与组件、观察命中率与慢查询。
- 低内存服务器要点(≤512MB)
- 精简 Apache 模块、降低日志级别、控制 PHP 内存(如
memory_limit=48M)、适度设置 OPcache/APCu 的共享内存,必要时考虑 Varnish 前置与对象缓存。
- 精简 Apache 模块、降低日志级别、控制 PHP 内存(如
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu lamp缓存优化策略
本文地址: https://pptw.com/jishu/766254.html
