Я пишу веб-приложение, для которого использую Sphinx для поиска около миллиона документов.
Производительность отличная, типичный запрос занимает всего 0,05 секунды, но если в течение нескольких часов не выполняется никаких запросов, это внезапно занимает гораздо больше времени - до 1000 раз больше для пары запросов, а затем возвращается к нормальному состоянию. Журнал запросов выглядит так:
[Wed Mar 7 17:23:55.937 2012] 0.221 sec
[Wed Mar 7 17:32:00.726 2012] 0.012 sec
[Wed Mar 7 17:32:00.984 2012] 0.052 sec
[Wed Mar 7 17:32:01.416 2012] 0.222 sec
[Thu Mar 8 09:15:10.418 2012] 10.147 sec
[Thu Mar 8 09:16:00.560 2012] 48.262 sec
[Thu Mar 8 09:16:55.429 2012] 54.153 sec
[Thu Mar 8 09:17:54.454 2012] 0.012 sec
[Thu Mar 8 09:17:54.713 2012] 0.052 sec
[Thu Mar 8 09:17:55.141 2012] 0.218 sec
Я предполагаю, что мой занятый сервер обменивается памятью Сфинкса, когда он не используется, или что-то в этом роде.
Как мне решить эту проблему?
Я думал о том, что каждую минуту нужно создавать скриптовые фальшивые запросы, но это выглядит довольно уродливо.