производительность сфинкса после простоя - PullRequest
4 голосов
/ 08 марта 2012

Я пишу веб-приложение, для которого использую 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 

Я предполагаю, что мой занятый сервер обменивается памятью Сфинкса, когда он не используется, или что-то в этом роде.

Как мне решить эту проблему?

Я думал о том, что каждую минуту нужно создавать скриптовые фальшивые запросы, но это выглядит довольно уродливо.

1 Ответ

3 голосов
/ 08 марта 2012

Как быстро диски на этом сервере?

Я представляю это из-за необходимости возвращаться на диск для индексов.При доступе несколько раз ОС кэширует файлы.

Возможно, стоит рассмотреть SSD-диск.Небольшой SSD-диск - достаточно большой для индексов сфинксов - в настоящее время относительно дешев.

Если это действительно перестановка памяти, это также говорит о том, что у вас медленные диски.Но это также кое-что для решения.Можете ли вы добавить больше памяти на сервер?(или даже поместите раздел подкачки на только что установленный диск SSD:)

btw, выясните, происходит ли перестановка с чем-то вроде Munin (или Cacti и т. д.)

...