පප්පෙටිර් (Puppeteer) භාවිතා කරමින් වෙබ් පිටු රූප ගත කිරීම හෝ ස්ක්රැප් කිරීම කරන වැඩසටහන්, නිෂ්පාදන පරිසරයේ දිගු කාලයක් පවත්වාගතහොත් මතක පරිභෝගය අඛණ්ඩව ඉහළ යාමක් දැක ගන්නා ලදි. මෙය සාමාන්යයෙන් Docker කන්ටේනරයක් හෝ Kubernetes පෝඩ් එකක OOM (Out Of Memory) සිදුවීම් ලෙස පෙනේ.
මෙම ගැටළුව තනි බගයක් නොව, ත්රිත්වයක් එකට එකතු වූ පසුබැසීමකි. පළමුව, පිටු (page) සහ BrowserContext වැනි සම්පත් නිසි ලෙස වැසීම නොකිරීම; දෙවැනිය, දිගු කාලයක් පවත්නා එකම Browser අවස්ථාව තුළ කෑලි කෑලි කෑලි ලෙස කෑෂ්, DOM, Event Listener වැනි දත්ත එකතු වීම; තුන්වැනිය, ක්රැෂ් හෝ හංගාගත් Chromium උප-ප්රොසෙසස් (zombie processes) පවත්වාගෙන යාමයි. Node.js හි heap පරිභෝගය සාමාන්යයෙන් සාමකාමී ලෙස පෙනේ, නමුත් පරපුරේ ඇති child process මතකය ඉහළ යන බැවින් සම්පූර්ණ පරිසරය අඩු නොවේ.
මෙම ගැටළුවට ප්රායෝගික විසඳුම් තුනක් ඇත. මුල්ම වශයෙන්, finally බ්ලොක් එකක් තුළ පිටුව, BrowserContext, Browser වැනි සම්පත් සියල්ලම වැසීම අනිවාර්ය කරගන්න. එවිට exception, timeout, හෝ early return සිදුවුවත් සම්පත් නිදහස් වේ. දෙවැනිය, Browser එකක් දිගු කාලයක් පවත්වා ගැනීමේ තැන, නියමිත ගණනක වැඩකට පසු එය නැවත ආරම්භ කිරීම. මෙය Chromium එක “disposable” ලෙස පරිහරණය කිරීමයි. තුන්වැනිය, concurrency සීමා කර, --disable-dev-shm-usage වැනි flag භාවිතා කර, memory ceiling සකස් කර, init process (tini) සමඟ container ධාවනය කර zombie process මැකීම සහතික කරගන්න.
ශ්රී ලංකාවට ඇති වැදගත්කම
ශ්රී ලංකාවේ තාක්ෂණික ආරම්භකයින්, සොෆ්ට්වේයා සංවර්ධකයින් සහ ව්යාපාරිකයින් සඳහා මෙම උපදෙස් ඉතා ප්රයෝජනවත්.
- ඉගෙනුම් වාසිය: Node.js සහ Puppeteer භාවිතා කරන පාඨමාලා වලදී memory leak පිළිබඳ සැලකිල්ලක් දක්වන්න පුළුවන්, එමඟින් අධ්යයන කාලය අඩු වේ.
- ව්යාපාරික වාසිය: කුඩා තාක්ෂණික startup හෝ SaaS සේවා සපයන සමාගම්ට container OOM වීමෙන් පසු downtime වළක්වා, සේවා නිරන්තරතාවය වැඩි කරයි.
- දේශීය ආර්ථිකයට අදාළත්වය: Cloud hosting හෝ Kubernetes පරිසරයන්හි resource usage හොඳින් කළමනාකරණය කිරීම, server cost අඩු කර, ඉලෙක්ට්රොනික ආර්ථිකයට දායක වේ.
අවසන් වශයෙන්, ඔබේ ව්යාපෘතියේ අවශ්යතාවය පරික්ෂා කර, පූර්ණයෙන්ම Chromium අවශ්යදැයි තීරණය කරන්න. URL එකක රූපයක් අවශ්ය නම්, third‑party screenshot API එකක් භාවිතා කිරීමෙන් පරිසරය සරල කර, memory leak අවදානම අඩු කළ හැක.
මෙම පියවරයන් අනුගමනය කර ඔබේ Puppeteer සේවාව තදබල, ස්ථාවර සහ පරිසර-හිතකාමී කරගන්න.