Суть проблемы такова, может кто-то сталкивался.
Был на версии 2.2.10, решил перейти на 3.0.3. Заметил гигантские изменения, например при одинаковом количестве записей в БД конечный размер индекса на 3-ей версии в два раза меньше чем на 2-ой версии. Обрадовался я, но когда дошел момент вытягивания данных из нового Sphinx'а, настало полное разочарование.
С самим поиском вроде бы никаких проблем, но весь трабл в другом. На моем сайте есть поддержка пагинации с 1-ой страницы до самой последней. Т.е пользователь может взять и перейти в самую последнюю страницу либо на другую любую. Не спрашивайте зачем, долгая история, так надо. Чтобы скакать по всем страницам делал я на версии 2 так:
$cl->SetLimits(($page - 1) * $perPage, $perPage, 500000); // 500k это с запасом
И собственно пустой запрос чтобы получить последние записи (есть еще сортировка по ID в порядке убывания, опустим это):
$result = $cl->Query('', 'articles delta');
Вся проблема лежит именно в SetLimits. Выставляя max_matches с запасом для Sphinx 2 (в противном случае в конец, даже в центр никогда не попадет) вообще никаких проблем не создает. Запросы выполняются мгновенно, все как надо (в индексе записей кстати больше 200k). Но вот в 3-ей версии такая штука не проходит, т.е оно работает но новый Sphinx при одном только таком запросе сжирает всю RAM на сервере и все доходит в итоге до того, что OOM killer его сносит.
С дефолтным max_matches который равен 1000 все работает хорошо и быстро, можно конечно увеличивать его, но сколько RAM хватит.
Что делать-то? Уже второй день в поиске. Убирать фичу с сайта не очень хочется.