Dacă ați fost administrator pentru o perioadă lungă de timp, ați descoperit cu siguranță situații în care un server crește în utilizarea procesorului sau a utilizării memoriei și / sau a nivelurilor de încărcare. Rularea „top” nu vă va oferi întotdeauna răspunsul. Deci, cum găsești acele procese ascunse care îți mestecă resursele de sistem pentru a le putea ucide?
Următorul script vă poate ajuta. A fost scris pentru un server web, așa că are și câteva părți ale acestuia care caută în mod specific procesele httpd și unele părți care se ocupă de MySQL. În funcție de implementarea serverului dvs., pur și simplu comentați / ștergeți acele secțiuni și adăugați altele. Ar trebui folosit pentru un punct de plecare.
Condițiile preliminare pentru această versiune a scriptului sunt unele freeware lansate sub licența publică generală GNU numită mytop (disponibilă la adresa
http://jeremy.zawodny.com/mysql/mytop/
) care este un instrument fantastic pentru verificarea performanței MySQL. Se îmbătrânește, dar încă funcționează excelent pentru scopurile noastre aici.
În plus, folosesc mutt ca mailer - poate doriți să schimbați scriptul pentru a utiliza pur și simplu linuxul încorporat în utilitarul `mail`. Îl rulez prin cron în fiecare oră; reglați-vă după cum doriți. Oh - și acest script trebuie să ruleze ca root, deoarece citește din unele zone protejate ale serverului.
Deci, să începem, nu-i așa?
Mai întâi, setați variabilele de script:
#! / Bin / Bash
#
# Script pentru a verifica nivelurile medii de încărcare a sistemului pentru a încerca să stabilească
# ce procese o duc prea mult ...
#
# 07Jul2010 tjones
#
# set mediu
dt = `data +% d% b% Y-% X`
# Evident, schimbați următoarele directoare în locul în care sunt păstrate de fapt fișierele jurnal
tmpfile = "/ tmp / checkSystemLoad.tmp"
logfile = "/ tmp / checkSystemLoad.log"
msgLog = "/ var / log / messages"
jurnal mysql = "/ var / log / mysqld.log"
# primul mailstop este un e-mail standard pentru rapoarte. Al doilea este pentru telefonul mobil (cu un raport redus)
mailstop = "[email protected]"
mailstop1 = "[email protected]"
machine = `nume gazdă`
# Următoarele trei sunt pentru utilizarea mea top - utilizați un utilizator db care are drepturi decente
dbusr = "nume de utilizator"
dbpw = "parolă"
db = "numeledatabasename"
# Următorul este nivelul de încărcare pe care trebuie să-l verificați - 10 este foarte mare, deci vă recomandăm să îl reduceți.
levelToCheck = 10
Apoi, verificați nivelul de încărcare pentru a vedea dacă scriptul ar trebui să continue:
# Setați variabile din sistem:
loadLevel=`cat /proc/loadavg | awk '{print $1}'`
loadLevel = $ (printf "% 0.f" $ loadLevel)# dacă nivelul de încărcare este mai mare decât doriți, începeți procesul de script. În caz contrar, ieșiți din 0
dacă [ $loadLevel -gt $levelToCheck ]; atunci
echo ""> $ tmpfile
ecou "*************************************" "$ tmpfile
ecou „Data: $ dt” >> $ tmpfile
echo "Verificați încărcarea și procesele sistemului" >> $ tmpfile
ecou "*************************************" "$ tmpfile