Resultados de plugins do mysql Munin inconsistentes, com erro IPC :: Sharelite store (): Identificador removido

3

Eu recentemente configurei um nó munin em um servidor CentOS. Tudo estava funcionando bem até que eu tentei adicionar o plugin do apache (que funciona bem).

Por alguma razão estranha, os plug-ins mysql do munin que costumavam trabalhar deixaram de funcionar ... Estou recebendo um erro estranho sempre que estou executando o plug-in com o munin-run. Por exemplo

munin-run mysql_files_tables

me retorna

IPC::ShareLite store() error: Identifier removed at /usr/lib/perl5/vendor_perl/5.8.8/Cache/SharedMemoryBackend.pm line 156

mas às vezes também retornará

table_open_cache.value 64

Open_files.value 58

Open_tables.value 64

Opened_tables.value 19341

mas depois de um tempo, voltará ao erro anterior.

Eu não tenho nenhum conhecimento sobre o IPC ou a biblioteca ShareLite, então eu realmente não sei se começar a procurar. Como é um módulo relacionado à memória compartilhada, tentei rastrear segmentos de memória compartilhada com ipcs sem muito sucesso.

Ainda não reiniciei a máquina, pois ela é usada em muitos projetos (obviamente, gostaria de poder diagnosticar o problema sem exigir uma reinicialização, se possível).

Alguém já enfrentou esse problema? (uma pesquisa rápida no google não apresentou nenhuma ajuda relevante)

Obrigado pela ajuda!

    
por tomzx 27.09.2013 / 21:27

2 respostas

3

Eu resolvi meu problema, mas ainda não encontrei a causa / origem exata, por isso ainda estou aberto para ouvir os outros.

Basicamente, os plugins mysql do munin são escritos em perl, use o IPC :: ShareLite.

Usando o strace , consegui determinar que o problema é que o aplicativo fica preso em um semop em um ID de semáforo específico. Usando ipcs e ipcrm , consegui remover o semáforo e fazer o plug-in funcionar corretamente novamente.

strace me fornece o semid como o primeiro argumento passado para o semop . Com ipcrm -s semid , eu removo o semáforo do sistema, o que corrige o problema.

Assim, sou levado a acreditar que algo deu errado com o semáforo (talvez a disputa, mas não vejo de que ...).

    
por 03.10.2013 / 04:49
0

Surgiu esse problema há alguns dias. Minha solução foi substituir Cache::SharedMemoryCache com Cache::FileCache em mysql_ plugin, conforme mostrado abaixo:

*** mysql_      2015-12-20 15:13:12.000000000 +0100
--- mysqlnew_   2015-12-20 15:12:43.000000000 +0100
*************** use Munin::Plugin;
*** 143,149 ****
  my $has_cache;

  BEGIN {
!     eval 'require Cache::SharedMemoryCache';
      $has_cache = $@ ? 0 : 1;
  }

--- 143,149 ----
  my $has_cache;

  BEGIN {
!     eval 'require Cache::FileCache';
      $has_cache = $@ ? 0 : 1;
  }

*************** my %cache_options = (
*** 172,178 ****
  my $shared_memory_cache ;
  if ($has_cache)
  {
!   $shared_memory_cache = Cache::SharedMemoryCache->new(\%cache_options)
      or die("Couldn't instantiate SharedMemoryCache");
  }

--- 172,178 ----
  my $shared_memory_cache ;
  if ($has_cache)
  {
!   $shared_memory_cache = Cache::FileCache->new(\%cache_options)
      or die("Couldn't instantiate SharedMemoryCache");
  }
    
por 20.12.2015 / 15:23

Tags