简单说一下噶,我做了一个自动更新app资源文件的简单系统,刚开始测试的时候,效果非常理想。大概稳定运行了一周,突然API就访问访问不了了,打开日志一看,too many open files *n,当时人麻了,没办法只能重启服务了,重启之后,半个小时又开始了,于是我在网上找办法。
第一种(不适用)ulimit -n
查看系统限制,查询结果:
65535
这几乎没有扩展的意义了,扩展也是自己骗自己。早晚得重启服务,但像我这种懒人,这不可能。
于是又开始找,当我看到了流式下载这篇文章,改上去后感觉没啥效果,但是相对于flask自带得send_file()多了不少操作空间。但是效果仍然不是很理想,内存到74m必须被安排 TMOF。
最后直到我无意间看见了HTTP文档之后,发现HTTP/1.1是默认保存连接的,HTTP/1.0是默认关闭的。我就大概知道应该是了。
当我把响应中添加上Connection=close
from flask import make_response
@route("/",methods=["get"])
def index():
res = {
"code":200,
"msg":"成功"
}
response = make_response(jsonify(res))
response.headers["Connection"] = "close" #添加的
response.headers["Content-Type"] = "application/json"
return response
完成后经过测试,突破了74m,稳定在94.31m。服务再也没崩过了。
最后的最后感谢您的阅读,希望对您有所帮助。
第一次写博客,有不妥的地方望能斧正。



