Com controlar l'ús del sistema, les interrupcions i resoldre problemes dels servidors Linux - Part 9


Tot i que Linux és molt fiable, els administradors de sistemes savis haurien de trobar una manera de vigilar el comportament i la utilització del sistema en tot moment. Garantir un temps de funcionament tan proper al 100% com sigui possible i la disponibilitat de recursos són necessitats fonamentals en molts entorns. L'examen de l'estat actual i passat del sistema ens permetrà preveure i, molt probablement, prevenir possibles problemes.

Presentació del programa de certificació de la Fundació Linux

En aquest article presentarem una llista d'algunes eines que estan disponibles a la majoria de distribucions aigües amunt per comprovar l'estat del sistema, analitzar les interrupcions i resoldre problemes en curs. Concretament, de la infinitat de dades disponibles, ens centrarem en la CPU, l'espai d'emmagatzematge i la utilització de la memòria, la gestió bàsica de processos i l'anàlisi de registres.

Ús de l'espai d'emmagatzematge

Hi ha dues ordres conegudes a Linux que s'utilitzen per inspeccionar l'ús de l'espai d'emmagatzematge: df i du.

El primer, df (que significa disc free), s'utilitza normalment per informar de l'ús global d'espai de disc per sistema de fitxers.

Sense opcions, df informa de l'ús d'espai de disc en bytes. Amb la marca -h, mostrarà la mateixa informació utilitzant MB o GB. Tingueu en compte que aquest informe també inclou la mida total de cada sistema de fitxers (en blocs d'1 K), els espais lliures i disponibles i el punt de muntatge de cada dispositiu d'emmagatzematge.

# df
# df -h

Sens dubte, és bo, però hi ha una altra limitació que pot inutilitzar un sistema de fitxers i que s'està quedant sense inodes. Tots els fitxers d'un sistema de fitxers s'assignen a un inode que conté les seves metadades.

# df -hTi

podeu veure la quantitat d'inodes utilitzats i disponibles:

Segons la imatge de dalt, hi ha 146 inodes utilitzats (1%) a /home, el que significa que encara podeu crear fitxers de 226K en aquest sistema de fitxers.

Tingueu en compte que podeu quedar-vos sense espai d'emmagatzematge molt abans de quedar-vos sense inodes, i viceversa. Per aquest motiu, cal controlar no només la utilització de l'espai d'emmagatzematge, sinó també el nombre d'inodes utilitzats pel sistema de fitxers.

Utilitzeu les ordres següents per trobar fitxers o directoris buits (que ocupen 0B) que utilitzen inodes sense cap motiu:

# find  /home -type f -empty
# find  /home -type d -empty

A més, podeu afegir la marca -delete al final de cada ordre si també voleu suprimir aquests fitxers i directoris buits:

# find  /home -type f -empty --delete
# find  /home -type f -empty

El procediment anterior va eliminar 4 fitxers. Tornem a comprovar el nombre de nodes utilitzats/disponibles a /home:

# df -hTi | grep home

Com podeu veure, ara hi ha 142 inodes utilitzats (4 menys que abans).

Si l'ús d'un determinat sistema de fitxers està per sobre d'un percentatge predefinit, podeu utilitzar du (abreviatura d'ús del disc) per esbrinar quins són els fitxers que ocupen més espai.

L'exemple es dóna per a /var, que com podeu veure a la primera imatge de dalt, s'utilitza al 67%.

# du -sch /var/*

Nota: que podeu canviar a qualsevol dels subdirectoris anteriors per esbrinar exactament què hi ha en ells i quant ocupa cada element. A continuació, podeu utilitzar aquesta informació per suprimir alguns fitxers si no són necessaris o ampliar la mida del volum lògic si cal.

Llegiu també

  1. 12 ordres \df útils per comprovar l'espai en disc
  2. 10 ordres du útils per trobar l'ús del disc de fitxers i directoris

Ús de memòria i CPU

L'eina clàssica a Linux que s'utilitza per realitzar una comprovació general de la utilització de la CPU/memòria i la gestió de processos és htop, però m'he conformat amb la part superior perquè s'instal·la de manera immediata a qualsevol distribució de Linux.

Per començar a dalt, simplement escriviu l'ordre següent a la vostra línia d'ordres i premeu Enter.

# top

Examinem una sortida superior típica:

A les files 1 a 5 es mostra la informació següent:

1. L'hora actual (20:41:32) i el temps de funcionament (7 hores i 41 minuts). Només un usuari ha iniciat sessió al sistema i la càrrega mitjana durant els últims 1, 5 i 15 minuts, respectivament. 0,00, 0,01 i 0,05 indiquen que durant aquests intervals de temps, el sistema va estar inactiu durant el 0% del temps (0,00: no hi havia cap procés esperant la CPU), després es va sobrecarregar un 1% (0,01: una mitjana de 0,01 processos). estaven esperant la CPU) i el 5% (0,05). Si és inferior a 0 i com més petit és el nombre (0,65, per exemple), el sistema va estar inactiu durant un 35% durant els últims 1, 5 o 15 minuts, depenent d'on aparegui 0,65.

2. Actualment hi ha 121 processos en execució (podeu veure la llista completa a 6). Només 1 d'ells s'està executant (a dalt en aquest cas, com podeu veure a la columna %CPU) i els 120 restants estan esperant en segon pla però estan \somn i romandran en aquest estat fins que els cridem. Com? Podeu verificar-ho obrint un indicador de mysql i executant un parell de consultes, notareu com augmenta el nombre de processos en execució.

Alternativament, podeu obrir un navegador web i navegar a qualsevol pàgina donada que ofereix Apache i obtindreu el mateix resultat. Per descomptat, aquests exemples suposen que tots dos serveis estan instal·lats al vostre servidor.

3. us (temps d'execució de processos d'usuari amb prioritat no modificada), sy (temps d'execució de processos del nucli), ni (temps d'execució de processos d'usuari amb prioritat modificada), wa (temps d'espera per a la finalització d'E/S), hi (temps dedicat al servei d'interrupcions de maquinari), si (temps dedicat al servei d'interrupcions de programari), st (temps robat de la vm actual per l'hipervisor, només en entorns virtualitzats).

4. Ús de la memòria física.

5. Canvia l'ús de l'espai.

Per inspeccionar la memòria RAM i l'ús d'intercanvi també podeu utilitzar l'ordre free.

# free

Per descomptat, també podeu utilitzar els interruptors -m (MB) o -g (GB) per mostrar la mateixa informació en forma llegible per l'home:

# free -m

De qualsevol manera, cal ser conscient del fet que el nucli reserva la màxima memòria possible i la posa a disposició dels processos quan la sol·liciten. En particular, la línia -/+ buffers/cache mostra els valors reals després de tenir en compte aquesta memòria cau d'E/S.

En altres paraules, la quantitat de memòria utilitzada pels processos i la quantitat disponible per a altres processos (en aquest cas, 232 MB utilitzats i 270 MB disponibles, respectivament). Quan els processos necessiten aquesta memòria, el nucli reduirà automàticament la mida de la memòria cau d'E/S.

Llegiu també: 10 ordres gratuïts útils per comprovar l'ús de la memòria Linux

Una mirada més propera als processos

En un moment donat, hi ha molts processos en execució al nostre sistema Linux. Hi ha dues eines que utilitzarem per supervisar de prop els processos: ps i pstree.

Utilitzant les opcions -e i -f combinades en una sola (-ef) podeu llistar tots els processos que s'estan executant actualment al vostre sistema. Podeu canalitzar aquesta sortida a altres eines, com ara grep (com s'explica a la part 1 de la sèrie LFCS) per reduir la sortida als vostres processos desitjats:

# ps -ef | grep -i squid | grep -v grep

La llista de processos anterior mostra la informació següent:

propietari del procés, PID, PID principal (el procés principal), ús del processador, hora en què s'ha iniciat l'ordre, tty (el ? indica que és un dimoni), el temps de CPU acumulat i l'ordre associada al procés.

Tanmateix, potser no necessiteu tota aquesta informació i us agradaria mostrar el propietari del procés, l'ordre que l'ha iniciat, el seu PID i PPID, i el percentatge de memòria que està utilitzant actualment, en aquest ordre i ordenar per ús de la memòria en ordre descendent (tingueu en compte que ps per defecte s'ordena per PID).

# ps -eo user,comm,pid,ppid,%mem --sort -%mem

On el signe menys davant de %mem indica l'ordenació en ordre descendent.

Si per algun motiu un procés comença a prendre massa recursos del sistema i és probable que posi en perill la funcionalitat general del sistema, voldreu aturar o aturar la seva execució passant-li un dels senyals següents mitjançant el programa de matança. Altres motius pels quals us plantejaríeu fer-ho és quan heu iniciat un procés en primer pla però voleu aturar-lo i reprendre-lo en segon pla.

Quan l'execució normal d'un procés determinat implica que no s'enviarà cap sortida a la pantalla mentre s'està executant, és possible que vulgueu iniciar-lo en segon pla (afegiu un ampersand al final de l'ordre).

process_name &

o,
Un cop s'hagi començat a executar en primer pla, poseu-lo en pausa i envieu-lo a segon pla

Ctrl + Z
# kill -18 PID

Tingueu en compte que cada distribució proporciona eines per aturar/iniciar/reiniciar/recarregar amb gràcia serveis comuns, com ara servei en sistemes basats en SysV o systemctl en sistemes basats en systemd.

Si un procés no respon a aquestes utilitats, podeu matar-lo per la força enviant-li el senyal SIGKILL.

# ps -ef | grep apache
# kill -9 3821

Aleshores... Què ha passat/està passant?

Quan hi ha hagut algun tipus d'interrupció del sistema (ja sigui una interrupció de l'alimentació, una fallada de maquinari, una interrupció planificada o no planificada d'un procés o qualsevol anormalitat), els registres a /var/log són els teus millors amics per determinar què va passar o què podria estar causant els problemes als quals t'enfrontes.

# cd /var/log

Alguns dels elements de /var/log són fitxers de text normals, altres són directoris i altres són fitxers comprimits de registres (històrics) girats. Voleu comprovar aquells que tenen la paraula error al seu nom, però també pot ser útil inspeccionar la resta.

Imagineu aquest escenari. Els vostres clients LAN no poden imprimir a impressores de xarxa. El primer pas per solucionar aquesta situació és anar al directori /var/log/cups i veure què hi ha.

Podeu utilitzar l'ordre tail per mostrar les últimes 10 línies del fitxer error_log, o tail -f error_log per a una visualització en temps real del registre.

# cd /var/log/cups
# ls
# tail error_log

La captura de pantalla anterior proporciona informació útil per entendre què podria estar causant el vostre problema. Tingueu en compte que seguir els passos o corregir el mal funcionament del procés potser encara no resol el problema general, però si us acostumeu des del principi a comprovar els registres cada vegada que sorgeix un problema (ja sigui local o de xarxa), Definitivament anirem pel bon camí.

Tot i que els errors de maquinari poden ser complicats de resoldre, hauríeu de comprovar el dmesg i els registres de missatges i grep per trobar paraules relacionades amb una part de maquinari que es presumeix defectuosa.

La imatge següent s'ha extret de /var/log/messages després de buscar la paraula error amb l'ordre següent:

# less /var/log/messages | grep -i error

Podem veure que estem tenint un problema amb dos dispositius d'emmagatzematge: /dev/sdb i /dev/sdc, que al seu torn causen un problema amb la matriu RAID.

Conclusió

En aquest article hem explorat algunes de les eines que us poden ajudar a estar sempre al corrent de l'estat general del vostre sistema. A més, heu d'assegurar-vos que el vostre sistema operatiu i els paquets instal·lats estiguin actualitzats a les seves darreres versions estables. I mai, mai, us oblideu de revisar els registres! Aleshores aniràs en la direcció correcta per trobar la solució definitiva a qualsevol problema.

No dubteu a deixar els vostres comentaris, suggeriments o preguntes -si en teniu- mitjançant el formulari següent.