CentOS系统中的缓存(系统缓存、Web服务器缓存、数据库缓存等)若未合理管理,可能导致网站加载缓慢、内容更新不及时或资源占用过高。以下是针对性的解决方法,覆盖缓存清理、配置优化、监控维护三大类场景:
系统缓存(页面缓存、目录项/inode缓存)虽能提升文件读取速度,但过度占用内存会影响网站服务的响应速度。可通过以下命令清理:
sync命令将未写入磁盘的数据写入存储。echo 3 > /proc/sys/vm/drop_caches,一次性清除页面缓存、目录项缓存和inode缓存(生产环境中建议在低峰期操作)。echo 1 > /proc/sys/vm/drop_caches;echo 2 > /proc/sys/vm/drop_caches。Web服务器(如Nginx、Apache)的缓存会存储静态资源(图片、CSS、JS)或动态内容的副本,若缓存未及时更新,用户可能看到旧版本内容。
/var/cache/nginx,执行rm -rf /var/cache/nginx/*删除所有缓存文件;systemctl restart nginx;ngx_cache_purge模块(动态清理缓存),可通过PURGE请求清除指定URL缓存(需提前配置)。mod_cache模块的缓存目录(默认路径需查看Apache配置文件中的CacheRoot指令);systemctl restart httpd。Ctrl+Shift+Delete选择“缓存的图片和文件”清除)。数据库(如MySQL、Redis)和应用(如Memcached)的缓存会存储查询结果或会话数据,若缓存数据过期或错误,可能导致网站显示异常。
redis-cli;flushall(慎用,会删除所有数据);del key_name。echo "flush_all" | nc localhost 11211(需安装netcat工具),清除所有缓存。RESET QUERY CACHE清除查询缓存;DISCARD ALL清除所有缓存。合理的缓存配置能平衡“性能提升”与“数据实时性”的矛盾,需根据网站需求调整:
/etc/nginx/conf.d/cache.conf,设置缓存路径、过期时间及缓存条件(如仅缓存静态资源):proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;
server {
location ~* \.(jpg|css|js)$ {
proxy_cache my_cache;
proxy_cache_valid 200 302 10m; # 200/302状态码缓存10分钟
proxy_cache_use_stale error timeout updating;
}
}
systemctl restart nginx。/etc/varnish/default.vcl,设置缓存大小(如backend default { .max_connections = 100; })、后端服务器地址及缓存规则(如sub vcl_backend_response { if (beresp.http.Cache-Control ~ "no-cache") { set beresp.ttl = 0s; } });systemctl start varnish。/etc/sysctl.conf,优化缓存回收策略:vm.swappiness=10 # 减少交换分区使用(值越小越优先使用物理内存)
vm.vfs_cache_pressure=50 # 提高目录项/inode缓存的回收频率(默认100)
sysctl -p。定期监控缓存使用情况,能提前预警内存耗尽、缓存命中率低等问题:
free -h:显示总内存、已用内存、缓存(buff/cache)及可用内存;vmstat 1:查看虚拟内存统计信息(cache列表示文件缓存总量,si/so列表示交换分区读写量)。$upstream_cache_status变量记录缓存命中状态(HIT/MISS/EXPIRED),在日志中分析命中率;varnishstat命令查看cache_hit、cache_miss等指标。logrotate管理日志文件(如/etc/logrotate.conf中设置rotate 7保留7天日志),避免日志过大占用缓存;通过以上方法,可有效解决CentOS缓存导致的网站问题。需根据实际场景选择合适的方案(如网站更新频繁则加强Web缓存清理,数据库查询慢则优化数据库缓存配置),并在操作前备份关键数据,避免误操作影响服务稳定性。