持久性/ keepalive HTTP与PHP Curl库?
我正在使用一个简单的PHP库通过HTTP将文档添加到SOLR索引中。
目前涉及3台服务器:
- 运行索引工作的PHP框
- 一个数据库框,其中包含要建立索引的数据
- solr框。
以每秒80个文档(每秒100万文档)的速度,我注意到PHP和solr盒上的网络接口的中断率异常高(2000 / sec;此外,图形几乎相同-
当中断时率在PHP框上达到峰值,在Solr框上也达到峰值),但在数据库框上却达到峰值(300
/秒)。我想这仅仅是因为我打开并重用了与数据库服务器的单个连接,但是由于Solr客户端库的编写方式,每个Solr请求当前都通过cURL打开了一个新的HTTP连接。
所以,我的问题是:
- 可以使用cURL打开一个keepalive会话吗?
- 重用连接需要什么?-是否像重用cURL句柄资源一样简单?
- 我是否需要设置任何特殊的cURL选项?(例如,强制使用HTTP 1.1?)
- 是否存在使用cURL keepalive连接的陷阱?该脚本一次运行数小时;我将能够使用单个连接,还是需要定期重新连接?
回答:
cURL PHP文档(curl_setopt)说:
CURLOPT_FORBID_REUSE
-TRUE
强制连接在完成处理后显式关闭,而不被合并以重用。
所以:
- 是的,实际上,默认情况下,只要您重新使用cURL句柄,它就应该重新使用连接。
- 默认情况下,cURL自己处理持久连接;如果您需要一些特殊的标题,请检查CURLOPT_HTTPHEADER
- 服务器可能会发送保持活动超时(默认情况下,Apache安装为15秒或100个请求,以先到者为准)-但是,当发生这种情况时,cURL只会打开另一个连接。
以上是 持久性/ keepalive HTTP与PHP Curl库? 的全部内容, 来源链接: utcz.com/qa/405087.html