您看到的引用计数是预期的,因为
max_clients=1000
,Tornado将缓存并重新使用
1000
pycurl.Curl
instances
,每个
hold a reference
致客户
_curl_header_callback
.你可以用
objgraph.show_backrefs
.
最大客户端数=1000
也就是说,最多并行1000个请求?(我希望它们不是都在同一台服务器上,就像你的例子一样!)
Curl
实例似乎占用了大量内存。
$ /usr/bin/time -v python getter.py
6
207
^C
[...]
Maximum resident set size (kbytes): 4853544
$ LD_LIBRARY_PATH=$PWD/curl-prefix/lib /usr/bin/time -v python getter.py
6
207
^C
[...]
Maximum resident set size (kbytes): 1016084
如果我在OpenSSL后端使用libcurl,结果会更好:
Maximum resident set size (kbytes): 275572
还有其他关于GNUTL内存问题的报告:
curl issue #1086
.
max_clients
,尝试使用用OpenSSL后端构建的较新libcurl。