温馨提示×

如何利用ubuntu缓存加速应用

小樊
31
2025-12-10 05:36:50
栏目: 智能运维

Ubuntu 缓存加速应用的实用方案

一 应用层缓存

  • Redis:适合做对象缓存、会话存储与通用键值缓存。安装与启用:sudo apt-get install redis-server,启动:sudo systemctl start redis-server && sudo systemctl enable redis-server。在 PHP 中使用:安装扩展 sudo apt-get install php-redis,在代码里连接 127.0.0.1:6379 进行 set/get 缓存。
  • Memcached:面向高性能分布式对象缓存,常用于减轻数据库压力。安装与启用:sudo apt-get install memcached,配置 /etc/memcached.conf(如内存 -m 1024),重启服务;在 PHP 中安装 php-memcached 扩展并使用。
  • HTTP 层缓存:在 Nginx 侧启用反向代理缓存,示例:在 http 块配置 proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m;在 server/location 中使用 proxy_cache my_cache; proxy_cache_valid 200 1h; 实现页面与接口结果的二级加速。
  • PHP 运行缓存:启用 OPcache(PHP 5.5+ 内置),在对应 php.ini(如 /etc/php/7.x/fpm/php.ini/etc/php/7.x/apache2/php.ini)中设置:
    opcache.enable=1
    opcache.memory_consumption=128
    opcache.interned_strings_buffer=8
    opcache.max_accelerated_files=4000
    opcache.revalidate_freq=60
    修改后重启 ApachePHP-FPM
  • Varnish:专业的 HTTP 反向代理缓存,适合全页或片段缓存。安装:sudo apt-get install varnish;默认监听 6081,将后端设为应用端口(如 8080),在 /etc/varnish/default.vcl 中配置 backend 与缓存规则,然后重启服务。

二 数据与编译缓存

  • 数据库查询结果缓存:将热点数据放入 Redis/Memcached,对高并发读场景(如首页、配置、字典)设置合理 TTL,对强一致的数据(如价格、库存)缩短或禁用缓存,并在写入时主动 delete/invalidate 相关键。
  • 编译缓存:使用 ccachesccache 缓存编译产物,显著加速 C/C++/Rust 等项目的重复构建。
  • 包管理缓存:定期清理无用包文件,释放磁盘并保持系统整洁:sudo apt-get autocleansudo apt-get cleansudo apt autoremove

三 系统与网络层缓存

  • DNS 缓存:部署 dnsmasq 提供本地解析缓存,配置 cache-mem 512 并重启服务,降低 DNS 往返时间;需要时可用 sudo systemd-resolve --flush-caches 刷新解析缓存。
  • 内核与 I/O:适度降低 vm.swappiness(如设为 10)以减少换页;为 SSD 选择更合适的 I/O 调度器(如 noopdeadline),提升磁盘访问效率。
  • 文件系统缓存:**Linux 页缓存(Page Cache)**会自动缓存频繁访问的文件数据,通常无需手动清理;仅在特殊场景(如基准测试)下才使用 sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches 释放缓存。
  • 浏览器与 CDN:为静态资源设置 Cache-Control: max-age=31536000 等强缓存头;使用 CDN 分发静态资源,并优先选择支持 Brotli 压缩(相较 Gzip 体积可再降约 20%)的厂商,进一步缩短用户首包时间。

四 落地配置示例

  • Nginx + Redis 二级缓存(面向 API/页面)
    1. 安装组件:sudo apt-get install nginx redis-server php-redis
    2. 配置 Nginx
      • http 块加入:
        proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m;
      • server/location 加入:
        proxy_cache my_cache; proxy_cache_valid 200 1h; proxy_pass http://127.0.0.1:8080;
    3. 在应用(如 PHP)中对热点数据写入 Redis,设置 TTL
    4. 重启 NginxPHP-FPM,通过浏览器与日志验证命中率与响应时间。
  • PHP 应用层加速(OPcache + Redis/Memcached)
    1. 启用 OPcache(见上文关键参数);
    2. 安装并启用 Redis/Memcached 扩展;
    3. 在业务代码中对数据库查询结果、页面片段、会话等进行 TTL 缓存与主动失效;
    4. 重启 Apache/PHP-FPM 并压测对比 QPSP95 延迟。

五 监控与注意事项

  • 监控与调优:使用 top/htop、vmstat、iostat 观察 CPU、内存、I/O 与缓存命中情况;根据瓶颈调整 Redis/Memcached 内存、连接数、键过期策略与 Nginx 缓存路径/大小。
  • 缓存策略:遵循 Cache-Aside 模式,写穿/失效策略要覆盖“更新即失效”的场景;对强一致数据使用短 TTL 或旁路缓存。
  • 变更与回滚:上线缓存策略时灰度发布,保留“跳过缓存”的应急开关,便于快速回滚。
  • 风险提示:修改 sysctl/vm.drop_caches 与 I/O 调度器前请评估业务影响并做好备份;生产环境不建议频繁清理 Page Cache。

0