Linux manejar la vista de problemas de fugas

  
        

Antecedentes:

Al desarrollar servidores de Linux en línea, a menudo encontramos problemas con las fugas en el manejo. Porque en el diseño del sistema Linux, todo sigue el principio de archivos, es decir, archivos de disco, directorios, sockets de red, discos, tuberías, etc., todos los cuales son archivos. Cuando lo abrimos, devolveremos un fd, que es un archivo. Manejar Si abre un archivo con frecuencia, o abre un socket de red y olvida liberarlo, habrá una fuga en el identificador. En el sistema Linux, el número de identificadores de archivos a los que puede llamar un proceso es limitado. Por defecto, el número máximo de identificadores a los que puede llamar cada proceso es 1024. Si se excede este límite, el proceso no podrá obtener un nuevo identificador, pero causará No puede abrir un nuevo archivo o socket de red, y el servicio será rechazado para el servidor en línea.

Ver y modificar el identificador:

En el sistema Linux, puede ver el número máximo de manejadores por límite de proceso mediante ulimit – n, y modificar el número máximo de manejadores del proceso mediante ulimit – HSn 10240. Cuando el número de manejadores llegue al límite, aparecerá " demasiados archivos abiertos ".

Hay varias formas de ver el número de manejadores ocupados por un proceso:

1) Puede ver el hilo cuyo número pid de hilo está abierto usando cat /proc /pid /fd;

2) Con el comando lsof, los resultados del comando /usr /sbin /lsof-p 21404 son los siguientes:


COMANDO PID USUARIO FD TIPO DISPOSITIVO TAMAÑO NODO NAMEvas 21404 root cwd DIR 8,3 4096 30195729 /home /users /root /vasvas 21404 raíz rtd DIR 8,2 4096 2 /vas 21404 raíz txt REG 8,3 112201650 30195914 /home /users /root /vasvas 21404 raíz mem REG 0,0 0 [heap] (stat: No existe tal archivo o directorio) Vas 21404 raíz mem REG 8,2 105080 339377 /lib64/ld-2.3.4.sovas 21404 raíz mem REG 8,2 1493186 339367 /lib64/tls/libc-2.3.4.sovas 21404 raíz mem REG 8,2 17943 339392 /lib64/libdl-2.3.4.sovas 21404 raíz mem REG 8,2 613297 339369 /lib64/tls/libm-2.3.4.sovas 21404 raíz mem REG 8,2 79336 490463 /usr/lib64/libz.so.1.2 .1.2


COMANDO: Nombre del proceso PID: Identificador del proceso USUARIO: Propietario del proceso FD: Descriptor de archivo, la aplicación identifica el archivo por descriptor de archivo. Como cwd, txt, etc. TIPO: tipo de archivo, como DIR, REG, IPV4, FIEO, etc. DISPOSITIVO: Nombre del disco especificado TAMAÑO: Tamaño del archivo NODE: Nodo de índice (identificación del archivo en el disco) NOMBRE: El nombre exacto del archivo abierto < Br>

Además, el comando lsof también puede ver el proceso que ocupa el puerto:

/usr /sbin /lsof-i: 9001

Copyright © Conocimiento de Windows All Rights Reserved