ශ්‍රී ලංකාවේ නවතම තාක්ෂණික පුවත් 2026-07-27, Monday
💻 ක්‍රමලේඛනය · 🕒 කියවීමට විනාඩි 2 · 👁 1

Kubernetes පෝඩ් එකේ Go යෙදුමේ GOMAXPROCS ගැටලුව: කාර්ය වේගය අඩු වීමේ හේතුව සහ විසඳුම

Kubernetes පෝඩ් එකේ Go යෙදුමේ GOMAXPROCS ගැටලුව: කාර්ය වේගය අඩු වීමේ හේතුව සහ විසඳුම

කොන්ටේනරය තුළ Go පෝඩ් එකක් නිෂ්පාදනයේ දී CPU සීමාව 2 ලෙස සකසා තිබුණත්, වැඩ බර වැඩි වූ විට P99 ප්‍රතිචාර කාලය අහඹු ලෙස ඉහළ යන සිදුවීමක් දැකගන්නා ලදී. දෝෂ ලොග් එකක් හෝ ගොරෝටිනයක් නැතිව, සම්පූර්ණයෙන්ම ප්‍රතිචාරය පමණක් අඩු වීමක් පෙනී තිබුණි.

මෙම අලූත් ගැටලුවේ මූලික හේතුව GOMAXPROCS අගය පෝඩ් එක ක්‍රියාත්මක වන භෞතික නෝඩ් එකේ CPU ගණනෙන් (උදා: 32) ගණනය කර ගැනීමයි. කුබර්නෙටිස් සීමා (limits.cpu) පෝඩ් එකට 2 CPU පමණක් ලබා දුන්වත්, Go රන්ටයිම් එය නොදැන ගනිමින් 32 පරිශීලක ත්‍රෙඩ් (OS threads) සකසා ගනී. එමනිසා කර්නලය CFS throttling මගින් ත්‍රෙඩ් අඩු කරයි, ඒත් ඒ ත්‍රෙඩ් නවීන CPU කාලයක් ඉක්මවා ගිය පසු තාවකාලිකව නතර වේ.

Linux හි CFS (Completely Fair Scheduler) cgroup පරාමිතීන් cpu.cfs_quota_us සහ cpu.cfs_period_us භාවිතා කර CPU සීමා අනුගමනය කරයි. 2 CPU සීමාවක් තිබේ නම්, 100 ms කාල පරාසයකට 200 ms CPU කාලය ලබා දේ. Go ත්‍රෙඩ් 32 ක් එකවර ක්‍රියාත්මක වීමෙන් මේ සීමාව ඉක්මවා, කර්නලය සියළු ත්‍රෙඩ් නතර කරනු ලබයි. මේ ත්‍රෙඩ් නතරය කිහිප මිලි තත්පරවලින් දශක මිලි තත්පර දක්වා දිගුවේ, ඒත් තත්පරයකට කිහිප වරක් සිදුවීම P99 ප්‍රතිචාරය බරපතල ලෙස අඩු කරයි.

Go යෙදුමේ GOMAXPROCS සැකසීමේ විසඳුම්

Uber සමාගම විසින් go.uber.org/automaxprocs නමැති පැකේජයක් නිකුත් කර ඇත. මෙය ඇරඹුමෙන්ම cgroup පරාමිතීන් කියවා, runtime.GOMAXPROCS අගය නිවැරදිව (උදා: 2) සකස් කරයි. එක් import එකක් (_ "go.uber.org/automaxprocs") පමණක් මෙම හැකියාව ලබා දේ.

තවත් විකල්පයක් වශයෙන්, පෝඩ් සීමා දැනගෙන, කේතයේ runtime.GOMAXPROCS(2) ලෙස හස්තයෙන් සකස් කළ හැකිය. නමුත් සීමා වෙනස් වුවහොත්, කේතය අලුත් කිරීම අමතක වීමේ අවදානම ඇත.

Go 1.25 (2025 අගෝස්තු) සිට රන්ටයිම් ස්වයංක්‍රීයව cgroup පරාමිතීන් කියවා GOMAXPROCS අගය ගැලපෙන ලෙස සකස් කරයි. එම නිසා බාහිර පැකේජයක් අවශ්‍ය නොවේ. GODEBUG පරාමිතීන් මගින් පසුබැසීමේ හැකියාවද ලබා දේ.

ශ්‍රී ලංකාවට ඇති වැදගත්කම

ශ්‍රී ලංකාවේ තාක්ෂණික ආරම්භකයින්, සොෆ්ට්වේයාර් සංවර්ධකයින් සහ ව්‍යාපාරිකයින් සඳහා මෙම ගැටලුව වැදගත් කරුණකි. Kubernetes පරිසරය දේශීය ආයතනවල වැඩි පරිමාණයෙන් භාවිතා වන අතර, Go යෙදුම් කාර්ය සාධනයේ අඩුපාඩු පාරිභෝගික අත්දැකීම හා ව්‍යාපාර ආදායමට බලපායි. automaxprocs හෝ Go 1.25 භාවිතයෙන් CPU සීමා නිවැරදිව ගත හැකිවීමෙන්, පද්ධති විශ්වාසනීයතාවය, පරිසර පාලනය සහ සම්පත් පරිභෝජනය කුඩා කර ගැනීමට හැකිවේ. එමෙන්ම, දැනුම හුවමාරු කිරීම, DevOps කණ්ඩායම් අතර ප්‍රායෝගික පියවරයන් බෙදාගැනීම, දේශීය තාක්ෂණික ඉදිරිපත් කිරීමේ වේගය වැඩි කරයි.

ඉදිරියේදී, Go 1.25 සහ automaxprocs වැනි මෙවලම් භාවිතා කරමින්, ශ්‍රී ලංකාවේ තාක්ෂණික පද්ධති ඉදිරියට ගෙන යාමට අවශ්‍ය මූලික පදනම සකස් වේ.

කාර්ය සාධනයේ අඩුපාඩු හෝ අහඹු latency spikes ඔබේ Go සේවාවට බලපානවා නම්, GOMAXPROCS සැකසීම පළමු පියවර ලෙස සලකා බලන්න.

💡 ඔබේ Go යෙදුම අදම නිවැරදි GOMAXPROCS සමඟ සකස් කර බලන්න!
මූලාශ්‍රය මෙම ලිපිය AI මගින් රචිත මුල් සාරාංශයකි. සම්පූර්ණ වාර්තාව කියවන්න:
Dev.to ↗
#Go #Kubernetes #CPU #Performance #DevOps