我将龙卷风中最大AsyncHTTPClients的数量设置为:
AsyncHTTPClient.configure("tornado.curl_httpclient.CurlAsyncHTTPClient",max_clients=2000)如您所见,我正在使用curl_httpclient。假设硬件能够处理更多的客户端,那么操作系统(在本例中是Linux)或libcurl中是否会有其他的软件限制。例如,如果我设置了max_clients=10000,这应该是开箱即用的吗?
另外,如果我有一个运行龙卷风的多个进程,每个进程都使用AsyncHTTPClient,那么每个进程会得到max_clients,还是在所有进程之间共享max_clients号?
更新
好的,文档说明:
如果提供了额外的关键字参数,它们将传递给每个创建的子类实例的构造函数。关键字参数max_clients确定可以在每个IOLoop上并行执行的同步fetch()操作的最大数量。根据正在使用的实现类,可以支持其他参数。
因为每个进程都有自己的IOLoop,所以我猜这意味着每个进程都可以使用到max_clients。
发布于 2017-03-05 23:08:02
您可能还需要增加文件描述符限制。Curl可以使用最多4倍(CURLM_MAXCONNECTS)的文件描述符( max_clients )(除了您的进程可能需要的其他文件描述符之外)。
可能还有特定于您的环境、网络或您正在爬行的站点的其他限制。
https://stackoverflow.com/questions/42568314
复制相似问题