Краткая история: я не могу запускать более двух одновременных поисков на solr5 (то же самое с 4.10) из одного и того же клиентского процесса. Есть ли какой-либо флаг в файле конфигурации, который я пропустил? Это проверенный факт, что это не проблема с аппаратным обеспечением или проблема с программным обеспечением (клиентом). См. Ниже полную историю.Увеличение Solr search concurrency
Длинная история:
Мне нужно построить слово на основе поисковой системы (поля содержат вообще только одно слово/значение - даже если это поле многозначным, все значения будут только одно слово) и 60-70% поисков без подстановочных знаков. Ожидаемый размер ядра составляет около 50 тыс. Документов со средним значением 20 полей. Ожидается, что коллекция будет обновляться примерно один раз в неделю (возможно, даже меньше), поэтому мне не очень важно время индексирования. Я думаю, мы можем с уверенностью предположить, что писать не будет, просто прочитайте - поэтому мы сможем минимизировать вероятность блокировок и других проблем параллелизма. Кроме того, самый «дорогой» запрос в моем тесте (по времени solr's qtime) составляет около 150. У меня есть партия из 10 килограммовых поисковых запросов и независимо от того, что я делаю, я не могу закончить их менее чем за 5 минут , Независимо от того, сколько потоков я открываю на стороне клиента, независимо от того, какое значение я устанавливаю в файлах конфигурации ... и процессор составляет около 30-40%, только с 30% -ой памятью;
То, что я пробовал:
- solr5 + причал на одноядерном виртуальной машине с 3ГБ оперативной памяти;
- solr5 + причал на двухъядерной виртуальной машине с 6 ГБ оперативной памяти (4 ГБ для Java);
- solr5 + tomcat6 на двухъядерной виртуальной машине с 6 ГБ ОЗУ;
использование netstat -a -n | grep @port
для # 1 и # 2 я видел только 2 активных соединений (Введено) в любой момент времени - но не более, и # 3 У меня был около этих 2 активных соединений других 10-15 в режиме TIME_WAIT (не активен).
Я как-то проиграл в этом ... Я не ниндзя Java, и я не уверен в связанных с Java продуктах и их конфигурации. Я использовал 2 разных контейнера сервлетов с почти той же проблемой. ИМО, очевидно, что кто-то дросселирует активные соединения - и я не знаю, что делать, чтобы узнать, кто и почему.
В качестве побочного примечания - я не уверен, что это важно или нет. Я скопировал один и тот же инструмент на другой машине, одновременно начал тест «стресс» с одним на моей машине, и я заметил, что количество активных соединений удваивается (через netstat), ресурсы немного выше, чем в одномоторном тесте, а время выполнения идентично для обеих машин: 5 минут.
Итак, что мне делать, чтобы удалить этот предел - или, по крайней мере, увеличить его?