1. 背景
浏览器访问页面时,显示failure,页面资源加载了一半,组件没有显示完整。
检查nginx的日志,发现请求资源产生了 206 的返回。
并且在浏览器console 中 报错:
2. 排查过程
- 检查nginx报错
1
2020/01/08 07:49:07 [crit] 16651#0: *4230 open() "/var/lib/nginx/tmp/fastcgi/9/09/0000000099" failed (13: Permission denied)
发现是权限问题,php-fpm,nginx 运行用户不一样导致,调整后恢复正常。
- 问题原因
当代理文件大小超过配置的proxy_temp_file_write_size值时,nginx会将文件写入到临时目录下(默认为/proxy_temp)
如果nginx中/proxy_temp过大或者没有权限,就写不进去。
- 问题优化
问题解决以后,虽然能正常获取页面内容,不过因为服务器在中东导致获取资源的速度太慢
如图:
可以看到,446kb的内容获取了1.2分钟,查看响应headers发现未开启gzip压缩
在nginx http配置中添加字段
- gzip on;
开启后速度如下图
内容压缩至66kb,时间在1.75s
3. 总结
排查问题,优先检查架构层面的日志,如nginx error以及 php-fpm 或者其他 应用的日志,检查没问题后在去排查系统或者代码层面的问题。