Мой набор опций для MemcacheQ

Пока MemcacheQ не постигла грустная судьба MemcacheDB, это по-прежнему самая простая, самая удобная и самая быстрая очередь сообщений (заданий). Незаменимая вещь для асинхронной обработки.

В rc.conf помимо memcacheq_enable=YES:
memcacheq_flags = " -s /tmp/memcacheq.sock -a 0777 -H /var/db/memcacheq -d -P /var/run/memcacheq.pid -N -R -L 1024 -B 1024 -u nobody "

Здесь:
-s — путь unix-сокета, -a — его access mask, можно уменьшить до 0700 (default),
-H — путь к базе memcacheq,
-d — запуск демоном и, соответственно, -P — путь к pid,
-N — улучшение производительности,
-R — очистка логов, -L — размер логов,
-B — длина сообщения в очереди,
-u — допустимый пользователь очереди, запущенной рутом.

Можно еще установить -t — число потоков, вероятно лучше по количеству ядер.

Для еще большей производительности я использую в nginx модуль memc:

location ~ /queue/(.*) {
access_log off;
set memc_key $1;
memc_pass unix:/tmp/memcacheq.sock;
}

При пользовании не забываем, что у MemcacheQ всего две команды — set и get. Стало быть, помещаем в конец очереди запросом PUT, забираем из начала запросом GET. Все.

С очередями поаккуратнее, не мусорим, средств очистки нет. Если уже, переключаем коннект на TCP, коннектимся telnet 127.0.0.1 22201 и командой stats queue получаем список всех непустых очередей. Целиком удалиить очередь можно командой delete queue.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *