Linux como verificar se o descritor de arquivo é liberado

     Como tudo é um arquivo na programação do Linux, como soquetes, arquivos de texto, db, flash, etc., especialmente soquetes no lado do servidor na programação de rede, após três handshake, eles geralmente esquecem de lidar com soquetes, o que acaba levando ao consumo de descritores de arquivo para todo o processo Esgotado; nos programas de gravação do Linux, muitas vezes, encontramos fd esqueça de fechar a situação, também haverá exaustão do descritor de arquivo, os seguintes meios podem ajudá-lo a verificar se o descritor de arquivo esqueceu de fechar.

 

1) No sistema Linux, o número máximo de FDs que podem ser abertos por todos os processos. Declaração de consulta:

/ proc / sys / fs / file-max
2) No sistema Linux, o número de fds que foram abertos por todos os processos e o número máximo permitido. Declaração de consulta:

         [registros root @ localhost] # cat / proc / sys / fs / file-nr

 

2112   0 0  2100000
Número de identificadores de arquivo alocados  Número de identificadores de arquivos usados Número máximo de identificadores de arquivo 

 

 

 

O número de identificadores de arquivo alocados: Se você esquecer de fechar o descritor de arquivo, esse valor continuará aumentando, portanto, preste atenção especial a essa situação ao realizar testes de estresse.

 

Use o idioma c para obter

       

#include <stdio.h>

typedef struct        
{
    unsigned int assigned;/*已分配文件句柄的数目    */      
    unsigned int used;/*文件句柄的最大数目*/ 
    unsigned int total;/*文件句柄的最大数目*/                       
}system_info_fd_t;

static void ptcp_server_get_sys_fd_info(system_info_fd_t *info_fd) 
{
    FILE *fd;          
    char buff[256];   
    fd = fopen ("/proc/sys/fs/file-nr", "r"); 
    fgets (buff, sizeof(buff), fd); 
    sscanf (buff, "%u    %u    %u", &info_fd->assigned, &info_fd->used,&info_fd->total); 
    fclose(fd);    
}

3) O número máximo de FDs que podem ser abertos por um único processo.

ulimit -n
4) Um único processo (por exemplo, por meio de ps -aux para ver se o ID do processo é 655) foi aberto fd.

ls -l / proc / 655 / fd / | wc -l pode ver que o fd continua aumentando, para que você possa confirmar que o processo esqueceu de fechar a descrição do arquivo

 

 

78 artigos originais publicados · 32 elogiados · 120.000 visualizações

Acho que você gosta

Origin blog.csdn.net/caofengtao1314/article/details/104799259
Recomendado
Clasificación