Come rilevare blocchi di file eccezionalmente lunghi in Linux?

Ho un punto di contesa sul mio server linux. Uno dei numerosi processi accede a un singolo file e blocca il file ad un tempo random per un periodo considerevole (> 60 secondi) che, a sua volta, causa altre cose a fallire.

C'è un modo per rilevare quanto tempo un file è stato bloccato e da quale process?

  • Linux in una piccola impresa
  • Linux raid10 su 2 dischi
  • tcpdump: out.pcap: Permesso negato
  • Come faccio a sapere se la mia casella Linux è stata infiltrata?
  • Il client DHCP su Linux sembra non aggiornare Windows AD DNS
  • Elenco di tutti i moduli del kernel compilati tra due alberi?
  • Identificare la modifica al livello del block di disco
  • Come verificare se un process non blocca in Linux senza utilizzare un tracciatore di stack?
  • Il calamaro non blocca SSTT HTTPS correttamente
  • Blocca la navigazione tunneling con ssh nella mia LAN
  • 2 Solutions collect form web for “Come rilevare blocchi di file eccezionalmente lunghi in Linux?”

    Penso che quello che stai cercando è il file /proc/locks . Mostra i blocchi di file correnti nel sistema. Questo non mostra quanto tempo un file è stato bloccato , ma mostra quale process . Forse è ansible rilevare quando il block è registrato in questo file e misurare il tempo trascorso. Un esempio è questo:

     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 

    Dove le colonne sono:

    • Primo : blocca #.
    • Secondo : tipo di block (POSIX se la serratura è stata creata con fcntl e FLOCK se creata con flock .
    • Terzo : modalità di block (AVVISO o OBBLIGATORIO)
    • In seguito : tipo di block (WRITE o READ), corrispondente a blocchi condivisi o esclusivi.
    • Quinto : PID del process con la serratura.
    • Sesto : Tre numbers separati da : identificati il ​​file bloccato.
    • Settimo : Inizia il byte della serratura.
    • Ottavo: fine byte della serratura

    Potete sapere come vecchio un file di block è semplicemente guardando il timestamp quando è stato creato. Allo stesso modo, se si "gatto logfile.name" avrà molto spesso, come unico contenuto, l'ID di process che lo ha creato.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.