Ich verwende derzeit den laravel-elasticsearch-Anbieter für meine ES-Abfragen. Ich benutze dies innerhalb eines Jobs, der von meiner Laravel-Queue verarbeitet wird (mit beanstalkd). Das Problem, das ich habe, ist, dass ich in lang laufenden Jobs schließlich nicht mehr in der Lage bin, Daten in elasticsearch einzufügen. Der Job hängt einfach (es werden keine Ausnahmen ausgelöst). Ich habe ihn auf den Code beschränkt, in dem ich einen ES-Aufruf tätige. Ist es möglich, dass meine Verbindung etwas alt wird und sich nicht wieder verbindet? Mein anderer Gedanke ist, dass es etwas damit zu tun hat, eine Fassade zu benutzen, und dass es ein Singleton ist.ElasticSearch-Abfrage hängt in Laravel-Auftragswarteschlange
hier ist, was ich tue, das ist nicht mein genauer Code. aber der Code funktioniert gut, wenn es nicht in einem lang laufenden Job ausgeführt wird.Ich wollte nur einige context.it fügt es gut, es gibt keine Probleme mit dem Code funktioniert, bis es nach einem langen Prozess ausgeführt wird.
UPDATE:
Ich habe das Problem bis auf die Elasticsearch-PHP-Bibliothek verengte eine Verbindung persistierenden. Ich habe meine ES hinter einem Load Balancer, der TCP-Verbindungen nach 5 min. Das Problem ist, dass es in der ES-PHP-Bibliothek keinen Halt gibt. Nach 5 Minuten ist die Verbindung geschlossen, aber sie schließt die Verbindung an meinem Ende nicht. Gibt es eine Möglichkeit, einen keep für elasticsearch-php am Leben zu erhalten? oder ein Anruf zum Zurücksetzen der Verbindung?
//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
sieht aus wie ein Problem mit Job scheitert, anstatt mit ES.behandeln Sie fehlerhafte Jobs? –
Ich bearbeite fehlerhafte Jobs, aber der Job schlägt nicht fehl, er hängt einfach so, als würde er versuchen, ohne Timeout eine Verbindung zum ES herzustellen – arrowill12