strace ja perf: Linuxi tõrkeotsingu spikkerileht

13 min lugemine - 4. juuni 2026

hero section cover
Sisukord
  • strace ja perf Linuxi veaotsinguks
  • Millal kasutada strace'i ja millal perf'i
  • Strace ja perfi installimine
  • Süsteemikutsete jälgimine strace'iga
  • CPU profiili koostamine perfiga
  • Praktiline töövoog reaalajas töötaval serveril
Jaga

Millal kasutada strace vs perf Linuxis, milliseid käske te tegelikult käivitate ja kuidas hoida koormatud tootmisserveri silumiseks vajalikud kulud madalad.

strace ja perf Linuxi veaotsinguks

Kui Linuxi server on aeglane, kukub kokku või koormab liigselt protsessorit ning rakenduse logid ei selgita põhjust, aitavad kaks tööriista enamiku probleemidest lahendada. strace ütleb sulle, mida protsess kernelilt küsib. perf näitab, kuhu CPU kulutab oma aega. Koos vastavad need küsimustele „miks see on kinni jäänud” ja „mida see teeb”, mida miski muu nii odavalt ei suuda lahendada.

See postitus käsitleb, millal iga tööriista kasutada, kuidas neid installida, milliseid käske tegelikult käivitada ja kuidas hoida koormust reaalajas töötaval serveril hallatavana.


 

Millal kasutada strace'i ja millal perf'i

Erinevus on lihtne. Kasutage perf kui CPU on hõivatud ja teil on vaja teada, milline funktsioon selle eest vastutab. Kasutage strace kui protsess on hangunud, kukub kokku, annab kummalisi vigu või käitub viisil, mida logid ei seleta.

perf võtab proove tuuma riistvaralugemitest seadistatava sagedusega, seega on koormus tavaliselt alla 1% ja seda on ohutu tootmiskeskkonnas käivitada. strace püüab kinni iga süsteemikõne läbi ptrace, mis võib sihtprotsessi aeglustada 10–100 korda. Kasutage seda live-süsteemides mõõdukalt ja alati koos filtritega.

SümptomAlustaJärgige
Kõrge CPU koormusperf top või perf record -gstrace -c kuum protsess
Aeglane kettaseade või I/O ooteaegperf stat vahemälust puudumise tõttustrace -e trace=file
Protsessi hangumine või vaikne vigastrace -e trace=file,networkperf stat et välistada CPU koormus
Lukustuse konflikt või aeglane APIstrace -c, jälgige futexperf record -g

Strace ja perfi installimine

Mõlemad tööriistad on standardvaramutes. strace tugineb ptrace syscall-ile, mis on juba aastaid olnud osa igast kaasaegsest tuumast. perf kasutab perf_events liidest ja vajab teie käivitatud tuumaga sobivat paketti.

Ubuntus või Debianis:

sudo apt install strace linux-tools-common linux-tools-$(uname -r)

RHEL-is, AlmaLinuxis või Fedoras:

sudo dnf install strace perf

Bit $(uname -r) bit on oluline. Teise tuumaversiooni jaoks koostatud perf-binaar annab segadust tekitava väljundi ja võib sündmusi märkamatult välja jätta. Kontrollige käskudega perf --version ja strace -V pärast installimist.

Selleks, et perf kuvaks funktsiooninimesid kuueteistkümnendkoodi aadresside asemel, on vaja silumissümboleid. Paigaldage asjakohane -dbg või -debuginfo pakett (näiteks libc6-dbg Debianis) ning kompileerige oma binaarid -g GCC-s.

Konteinerite sees strace vajab --cap-add=SYS_PTRACE ja perf vajab --cap-add=SYS_ADMIN Dockeriga käivitamisel. Ilma nendeta ebaõnnestuvad tööriistad viisil, mis näeb välja nagu vead.

Süsteemikutsete jälgimine strace'iga

Käivitamine strace command jälgib protsessi alates käivitamisest. Käimasoleva protsessiga ühendamiseks kasutage strace -p PID. Mitmeprotsessiliste või harunevate protsesside puhul lisage -f , et jälgida protsessi järglasi, vastasel juhul jääb enamik tegevustest märkamata.

Väljundread lõpevad tagastatud väärtusega. -1 ENOENT tähendab, et protsessi poolt küsitud faili pole olemas. -1 EACCES tähendab õigusi. Need kaks viga moodustavad üllatavalt suure osa tootmisveadest.

Kõige kasulikum lipuk on -e trace=GROUP, mis piirab väljundit nimetatud süsteemikõne kategooriaga ja hoiab müra kontrolli all.

RühmkõnedMilleks see hea on
fileopenat, stat, read, writePuuduvad konfiguratsioonid, õiguste vead, aeglane sisend-väljund
networksocket, connect, bind, recvfromÜhendus keelatud, DNS-vead, TLS-probleemid
processexecve, clone, wait4Krahhid, fork-tormid, puuduvad binaarid
futexfutexLukustuse konfliktid ja niidite seiskumised

Hõivatud serveril alusta strace -c -p PID kümne või kahekümne sekundi jooksul. -c lipu abil kuvatakse ühenduse katkestamisel kokkuvõte süsteemikutsete arvust, koguaeg ja vead. See näitab, millist kategooriat tasub lähemalt uurida, ilma et terminali üle ujutataks. Seejärel ühendage uuesti kitsa filtri abil.

Muud teadmiseks väärt lipud: -T logib iga kutsumise kestuse, -Z näitab ainult ebaõnnestunud kutsumisi ja -o file kirjutab logisse terminali asemel, mis on palju kiirem müraka protsessi puhul.

CPU profiili koostamine perfiga

perf-il on neli käsku, mida kasutate enamasti.

KäskMida see teebTavalised lipud
perf statLoendurite hetkeseis: tsüklid, vahemälust möödalöögid, konteksti vahetused-e, -p, -a
perf topReaalajas ülevaade süsteemi kõige aktiivsemate funktsioonide kohta--sort comm,dso,symbol
perf recordSalvestab näidised perf.data offline-analüüsiks-F, -g, -p
perf reportLoeb perf.data, järjestab funktsioone proovide osakaalu järgi--stdio, --sort

Alusta perf stat -p PID , et saada kiire ülevaade. Jälgida tuleks järgmisi näitajaid:

  • IPC (käskude arv tsükli kohta) alla 1,0: CPU seisab, tavaliselt mälupöördumise tõttu.
  • Kõrge LLC-load-misside arv: töökogum ei mahu vahemällu, mistõttu CPU ootab RAM-i.
  • Kõrge konteksti vahetuste arv: tüüpiline I/O-piiranguga töökoormuste puhul, kus niidid blokeerivad pidevalt kettal või võrgus.

Kui midagi tundub vale, vaadake järgnevalt perf record -F 99 -g -p PID -- sleep 30. -F 99 võtab proove sagedusega 99 Hz, mis on piisav kuumade funktsioonide leidmiseks ja vältib sünkroniseerimist tuuma ajastiga ümmargustel sagedustel nagu 100 Hz. Lip -g lipu abil salvestatakse kutsugraafikud, nii et perf report saab näidata, millised funktsiooni sisenemisteed on selle eest vastutavad.

Veerus perf reportOn veerus „Overhead” näidatud osakaal koguarvust. Suur koormus _int_malloc või memcpy tähendab suurt mälueraldust. Suur lisakulu ühes teie enda funktsioonidest ongi see probleemne koht, mida te otsisite.

Kui näete funktsiooninimede asemel kuueteistkümnendadresse, on binaar failist eemaldatud või puuduvad silumissümbolid. Paigaldage sobiv -dbg pakett või koosta binaar uuesti -g.

Praktiline töövoog reaalajas töötaval serveril

Tegelikul juhtumil hõivatud serveril näeb rutiin välja järgmine:

  1. Kinnitage sümptom esmalt odavate vahenditega: top, vmstat, iostat. Kui kasutate virtuaalmasinat, kontrollige veerus st (steal) veergu. Kui näit on üle 5%, tähendab see, et pudelikaelaks on hüperviisor, mitte teie kood.
  2. Kui CPU koormus on kõrge, käivita perf top mõne sekundi jooksul, seejärel perf record -F 99 -g -p PID -- sleep 30 probleemsele protsessile. 30-sekundiline salvestus sagedusega 99 Hz toodab umbes 1,7 MB andmeid.
  3. Kui protsess on hangunud, aeglane või annab vigu, käivita strace -c -p PID kümme sekundit ja lugege kokkuvõtet. Kui üks süsteemikõne kategooria domineerib, kitsendage valikut käsuga strace -e trace=GROUP -T -p PID.
  4. Kui olete leidnud kahtlase süsteemikõne või funktsiooni, katkestage ühendus. Ärge jätke kumbagi tööriista tootmiskeskkonnas kauem töötama, kui vaja.

Kaks hoiatust. strace väljund võib sisaldada keskkonnamuutujaid, failide asukohti ja pistikupesadest loetud baiti, seega puhastage logid enne nende jagamist väljaspool oma meeskonda. Ja kui kavatsete seda regulaarselt teha, vaadake bpftrace ja laiemat eBPF-tööriistakomplekti järgmise sammuna: sama tüüpi nähtavus, alla 1% lisakoormus, algusest peale tootmiskeskkonnale loodud.

Kui teie töökoormused nõuavad põhjalikku diagnostilist juurdepääsu ja jagatud infrastruktuur ei ole võimalik, vaadake meie pühendatud servereid.

background image
Kas teie VPS on tööks valmis?

FDC VPS on standardselt varustatud NVMe-ketaste, EPYC-protsessoritega ja tõeliselt piiramatu ribalaiusega. Kas olete valmis uuendama?

Avage jõudlus nüüd

Blogi

Sel nädalal esile tõstetud

Rohkem artikleid
Miks on oluline, et VPS oleks võimas ja mittemeterdatud

Miks on oluline, et VPS oleks võimas ja mittemeterdatud

Mõõtmiseta VPS annab kindlasummalise ribalaiuse fikseeritud portikiirusega. Kuidas see erineb mõõdetavatest pakettidest, millal see tasub ära ja mida enne ostmist kontrollida.

7 min lugemine - 9. mai 2025

Linuxi mäluhaldus: Swap, OOM Killer & Cgroups

12 min lugemine - 31. mai 2026

Rohkem artikleid
background image

Kas teil on küsimusi või vajate kohandatud lahendust?

icon

Paindlikud võimalused

icon

Ülemaailmne haare

icon

Kohene kasutuselevõtt

icon

Paindlikud võimalused

icon

Ülemaailmne haare

icon

Kohene kasutuselevõtt