Elasticsearch percolate производительность
Я использую перколятор (Elasticsearch 2.3.3), и у меня есть ~100 срочных запросов. Когда я перенаправил 1 документ в 1 поток, это заняло ~500 мс:
{u'total': 0, u'took': 452, u'_shards': {u'successful': 12, u'failed': 0, u'total': 12}} TIME 0.467885982513
Есть 4 процессора, поэтому я хочу просочиться в 4 процесса. Но когда я запускаю их, все занимают ~2000 мс:
{u'total': 0, u'took': 1837, u'_shards': {u'successful': 12, u'failed': 0, u'total': 12}} TIME 1.890885982513
Зачем?
Я использую модуль Python Elasticsearch 2.3.0. Я пытался управлять количеством осколков (от 1 до 12), но это тот же результат.
Когда я пытаюсь просочиться в 20 ниток, упругий сдавливает с ошибкой:
RemoteTransportException [[test_node01] [192.168.69.142:9300] [индексы: данные / чтения / просачиваются [с]]]; вложенный: EsRejectedExecutionException[отклонил выполнение org.elasticsearch.transport.TransportService$4@7906d a8a в EsThreadPoolExecutor[percolate, емкость очереди = 1000, org.elasticsearch.common.util.concurrent.EsThreadPoolExec8 = 161 active1 size1 active1 size1 потоков = 16, задач в очереди = 1000, выполненных задач = 156823]]]; Вызывается: EsRejectedExecutionException[отклонено выполнение org.elasticsearch.transport.TransportService$4@7906da8a на EsThreadPoolExecutor[percolate, емкость очереди = 1000, org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor@ 16a1, активный размер пула, размер очереди = 1000 потоков = 16, задач в очереди = 1000, выполненных задач = 156823]]]
Сервер имеет 16 процессоров и 32 ГБ оперативной памяти