momo's Blog.

页面请求一半nginx返回206错误

字数统计: 334阅读时长: 1 min
2020/01/08 Share

1. 背景

浏览器访问页面时,显示failure,页面资源加载了一半,组件没有显示完整。
检查nginx的日志,发现请求资源产生了 206 的返回。

并且在浏览器console 中 报错:

  • Failed to load resource: net::ERR_INCOMPLETE_CHUNKED_ENCODING

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 或者其他 应用的日志,检查没问题后在去排查系统或者代码层面的问题。

CATALOG
  1. 1. 1. 背景
  2. 2. 2. 排查过程
  3. 3. 3. 总结