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

🚀 Go 1.25 හි කන්ටේනර්-අදහස් සම්පත් කළමනාකරණය – ගැටලුව, විසඳුම සහ තවමත් ඉතිරිව තිබෙන අංශ

🚀 Go 1.25 හි කන්ටේනර්-අදහස් සම්පත් කළමනාකරණය – ගැටලුව, විසඳුම සහ තවමත් ඉතිරිව තිබෙන අංශ

කුබර්නෙටීස් (Kubernetes) පදනම්ව Go භාෂාවෙන් ලියන සේවාවක් පළ කරන විට, CPU හා මතක සීමා (limits) නිවැරදිව සකස් කරලාත්, Go රන්ටයිම් එම සීමා නොදැන ගනිමින් වැඩ කරයි. එම නිසා ත්‍රෙඩ් ගණන වැඩියි, ගැබ්කලෙක්ටර (GC) වැරදි වේලාවක ක්‍රියා කරයි, අන්තර්ගතය OOM (Out‑Of‑Memory) හෝ CPU throttling වලට ලක් වෙයි.

ගැටලුව කුමක්ද? Go පරිසරය ආරම්භ වන විට පද්ධතියේ මුළු CPU ගණන කියවා GOMAXPROCS අගය සකසයි. 64‑කෝර් නෝඩ් එකක, ඔබේ pod එකට cpu: "2" සීමාවක් තිබුණත්, Go තවමත් 64 ත්‍රෙඩ් පවත්වා ගනී. ඒත් Linux cgroup මගින් එම ත්‍රෙඩ් සියල්ලන්ට එක්ක 2 CPU‑seconds පමණ පමණක් ලබා දේ. එම නිසා kernel එක ත්‍රෙඩ් සියල්ල තාවකාලිකව නවත්වයි – “throttling”. ප්‍රතිඵලය ලෙස latency එකන් 10 ms සිට සිය ගණනක් තත්පරයකට පවා ඉහළ යයි. මතක සීමාවටද ඒම ගැටළුවක් ඇත; GC හි GOGC සකස් කර නැත්නම් heap එක දෙගුණයක් වර්ධනය වීමට ඉඩ ලැබෙයි, එම නිසා container එකේ 512 MB සීමාව ඉක්මවා OOM kill එකක් සිදු වේ.

Go 1.25 විසින් හඳුන්වාදුන් විසඳුම Linux පද්ධති සඳහා GOMAXPROCS දැන් cgroup CPU සීමාවට අනුව ස්වයංක්‍රීයව සකසයි. ආරම්භයේ runtime එක cgroup‑හි quota කියවා, node‑හි CPU ගණන හා container‑හි සීමාව අතර අඩු අගය ගනී. ඒ නිසා 64‑කෝර් node එකක pod එකට 2 CPU‑limit එකක් තිබේ නම්, Go 1.25 තුළ GOMAXPROCS 2 කට සකසනු ලැබේ. තවද, Kubernetes මගින් CPU limit වෙනස් කළහොත්, runtime එක එය පරීක්ෂා කර අලුත් අගය ගනී – නැවත ආරම්භ කිරීමක් අවශ්‍ය නොවේ. මෙම හැසිරීම GODEBUG=containermaxprocs=0 හෝ GODEBUG=updatemaxprocs=0 මගින් අක්‍රීය කළ හැකිය. ඔබ විසින් පරිසර විචල්‍යයක් හෝ runtime.GOMAXPROCS() මඟින් අගය සකසනවා නම්, Go 1.25 හි ස්වයංක්‍රීය සැකසුම අක්‍රීය වේ.

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

ශ්‍රී ලංකාවේ තාක්ෂණික සමාජය දැනටමත් Kubernetes, Docker වැනි container‑පදනම් තාක්ෂණයන් භාවිතා කරමින් වැඩි පරිමාණ ව්‍යාපෘති අරඹමින් පවතී. Go 1.25 හි මෙම නවීකරණය මඟින්:

  • ඉංජිනේරුවන්ට CPU throttling නිසා සිදු වන latency spikes හා OOM ගැටළු අඩු කර, වැඩි විශ්වාසනීය සේවා සැපයීමට හැකියාව ලැබේ.
  • උපාධි ශිෂ්‍යයන්ට container‑aware Go භාවිතය ඉගෙන ගැනීම, ජාත්‍යන්තර තරඟවලට සහ open‑source ප්‍රජාවේ දායකත්වයට සුදුසු පදනමක් වේ.
  • ව්‍යාපාරිකයින්ට මෘදුකාංග පරිපාලනයේ පිරිවැය අඩු කර, අවශ්‍ය CPU සම්පත් පමණක් භාවිතා කර, cloud සේවා ගාස්තු අඩු කිරීමේ අවස්ථාව ලබා දේ.

අද සිට Go 1.25 නොමැති පද්ධති භාවිතා කරන සංවර්ධකයන්ට GODEBUG මගින් අතිරේක සැකසුම් කරන්න හෝ Go 1.25 වෙත යාවත්කාලීන කරගැනීමට අවශ්‍ය වේ. එසේ නොකළහොත්, container‑aware නොවන runtime එකේ පරිපාලන ගැටළු තවදුරටත් පවතී.

කෙටි සාරාංශයක් ලෙස, Go 1.25 හි GOMAXPROCS‑කේ container‑aware සැකසීම, Kubernetes පදනම්ව Go සේවා පළ කරන ඕනෑම සංවිධානයකට ඉතා වැදගත් ය. නමුත් memory‑related GC ගැටළුව තවමත් සම්පූර්ණයෙන් විසඳුම් නැත; ඒ සඳහා අමතර පරිසර විචල්‍ය හෝ code‑level optimisation අවශ්‍ය වේ.

💡 Go 1.25 අලුත්ම නවීකරණය දැන්ම පරීක්ෂා කරන්න!
මූලාශ්‍රය මෙම ලිපිය AI මගින් රචිත මුල් සාරාංශයකි. සම්පූර්ණ වාර්තාව කියවන්න:
Dev.to ↗
#Go #Kubernetes #Performance #Containers #SriLankaTech