Главная
Главная Руководства FreeBSD › memcached на FreeBSD



Автор:

Статья опубликована: 2017-06-21 22:47:50
Последние правки: 2017-07-09 14:34:35

Устанавливаем и настраиваем кеширующий сервер memcached.

  • Исходные данные
    # uname -sr
    FreeBSD 10.3-RELEASE-p16
    # pkg info | grep memcached
    memcached-1.4.34_2             High-performance distributed memory object cache system
    

  • Установка
    # cd /usr/ports/databases/memcached
    # make install clean
    
    Конфигурация при установке:
    [ ] DOCS  Build and/or install documentation
    [ ] SASL  Enable SASL Authentication
    

  • Настройка и запуск
    Добавляем строки в /etc/rc.conf:
    memcached_enable="YES"
    memcached_flags="-l 127.0.0.1 -m 1024"
    
    - сервер принимает соединения на ip 127.0.0.1
    - максимально используется 1 гигабайт памяти
    - стандартный порт = 11211, другой порт можно задать через ключ -p

    Через сокет запросы выполняются гораздо быстрее:
    memcached_enable="YES"
    memcached_flags="-s /tmp/memcached.sock -a 0777 -m 1024"
    
    -a 0777 : задаем права доступа к /tmp/memcached.sock

    Запускаем:
    # /usr/local/etc/rc.d/memcached start
    

  • Мониторинг
    Один из вариантов мониторинга: mrtg.
    Блок для добавления в mrtg.cfg:
    Target[memcached]: `/usr/local/bin/mrtg-memcached.pl /tmp/memcached.sock`
    Options[memcached]: unknaszero,nopercent
    YLegend[memcached]: Requests per Second
    ShortLegend[memcached]: r/s
    LegendI[memcached]: All
    LegendO[memcached]: Misses
    
    Скрипт на perl для получения статистики из memcached и отдачи в mrtg, /usr/local/bin/mrtg-memcached.pl
    #!/usr/bin/perl
    use strict;
    use Cache::Memcached;
    
    my $memd = new Cache::Memcached { 'servers' => [ $ARGV[0] ] };
    my $stats = $memd->stats('misc')->{total};
    
    print $stats->{get_hits},"\n";
    print $stats->{get_misses},"\n";
    print $stats->{uptime},"\n";                                                                                                                                                                    
                                                                                                                                                                                                    
    exit;
    
    Мы выводим два параметра:
    - get_hits : (зеленый) сколько раз обратились за данными к кешу
    - get_misses : (синий) количество неудачных попыток (данных в кеше не было или время их жизни истекло)

    Эффективность кэша определяется как отношение get_misses/get_hits. Если оно равно 1, то эфективность, увы, никакая.