我的路线是获取用户令牌
GET /tokens
平均响应时间约为180ms,响应为json。使用Flask + nginx。
一些请求,响应内容被截断大约33kb,因此JSON格式不正确。一些请求,具有相同的参数,几乎同时,响应可以在216kb左右。
我的问题是,为什么会发生这种情况,为什么这种情况会以不合理的方式发生?
这是烧瓶响应代码
class NormalResponse(Response):
def __init__(self, response):
super(NormalResponse, self).__init__(response, 200)
res = json.dumps(paginator.paginate(tokens))
return NormalResponse(res)
我发现问题与nginx有关,因为失败的响应有这个日志
2018/12/18 16:35:17 [crit] 16#16: *95010 open() "/var/tmp/nginx/uwsgi/1/42/0000000421" failed (13: Permission denied) while reading upstream, client: 172.31.72.76, server: , request: "GET /tokens?limit=501&offset=0&order=desc&owner_id=11111 HTTP/1.1", upstream: "uwsgi://unix:/run/server.socket:", host: "oauth.dev.bla_bla.com"
似乎响应溢出proxy_buffers并尝试暂时将其保存到proxy_temp_path并且您的错误消息确认了它。您应该检查该文件夹上nginx用户的文件权限。
此问题已通过添加解决
RUN chown -R www-data:www-data /var/tmp/nginx
到Dockerfile