سی پنل Cpanelلینوکس Linuxهاست

خطای npm build کلودلینوکس WebAssembly.instantiate Out of memory: Cannot allocate Wasm memory for new instance

اگر شما هاست سی‌پنل nodejs با Cloud Linux دارید که زمان اجرای npm run build در ترمینال هاست خطای WebAssembly.instantiate Out of memory: Cannot allocate Wasm memory for new instance دریافت می‌کنید با این آموزش همراه باشید.

npm run build

> nikan@0.1.0 build
> next build

unhandledRejection RangeError: WebAssembly.instantiate(): Out of memory: Cannot allocate Wasm memory for new instance
    at lazyllhttp (../../nodevenv/public_html/app/20/lib/node_modules/next/dist/compiled/@edge-runtime/primitives/load.js:65:3)

حتی اگر Cagefs را برای این یوزرغیرفعال کنید و محدودیت LVE را برای این کاربر غیرفعال کنید باز هم فایده‌ای ندارد.

چون وقتی در Terminal این هاست، بعد از اینکه وارد مد environment شوید و دستور زیر را اجرا کنید متوجه محدودیت خواهید شد:

ابتدا طبق استاندارد کلودلینوکس باید وارد محیط env شویم:

source /home/devuser/nodevenv/public_html/app/20/bin/activate && cd /home/devuser/public_html/app

دستور بالا را می‌توانید در تنظیمات اپلیکیشن نود جی اس دریافت کنید. مسیر Setup Node.js App سپس ویرایش اپلیکیشنی که قبلا ایجاد کرده اید.

پس از ویرایش اپلیکیشن کادر زیر را مشاهده خواهید کرد

دستور بالا را کپی کنید و سپس به ترمینال همین هاست برگردید و این دستور را وارد کنید. تا وارد محیط virtual environment شوید. سپس دستور زیر را وارد کنید.

ulimit -a | grep memory

طبق خروجی دستور ۴ گیگ محدودیت برای این محیط virtual env وجود دارد.

حتی اگر lvectl و limits.conf آزاد باشند، مادامی که PAM از pam_lve.so استفاده کند، مقدار max memory در زمان login محدود به مقدار پیش‌فرض (معمولاً 4GB) باقی می‌ماند.

دستور زیر را در یوزر root سرور اجرا کنید:

grep pam_lve /etc/pam.d/*

خروجی زیر را مشاهده خواهید کرد

اگر خروجی چیزی شبیه این بود:

/etc/pam.d/atd:session required pam_lve.so 500 1
/etc/pam.d/crond:session      required      pam_lve.so      500      1
/etc/pam.d/sshd:session      required      pam_lve.so      500      1
/etc/pam.d/su:session      required      pam_lve.so      500      1

پس این دقیقاً دلیل محدود ماندن رم است.

غیرفعال کردن LVE PAM برای این کاربر خاص

یک فایل جدید ایجاد کنید مثلا:

nano /etc/profile.d/unlimit_mifadev.sh

داخل این فایل مقدار زیر را قرار دهید:

if [ "$USER" = "mifadev" ]; then
    ulimit -m unlimited
    ulimit -v unlimited
    export NODE_OPTIONS="--max-old-space-size=8192"
fi

سپس در فایل /etc/pam.d/sshd (اگر از SSH استفاده می‌کنید) یا /etc/pam.d/login، خط مربوط به pam_lve.so را موقتاً کامنت کنید و دوباره لاگین شوید:

# session required pam_lve.so

حالا اگر وارد ترمینال و محیط env آن هاست شوید و دستور زیر را اجرا کنید، دیگر محدودیت ۴ گیگ مشاهده نخواهد شد و خطای npm run هم برطرف می شود.

ulimit -a | grep memory

طبق این آموزش مشکل خطای npm build کلودلینوکس WebAssembly.instantiate Out of memory: Cannot allocate Wasm memory for new instance برطرف شد.

موفق باشید.

مهرداد تاری

تلاش میکنم مطالبی منتشر کنم که از اعتبار و کیفیت بالایی برخوردار باشند. خواهشمندم در صورت مشاهده اشکال، حتما مرا مطلع سازید. سپاس TARIMEHR

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا