Como configurar o memcached para usar o soquete unix?

10

Enquanto eu poderia usar o memcached no Debian para usar a porta padrão 11211, mas eu tive muita dificuldade em configurar o socket Unix.

Pelo que li, sei que preciso criar um memcache.socket e adicionar:

-s /path/to/memcache.socket
-a 0766

Para /etc/memcached.conf e comente a porta de conexão e o IP padrão, por exemplo

-p 11211 
-l 127.0.0.1

No entanto, quando eu reinicio o memcached, recebo erros internos do servidor no site do Drupal.

Estou tentando implementar soquetes unix para evitar sobrecarga de TCP / IP e aumentar o desempenho geral do memcached, mas não tenho certeza de quanto ganho de desempenho se pode esperar desse ajuste.

Agradeço suas sugestões ou possivelmente configurações para resolver isso.

    
por alfish 29.09.2012 / 14:41

4 respostas

11

Você pode descobrir que apenas configurar o caminho do soquete não funciona. O Memcached descarta privilégios antes de criar seu soquete, apesar de ter escrito seu PID. É comum colocar o socket em /var/run (por exemplo, como o mysql faz), mas somente o root pode escrever lá, então crie /var/run/memcached e use-o para ninguém, então defina /var/run/memcached/memcached.sock como o caminho do socket. Escrevê-lo para /tmp também funcionaria, mas por sua própria natureza que poderia ser destruído; colá-lo em /var/run é um pouco mais permanente.

Você pode verificar se está funcionando usando o netcat para se conectar a ele:

nc -U /var/run/memcached/memcached.sock

Basta digitar stats no prompt em branco; se estiver funcionando, você terá uma carga de saída.

    
por 05.07.2013 / 10:25
8

Eu acredito que o socket precisará ser mundialmente executável, não gravável. Se você está vendo uma mensagem de aviso do PHP contendo errno = 32 Broken pipe , ajuste a máscara de acesso do Memcached para 0755

-s /path/to/memcache.socket
-a 0755

Verifique também se o daemon do Memcached do Drupal tem a porta TCP de 0 na configuração. Uma porta não configurada será padronizada para 11211 e confundirá a conexão do soquete.

$conf += array(
    'memcache_servers' => array(
        'unix:///path/to/memcache.socket:0'  => 'default',
    )
);
    
por 02.10.2012 / 15:28
6

adicionado ao / etc / default / memcached:

[ ENABLE_MEMCACHED = yes ] && install -d -o memcache -g www-data -m 0770 /var/run/memcached
# or use setfacl and whatever user/group you want
true # because set -e in init-scripts

adicionado ao /etc/memcached.conf:

-s /var/run/memcached/memcached.sock
-a 0666
    
por 28.05.2015 / 06:42
1

Eu testei o aumento de desempenho do uso de soquetes unix memcached, é 33% mais rápido usar soquetes unix em meus testes usando o php cli.

Descobri que é importante adicionar o usuário memcache ao grupo www-data e fornecer as permissões do soquete 775 do unix, dessa forma, tanto o manipulador php quanto o usuário memcache podem executá-lo.

Você pode encontrar os benchmarks e write-up aqui - embora seja para o WordPress, deve funcionar para o Drupal, pois é muito provável que seja um problema de permissões.

    
por 15.09.2016 / 20:12