Назад | Перейти на главную страницу

Как выбрать подходящее значение max_children для Sphinx?

У нас есть установка Sphinx (2.0.3), работающая в кластере из 3 экземпляров EC2 (в настоящее время m3.large).

В настоящее время у нас есть workers = threads и max_children = 30 в нашем конфиге Sphinx (одинаково на каждой коробке). Мы периодически получаем ужасную «временную ошибку searchd: сервер исчерпан, повторите попытку через секунду». У наших экземпляров загрузка ЦП составляет около 5%. Некоторые примеры верхнего вывода:

top - 19:51:56 up 22:15,  1 user,  load average: 0.08, 0.04, 0.01
Tasks:  82 total,   2 running,  80 sleeping,   0 stopped,   0 zombie
Cpu(s):  1.0%us,  0.0%sy,  0.0%ni, 98.5%id,  0.3%wa,  0.0%hi,  0.0%si,  0.2%st
Mem:   7872040k total,  2911920k used,  4960120k free,   245168k buffers
Swap:        0k total,        0k used,        0k free,  2190992k cached

Все, что в документе Sphinx, кажется, говорит о настройке max_children, это то, что это "полезно для контроля нагрузки на сервер". Во время поиска я нашел сообщение на форуме, в котором указывалось, что он либо слишком высокое или слишком низкое может привести к "максимальной загрузке сервера" - я предполагаю, что первое из-за того, что отдельные запросы не работают, - но не было дополнительных советов по выбору правильного уровня. (Я не могу снова найти ссылку на этот пост, чтобы спасти свою жизнь. Извините.)

Два связанных вопроса: