【发布时间】:2015-06-30 23:13:56
【问题描述】:
我目前正在为我的 ES 查询使用laravel-elasticsearch 提供程序。我在我的 laravel 队列(使用 beanstalkd)处理的作业中使用它。我遇到的问题是,在长时间运行的作业中,最终我不再能够将数据插入到弹性搜索中。工作只是挂起(没有抛出异常)我已将其范围缩小到我正在进行 ES 调用的代码。我的连接是否有可能变得陈旧而不重新连接?我的另一个想法是它与使用 Facade 以及它是单例有关。
这就是我正在做的事情,这不是我的确切代码。但是当它不在长时间运行的作业中运行时,代码工作得很好。我只是想提供一些上下文。它插入得很好,代码运行没有问题,直到它在长时间运行过程之后运行。
更新:
我已将问题缩小到保持连接的 elasticsearch-php 库。我的 ES 位于负载均衡器后面,5 分钟后 TCP 连接超时。问题是 ES php 库中没有保持活动状态。 5 分钟后连接关闭,但它并没有关闭我的连接。有没有办法为elasticsearch-php设置保持活动状态?还是来电重置连接?
//run some functions....
$params = array();
$params['body'] = array('somefield' => 'some data');
$params['index'] = 'my_index';
$params['type'] = 'my_type';
$params['id'] = 'my_id';
$ret = Es::update($params);//this is working just fine
//long running function here
$newparams = array();
$newparams['body'] = array('somefield' => 'some data');
$newparams['index'] = 'my_index';
$newparams['type'] = 'my_type';
$newparams['id'] = 'my_id';
$return = Es::update($newparams);//this will just hang
【问题讨论】:
-
看起来像是作业失败而不是 ES 的问题。你在处理失败的工作吗?
-
我正在处理失败的作业,但该作业并没有失败,它只是挂起,好像它正在尝试连接到 ES 而没有超时
标签: php laravel laravel-4 elasticsearch