今天一大早线上业务群就爆发了,图片上传展示感叹号!
1.首先说一下图片出现感叹号的原因:是因为前端向后端获取图片输出的时候没获取到图片,系统默认展示感叹号。
从这边就可以看出来问题不在前端这边了,那好,我们看一下后端接口,此时在测试环境试了N多遍,接口正常,没发现问题....
由此就可以排除掉代码问题,那这种情况就见鬼了,后面一想,会不会是线上并发量大导致图片服务器响应超时,结果还是没发现问题,线上环境日志报错
既然前端没问题,后端没问题,图片服务器也没有问题,那会是哪里的问题呢~
这时一个不起眼的家伙冒出来了(nginx)
后面一看果然
至于为什么要改成 root,是因为nobody的对某些文件的读写权限不够,导致接口中断后nginx无法读取到该文件,导致前端没获取到图片
总结:
一个完整的请求:前端 --> nginx --> 后端 --> 图片服务器 --> 后端 --> nginx --> 前端
问题的原因:因为并发量过多且获取图片接口执行时间较长,导致出现阻塞,且nginx读写权 限不够,接口中断后读取nginx缓存图片时读取不到,读写权限要root授权,即 使接口中断,nginx依然能读取到文件,问题完美解决!
其他原因可能导致:1.前端向后端发起请求的时候后端服务挂了
2.后端访问图片服务器,后端超时了,图片服务器正常返回