Como depurar erros memcached “O SERVIDOR TEM FALHADO E É DESABILITADO ATÉ A RETRIBUIÇÃO TEMPORADA”?

7

Eu tenho uma configuração do memcached de dois servidores. Quando a gravação do memcached falha, recebo uma notificação por email. Cerca de uma vez por dia, o erro "O SERVIDOR FALHA E ESTÁ DESABILITADO ATÉ A REPETIÇÃO TEMPORADA" vem e eu não tenho ideia de como encontrar o motivo.

Estou usando o cliente PHP Memcached.

Eu não estou usando chaves muito longas. Eu tentei adicionar sinalizador -v, mas isso não ajuda, o log permanece vazio.

Se eu incluir a saída de getStats para a notificação de erro, receberei as seguintes informações:

Array
(
    [192.168.0.3:11211] => Array
        (
            [pid] => 28167
            [uptime] => 3671962
            [threads] => 4
            [time] => 1358714713
            [pointer_size] => 64
            [rusage_user_seconds] => 24516
            [rusage_user_microseconds] => 130981
            [rusage_system_seconds] => 86246
            [rusage_system_microseconds] => 675512
            [curr_items] => 1616352
            [total_items] => 118339822
            [limit_maxbytes] => 2684354560
            [curr_connections] => 8
            [total_connections] => 78108681
            [connection_structures] => 356
            [bytes] => 981522779
            [cmd_get] => 1561752945
            [cmd_set] => 158718324
            [get_hits] => 1383072575
            [get_misses] => 178680370
            [evictions] => 0
            [bytes_read] => 138113231690
            [bytes_written] => 1091741700765
            [version] => 1.4.15
        )

    [192.168.0.4:11211] => Array
        (
            [pid] => -1
            [uptime] => 0
            [threads] => 0
            [time] => 0
            [pointer_size] => 0
            [rusage_user_seconds] => 0
            [rusage_user_microseconds] => 0
            [rusage_system_seconds] => 0
            [rusage_system_microseconds] => 0
            [curr_items] => 0
            [total_items] => 0
            [limit_maxbytes] => 0
            [curr_connections] => 0
            [total_connections] => 0
            [connection_structures] => 0
            [bytes] => 0
            [cmd_get] => 0
            [cmd_set] => 0
            [get_hits] => 0
            [get_misses] => 0
            [evictions] => 0
            [bytes_read] => 0
            [bytes_written] => 0
            [version] => 
        )

)
    
por Jevgenij Evll 21.01.2013 / 07:23

4 respostas

4

MEMCACHED_SERVER_TEMPORARILY_DISABLED ou " O SERVIDOR FALHAU E ESTÁ DESABILITADO ATÉ A RETRIÇÃO TEMPORADA " é gerado pela biblioteca libmemcached . Não consigo confirmar como pecl_memcached lida com esse erro, mas imagino que seria tratado como um erro de conectividade padrão. Essa mensagem será emitida quando uma conexão exceder o tempo limite e / ou o limite de novas tentativas. (consulte Opções de E / S )

Naturalmente, como esse é um problema temporário, você deveria arquitetar seu aplicativo PHP para passar para o próximo servidor de cache ou extrair o servidor afetado da lista de servidores.

    
por 21.01.2013 / 18:28
2

No meu caso, desativar a opção de comportamento tcp_nodelay fez com que funcionasse.

Essa parece ser uma opção do pylibmc , que é um wrapper do python em torno do libmemcached , mas a documentação diz que essa opção pertence àquelas diretamente configuráveis em libmemcached .

Para mais informações, consulte pylibmc docs link

    
por 19.05.2016 / 13:46
1

No meu caso, mudei o host local para '127.0.0.1' no meu código. e posso resolver o erro "O SERVIDOR FALHAU E ESTÁ DESABILITADO ATÉ A REPETIÇÃO TEMPORADA"

espero que tenha ajudado

'options' => array(
            'servers' => array('127.0.0.1', 11211),
    
por 13.03.2014 / 11:03
1

No meu caso, o motivo dessa mensagem de erro era um nome de servidor incorreto.

De alguma forma, o código que preparava a string de configuração para uso estava confuso, e um caractere de espaço foi colocado na frente de um dos nomes do servidor memcache. Isso resulta na mensagem de erro mencionada acima ao ler do servidor.

Estou usando o PHP e a extensão Memcached. Adicionando o nome do servidor com o espaço trabalhado sem qualquer reclamação, ou seja, não há validação interna para eles. Eles só são verificados no momento em que uma conexão com o servidor precisa ser feita.

    
por 23.04.2015 / 15:21

Tags