我在 Apache 上部署了一个 mod_wsgi 应用程序,并且有一个使用 Curl 的客户端程序。
在用户端的 CURL api 上,我让它尝试重用连接,但是查看来自 wireshark 的连接,我看到对于每个 HTTP 请求/响应,都会建立一个新连接。
在每个 HTTP 请求结束时,HTTP 响应标头都有“Connection: Close”
这和Keep-Alive一样吗?我需要在 Apache/Mod_wsgi 端做什么来启用连接重用?
我在 Apache 上部署了一个 mod_wsgi 应用程序,并且有一个使用 Curl 的客户端程序。
在用户端的 CURL api 上,我让它尝试重用连接,但是查看来自 wireshark 的连接,我看到对于每个 HTTP 请求/响应,都会建立一个新连接。
在每个 HTTP 请求结束时,HTTP 响应标头都有“Connection: Close”
这和Keep-Alive一样吗?我需要在 Apache/Mod_wsgi 端做什么来启用连接重用?
您通常不需要对 Apache 执行任何操作,因为默认情况下通常会启用对保持活动连接的支持。查看 Apache 配置中的 KeepAlive 指令以确定它的设置。
最重要的是,为了使连接保持活动状态,WSGI 应用程序必须在响应中设置内容长度,或者为响应返回一个列表,其中列表只包含一个字符串。在后一种情况下,mod_wsgi 将自动为响应添加内容长度。响应通常也需要是成功的响应,因为大多数错误响应都会导致连接关闭。
即使完成了所有这些,问题在于 curl 获取多个 URL 的能力是否甚至利用了保持活动连接。显然,curl 的单独调用将无法实现,因此您甚至问这个问题表明您正在尝试使用 curl 的该功能。如果您使用链接到 libcurl 的自定义客户端并使用它的库,那么只有其他选择,所以您的意思是 libcurl。
请注意,如果通过代理访问 Apache,则代理可能无法实现保持活动状态,从而使整个机制停止工作。
要提供更多信息,需要了解您如何使用 curl。