Инклуд конфигов Sphinx
Операционные системы 24.07.2009
Встала проблема объединения конфигурационных файлов Sphinx'a, погуглив не нашел решения на уровне приложения и решил сделать своё.
Создаем каталог «sphinx», где будем хранить все конфигурационные файлы sphinx'a:
mkdir /usr/local/etc/sphinx
Далее, складываем туда все файлы конфигов с разных хостов, например:
/usr/local/etc/sphinx/adw0rd.ru.conf
/usr/local/etc/sphinx/pyha.ru.conf
/usr/local/etc/sphinx/pyha.ru.conf
и убираем оттуда директивы «indexer» и «searchd».
Теперь, создаем там файлы «indexer.conf» для настройки индексатора и «searchd.conf» для настройки демона сфинкса:
/usr/local/etc/sphinx/indexer.conf
/usr/local/etc/sphinx/searchd.conf
/usr/local/etc/sphinx/searchd.conf
Примерное содержимое файла «indexer.conf»:
indexer
{
mem_limit = 32M
}
{
mem_limit = 32M
}
Примерное содержимое файла «searchd.conf»:
searchd
{
address = 127.0.0.1
port = 3312
log = /var/log/sphinxsearch/searchd.log
query_log = /var/log/sphinxsearch/sphinx-query.log
read_timeout = 5
max_children = 30
pid_file = /var/run/sphinxsearch/searchd.pid
}
{
address = 127.0.0.1
port = 3312
log = /var/log/sphinxsearch/searchd.log
query_log = /var/log/sphinxsearch/sphinx-query.log
read_timeout = 5
max_children = 30
pid_file = /var/run/sphinxsearch/searchd.pid
}
Далее, пишем скрипт, объединяющий наши файлы конфигов:
#!/bin/sh
/bin/cat /usr/local/etc/sphinx/*.conf
/bin/cat /usr/local/etc/sphinx/*.conf
и указываем этот файл как конфигурационный файл сфинкса в «/usr/local/etc/rc.d/sphinxsearch»:
: ${sphinxsearch_conffile="/usr/local/etc/sphinx.conf.sh"}
Примеры использования
Индексация:
indexer --config /usr/local/etc/sphinx.conf.sh --all
indexer --config /usr/local/etc/sphinx.conf.sh --rotate
Запуск демона
searchd --config /usr/local/etc/sphinx.conf.sh
/usr/local/etc/rc.d/sphinxsearch start


А зачем приучать? Можно сделать алиас:
echo 'alias chown="chown -v"' >> ~/.bashrc
Правда на счёт кавычек не уверен, возможно внутренние нужно экранировать.
ты не туда запостил )
и я юзаю csh
отличный совет!
ещё можно переименовать sphinx.conf.sh в sphinx.conf
а конфигурационные файлы называть например searchd.cnf
тогда не прийдётся писать
#searchd --config /usr/local/etc/sphinx.conf.sh
просто #searchd
rtm, ага :)
если у вас запущено много процессов индексации сфинкса я бы делал ллимит на I/O диска
# maximum IO calls per second (for I/O throttling)
max_iops = 40 — 60
и поигрался с параметром sql_ranged_throttle в главном идексе