Skip to content
VDS · సమస్యల పరిష్కారం

CPU 100% వద్ద ఉంది

CPU కోర్‌లను తినే ప్రాసెస్‌ను ఎలా కనుగొనాలి, నిజమైన లోడ్‌ను డిస్క్ వెయిట్ నుండి ఎలా వేరు చేయాలి మరియు కోడ్‌ను సరిచేయాలా లేదా అధిక టియర్‌కు మారాలా నిర్ణయించుకోవాలి.

23 ఆగస్టు, 2026న నవీకరించబడింది

“అవలోకనం” ట్యాబ్‌లో CPU గ్రాఫ్‌పై కనిపించే ప్లాటో స్వతంత్రంగా అత్యవసర పరిస్థితి కాదు: ప్రాజెక్ట్‌ను బిల్డ్ చేయడం లేదా ఆర్కైవ్‌ను సృష్టించడం అన్ని కోర్‌లను నిజాయితీగా ఉపయోగించి, ఆ తర్వాత వాటిని విడుదల చేస్తుంది. ప్లాటో గంటల తరబడి కొనసాగి, మెషీన్ స్పందించడం ఆపేసినప్పుడు మాత్రమే అది ఆందోళన కలిగిస్తుంది. దీనికి కారణం ఏమిటో చూద్దాం.

దశ 1. ఏది వనరులను వినియోగిస్తోందో చూడండి

ఫుల్-స్క్రీన్ ప్రోగ్రామ్‌లతో పని చేయడానికి “స్క్రీన్” (VNC) ట్యాబ్ సౌకర్యవంతంగా ఉంటుంది:

btop
htop

సీరియల్ కన్సోల్ విండో పరిమాణాన్ని అందించదు; అక్కడ ఎప్పుడూ 80×24 ఉంటుంది, కాబట్టి ఇంటర్‌ఫేస్ కత్తిరించబడుతుంది. టెక్స్ట్ కన్సోల్ కోసం ప్రామాణిక ఆదేశాలను ఉపయోగించండి:

top -b -n1 | head -20
ps aux --sort=-%cpu | head -10

గణితాన్ని గుర్తుంచుకోండి: %CPU ప్రతి కోర్‌కు లెక్కించబడుతుంది. VDS-3లో 400% అంటే నాలుగు కోర్‌లు, అయితే VDS-4లో 100% అంటే ఆరింటిలో ఒక కోర్ మాత్రమే.

దశ 2. CPU మరియు డిస్క్‌ను వేరు చేయండి

సగటు లోడ్ (load average) కూడా గణన నుండి మాత్రమే కాకుండా I/O వెయిట్ నుండి కూడా పెరుగుతుంది:

uptime
vmstat 1 5

vmstat అవుట్‌పుట్‌లో us (యూజర్ కోడ్), sy (కర్నెల్), wa (డిస్క్ వెయిట్), st (స్టోలెన్ టైమ్) కాలమ్‌లను చూడండి. పెద్ద wa అంటే CPU డిస్క్ కోసం వేచి ఉందని అర్థం — బాటిల్‌నెక్ గణన కాదు, రైట్ స్పీడ్. మా టియర్‌లలో డిస్క్ ప్లాటో ఒక నియమం ద్వారా నిర్ణయించబడుతుంది: ప్రతి కోర్‌కు 60 MB/s రైట్, 60 కంటే తక్కువ కాదు మరియు 400 MB/s కంటే ఎక్కువ కాదు, రీడ్ రెట్టింపు, మరియు ప్లాటోకు మూడు రెట్లు ఎక్కువ బరస్ట్ 30 సెకన్లు కొనసాగుతుంది. ఒక టాస్క్ నిరంతరం రాస్తూ ఉంటే, బరస్ట్ ముగిసి మీరు ప్లాటోను చేరుకుంటారు.

దశ 3. నిర్దిష్ట ప్రాసెస్‌ను పరిశోధించండి

pidstat -p <pid> 1 5
cat /proc/<pid>/status
journalctl -u <service> -n 100 --no-pager

సాధారణ కనుగొన్న విషయాలు:

  • ఒక వెబ్ అప్లికేషన్ విఫలమైన రిక్వెస్ట్ తర్వాత అనంత లూప్‌లో తిరుగుతోంది;
  • డేటాబేస్ ఇండెక్స్ లేకుండా క్వెరీని అమలు చేస్తోంది — దాని స్వంత స్లో క్వెరీ లాగ్‌ను తనిఖీ చేయండి;
  • ఒక cron జాబ్ పూర్తి కావడానికి ముందే మళ్లీ ప్రారంభమవుతోంది, ఇన్‌స్టాన్స్‌లు పేరుకుపోతున్నాయి: ps aux | grep <name> డజనుకు పైగా కాపీలను చూపిస్తుంది;
  • బలహీనమైన root పాస్‌వర్డ్ ద్వారా మెషీన్‌లోకి చొరబడిన మైనర్. దీని సంకేతం — అర్థం లేని పేరుతో, ప్రామాణికం కాని యూజర్ కింద నడుస్తూ, అధిక అవుట్‌గోయింగ్ బ్యాండ్‌విడ్త్ ఉన్న ప్రాసెస్. ఈ సందర్భంలో, శుభ్రం చేయడం కంటే “యాక్సెస్” ట్యాబ్ నుండి మెషీన్‌ను మళ్లీ ఇన్‌స్టాల్ చేయడం సులభం.

దశ 4. పరిమితం చేయండి, చంపకండి

ప్రాసెస్ అవసరమైనప్పటికీ మిగిలిన వాటికి ఆటంకం కలిగించకూడదు అనుకుంటే:

renice -n 15 -p <pid>
systemctl set-property myapp.service CPUQuota=200%

CPUQuota=200% అంటే రెండు పూర్తి కోర్‌లు. systemd పరిమితి సర్వీస్ రీస్టార్ట్ తర్వాత కూడా కొనసాగుతుంది; renice కొనసాగదు.

kill -9తో ప్రాసెస్‌ను చంపే ముందు, సాధారణ systemctl stopను ప్రయత్నించండి. డేటాబేస్‌ను బలవంతంగా చంపడం వల్ల ఫైల్‌లు పాడై, తదుపరి స్టార్ట్‌లో సుదీర్ఘ రికవరీ జరుగుతుంది.

కోడ్ కారణం కానప్పుడు

లోడ్ సమర్థమైనది మరియు స్థిరమైనది అయితే, Ryzen 9 7950X CPU తన పని చేస్తోంది — టాస్క్ కోసం సరిపడా కోర్‌లు లేవు అన్నమాట. టియర్‌ను పెంచడం మాత్రమే సాధ్యం, చెల్లించిన కాలానికి మిగిలిన రోజులకు అదనపు చెల్లింపుతో: మీ ప్లాన్‌ను అప్‌గ్రేడ్ చేయడం మరియు తేడా చెల్లించడం అనే వ్యాసం చూడండి. తిరిగి డౌన్‌గ్రేడ్ చేయడం అందుబాటులో లేదు, కాబట్టి ప్లాటో ఒకసారి మాత్రమే సంభవించినదా కాదా అని మొదట వారం మరియు నెల గ్రాఫ్‌ల నుండి నిర్ధారించుకోండి.