Como detectar bloqueios de arquivos excepcionalmente longos no linux?

4

Eu tenho um ponto de discórdia no meu servidor linux. Um de vários processos acessa um único arquivo e bloqueia o arquivo em um tempo aleatório por um período considerável (> 60 segundos), o que, por sua vez, faz com que outras coisas falhem.

Existe uma maneira de detectar quanto tempo um arquivo foi bloqueado e por qual processo?

    
por tudor 08.05.2014 / 05:45

2 respostas

3

Acho que o que você está procurando é o arquivo /proc/locks . Mostra os bloqueios de arquivos atuais no sistema. Isso não mostra quanto tempo um arquivo foi bloqueado , mas mostra por qual processo . Talvez você possa detectar quando o bloqueio está registrado neste arquivo e medir o tempo decorrido. Uma amostra é esta:

cat /proc/locks 
1: POSIX  ADVISORY  WRITE 2245 08:06:1182714 1073741824 1073741824
2: POSIX  ADVISORY  WRITE 2245 08:06:1182714 1073741826 1073742335
3: POSIX  ADVISORY  WRITE 3058 08:06:10752740 0 0
4: POSIX  ADVISORY  WRITE 3058 08:06:10752739 0 0
5: POSIX  ADVISORY  WRITE 2421 08:06:10752766 0 EOF
6: POSIX  ADVISORY  WRITE 2421 08:06:11142048 0 EOF
7: POSIX  ADVISORY  WRITE 2421 08:06:9964366 1073741824 1073742335
8: POSIX  ADVISORY  WRITE 2421 08:06:11142040 0 EOF

Onde as colunas são:

  • Primeiro : bloqueie #.
  • Segundo : tipo de bloqueio (POSIX se o bloqueio foi criado com fcntl e FLOCK se criado com flock .
  • Terceiro : modo de bloqueio (ASSESSORIA ou OBRIGATÓRIO)
  • Forth : Tipo de bloqueio (WRITE ou READ), correspondendo a bloqueios compartilhados ou exclusivos.
  • Quinto : PID do processo com o bloqueio.
  • Sexta : Três números separados por : que identificaram o arquivo bloqueado.
  • Sétimo : Inicie o byte do bloqueio.
  • Oitavo: End byte do bloqueio
por 08.05.2014 / 12:25
-2

Você pode dizer quantos anos tem um arquivo de bloqueio simplesmente olhando para o registro de data e hora de quando ele foi criado. Da mesma forma, se você "cat logfile.name", muitas vezes terá, como seu único conteúdo, o ID do processo que o criou.

    
por 08.05.2014 / 06:22