当前位置: 首页 > 面试题库 >

持久性/ keepalive HTTP与PHP Curl库?

柴英博
2023-03-14
问题内容

我正在使用一个简单的PHP库通过HTTP将文档添加到SOLR索引中。

目前涉及3台服务器:

  1. 运行索引工作的PHP框
  2. 一个数据库框,其中包含要建立索引的数据
  3. solr框。

以每秒80个文档(每秒100万文档)的速度,我注意到PHP和solr盒上的网络接口的中断率异常高(2000 / sec;此外,图形几乎相同-
当中断时率在PHP框上达到峰值,在Solr框上也达到峰值),但在数据库框上却达到峰值(300
/秒)。我想这仅仅是因为我打开并重用了与数据库服务器的单个连接,但是由于Solr客户端库的编写方式,每个Solr请求当前都通过cURL打开了一个新的HTTP连接。

所以,我的问题是:

  1. 可以使用cURL打开一个keepalive会话吗?
  2. 重用连接需要什么?-是否像重用cURL句柄资源一样简单?
  3. 我是否需要设置任何特殊的cURL选项?(例如,强制使用HTTP 1.1?)
  4. 是否存在使用cURL keepalive连接的陷阱?该脚本一次运行数小时;我将能够使用单个连接,还是需要定期重新连接?

问题答案:

cURL PHP文档(curl_setopt)说:

CURLOPT_FORBID_REUSE - TRUE强制连接在完成处理后显式关闭,而不被合并以重用。

所以:

  1. 是的,实际上,默认情况下,只要您重新使用cURL句柄,它就应该重新使用连接。
  2. 默认情况下,cURL自己处理持久连接;如果您需要一些特殊的标题,请检查CURLOPT_HTTPHEADER
  3. 服务器可能会发送保持活动超时(默认情况下,Apache安装为15秒或100个请求,以先到者为准)-但是,当发生这种情况时,cURL只会打开另一个连接。


 类似资料:
  • 问题内容: JPA中的和批注有什么区别?它们可以一起使用吗? 如果 他们可以一起使用吗?还是其中之一就足够了? 问题答案: 表示要保留属性,并且要使用标准映射。它具有允许您指定是否要延迟加载属性以及该属性是否为空的参数。 允许您指定数据库中属性要保留到的列的名称。 如果您指定一个不带另一个,那么您将获得明智的默认行为,因此,除了特殊情况外,通常人们只使用一个。 因此,如果我们想要延迟加载属性并指定

  • EJB 3.0,EJB 2.0中使用的实体bean在很大程度上被持久性机制所取代。 现在,实体bean是一个简单的POJO,它具有与表的映射。 以下是持久性API中的关键角色 - Entity - 表示数据存储记录的持久对象。 可序列化是件好事。 EntityManager - 持久性接口,用于对持久对象(实体)执行添加/删除/更新/查找等数据操作。 它还有助于使用Query接口执行查询。 Per

  • 调用init方法失败;嵌套的异常是javax。坚持不懈PersistenceException:[PersistenceUnit:默认值]无法生成Hibernate SessionFactory 在更换系统中的操作系统后,我遇到了这个异常。在我的应用程序运行MySQL 5.7和java 8之前。现在我把它改成了mySQL 8和java 8。代码没有任何变化。原因一定是什么?? 下面是日志:

  • 我刚开始使用docker,但我不明白一些事情。我只是使用docker-compose来使用PostgreSQL的基本映像,但我不知道如何在杀死docker甚至删除我的本地映像后使db中的数据持久化。这一切都可能吗? 这是我实际的docker-compose.yml: 也许我应该用体积?怎样

  • 我是EE的新手,我正在Weblogic 12c上开发一个应用程序。数据源在管理控制台中测试良好。当EJB试图访问它时,它会抛出这个ClassNotFoundException。我已经做了三个小时的研究,我知道问题是一些jar不在服务器的类路径中,但我不知道是哪一个!!!我正在使用默认的Eclipse Link持久性提供程序并使用MySQL驱动程序。这两个都是用Weblogic打包的(根据Oracl

  • 问题内容: 我正在尝试创建事务管理器,并将其与Hibernate for Oracle一起使用。 我的persistence.xml文件是: 在spring的applicationContext.xml中,我添加了: 但是,当我运行时: 我有一个例外: Hibernate基础文件文件除外。 可能是什么问题呢? Hibernate持久性如何知道引用Spring bean? 问题答案: 持久性提供程序