我在《龙卷风》中释放记忆时遇到了一些问题。我的处理程序正在下载大字节文件的一部分,并将其写入响应。但是并行请求越多,使用的内存就越多(这是合乎逻辑的)。但请求结束后,内存就不自由了!在
我的代码:
import tornado.ioloop
import tornado.web
import tornado.gen
from tornado.httpclient import AsyncHTTPClient, HTTPRequest
AsyncHTTPClient.configure("tornado.curl_httpclient.CurlAsyncHTTPClient", max_clients=50)
class MainHandler(tornado.web.RequestHandler):
@tornado.gen.coroutine
def get(self):
url = "http://example.com/big_bytes_file"
request = HTTPRequest(url, headers={'Range': 'bytes=0-1048576'}, method='GET')
client = AsyncHTTPClient()
range_resp = yield client.fetch(request)
self.write(range_resp.body)
def make_app():
return tornado.web.Application([(r"/", MainHandler), ])
if __name__ == "__main__":
app = make_app()
app.listen(5000)
tornado.ioloop.IOLoop.current().start()
我做什么?在
我看到启动应用程序后的内存使用情况(111 MB): memory after start
发送一个请求。内存增加(114 MB):114 MB
从25个用户发送并行请求。内存-123 MB。
从50个用户发送并行请求。内存-153 MB。
从100个用户发送并行请求。内存-205 MB。
等几分钟。内存没有减少。
为什么?:)
例如,我们发送80个用户的请求。在这个记忆增加之后。之后,只有当用户超过80时,内存才会增加。在
目前没有回答
相关问题 更多 >
编程相关推荐