Nginx Pagespeed模块日志中“Slow write operation on file...”报错的含义及解决方法
Nginx Pagespeed模块日志中“Slow write operation on file...”报错的含义及解决方法
嘿,我来帮你拆解这个问题~首先明确一点:这条日志其实是警告信息,不是致命错误,不会直接导致网站挂掉,但它在提示你Pagespeed模块的缓存写入操作变慢了,咱们一步步来分析:
报错的具体含义
这条日志是说,Pagespeed模块往缓存文件/usr/share/nginx/ngx_pagespeed_cache/...McMo-Art-Tryclops-1-scaled.webp,.tempqfKyZe写入数据的时候,花了61.512毫秒,超过了模块默认的“慢操作”阈值。
默认情况下,Pagespeed的SlowFileLatencyUs参数设置的是10000微秒(也就是10毫秒),只要写入操作耗时超过这个值,就会触发这条警告日志。
可能的原因
出现这种情况,通常和存储或服务器资源有关:
- 存储设备性能拉胯:比如用的是老旧的机械硬盘(HDD),或者磁盘本身IO负载很高(比如其他进程在跑备份、大文件读写);
- 缓存所在磁盘空间不足:磁盘快满的时候,文件系统的写入效率会大幅下降;
- 服务器内存不足:内存不够时系统会启用swap分区(虚拟内存),swap的读写速度比磁盘还慢,间接拖慢缓存写入;
- 缓存路径或文件系统特性:比如缓存目录嵌套太深,或者文件系统本身的性能限制。
解决/优化方法
根据你的实际情况,选合适的方案就行:
1. 调整慢操作阈值(最简单的应急方案)
如果这个警告只是刷屏,没影响网站访问速度,你可以直接把阈值调大,让它不再触发警告。
- 打开Nginx的Pagespeed配置文件(通常在
/etc/nginx/conf.d/pagespeed.conf或者主配置文件里); - 在
pagespeed on;下面添加一行:
这里设置的是100000微秒(100毫秒),你可以根据实际情况调整;pagespeed SlowFileLatencyUs 100000; - 重启Nginx生效:
sudo systemctl restart nginx
2. 优化存储性能(从根源解决)
- 换成SSD:如果现在用的是HDD,换成SSD能直接把磁盘IO速度提升好几倍,缓存写入慢的问题基本就解决了;
- 检查磁盘空间:用
df -h命令查看缓存目录所在分区的使用率,如果超过80%,赶紧清理无用文件或者扩容; - 降低磁盘IO负载:用
iostat -x 1或者top(看%wa列,这个是IO等待占比),如果发现IO等待很高,看看是不是有其他耗IO的进程(比如定时备份、日志归档),把这些任务调整到业务低峰期执行。
3. 优化Pagespeed缓存配置
- 把缓存移到内存文件系统:可以把Pagespeed缓存放到tmpfs(内存挂载的文件系统)里,写入速度会快很多,但要注意tmpfs重启会清空缓存,而且要确保服务器内存足够。
- 先创建缓存目录:
sudo mkdir /dev/shm/ngx_pagespeed_cache && sudo chown www-data:www-data /dev/shm/ngx_pagespeed_cache; - 修改Pagespeed配置:
pagespeed FileCachePath /dev/shm/ngx_pagespeed_cache; - 重启Nginx生效;
- 先创建缓存目录:
- 定期清理过期缓存:Pagespeed默认会自动清理过期缓存,但你可以调整清理频率,比如改成每天清理一次(86400000毫秒=24小时):
pagespeed FileCacheCleanIntervalMs 86400000;
4. 优化服务器资源
- 升级内存:用
free -h查看内存使用情况,如果可用内存很少,考虑升级服务器内存,避免系统依赖swap; - 关闭swap(内存足够时):如果内存够用,直接关掉swap能减少磁盘IO负担,临时关闭用
sudo swapoff -a,永久关闭需要修改/etc/fstab文件,注释掉swap相关的行。
额外提醒
如果这条警告没有导致网站响应变慢,其实也可以不用特意处理,它只是在告诉你缓存写入的性能情况而已。
备注:内容来源于stack exchange,提问作者DanRan




