سرورهای Project Zomboid میتوانند به دلایل شناختهشدهای کرش کنند یا شروع نشوند. این راهنما رایجترین علل مشاهدهشده در تیکتهای پشتیبانی Legion Hosting را پوشش میدهد — از یک باگ حافظه در Build 42 که نیاز به RAM اضافی هنگام راهاندازی دارد، تا پر شدن /tmp توسط پشتیبانگیری بیش از حد، تا فایلهای پیکربندی خراب. بخشهای زیر را به ترتیب بررسی کنید.
قبل از شروع — لاگهای کرش خود را پیدا کنید
تقریباً هر کرش Project Zomboid در یکی از دو مکان اثری از خود به جا میگذارد. قبل از انجام هرگونه اقدام اصلاحی، هر دو را بررسی کنید تا بدانید کدام بخش از این راهنما برای شما مناسب است.
خروجی کنسول GPanel
- وارد GPanel شوید.
- سرور Project Zomboid خود را از لیست سرورها انتخاب کنید.
- روی تب Console کلیک کنید.
- به پایین خروجی اسکرول کنید. به دنبال خطوطی باشید که با
ERROR،FATAL،OutOfMemoryErrorیاExceptionمشخص شدهاند. ۲۰ تا ۳۰ خط آخر قبل از توقف سرور معمولاً مرتبطترین خطوط هستند. - اگر کنسول خالی است، فرآیند سرور قبل از اینکه بتواند چیزی بنویسد متوقف شده — این خود یک سرنخ است (به بخش حافظه B42 در زیر مراجعه کنید).
فایل debug.log سرور
Project Zomboid یک لاگ جزئی در فایل debug.log در دایرکتوری دادههای سرور مینویسد. این فایل اغلب شامل یک stack trace کامل Java است که مستقیماً به علت کرش اشاره میکند.
- در GPanel، به تب File Manager بروید.
- به مسیر
/.cache/Logs/بروید. فایلهایی با نامهایی مانندdebug.log،DebugLog-server.txtیا فایلهای لاگ با تاریخ را خواهید دید. - جدیدترین فایل لاگ را باز کنید. از Ctrl+End استفاده کنید یا تا انتها اسکرول کنید و از آنجا به بالا بخوانید.
- به دنبال کلمات کلیدی
OutOfMemoryError،IOException،NullPointerExceptionیاSandboxVarsبگردید. خطوط مرتبط را کپی کنید — اگر تیکت پشتیبانی باز کنید به آنها نیاز خواهید داشت.
راهحل ۱ — مصرف بالای حافظه Build 42 هنگام راهاندازی (باگ شناختهشده بازی)
اگر سرور شما بلافاصله هنگام راهاندازی بدون خطا در کنسول متوقف میشود، یا کنسول OutOfMemoryError یا خطای Java heap space نشان میدهد، سرور قبل از اتمام بارگذاری جهان حافظهاش تمام شده است.
علائم
- سرور شروع میشود، کنسول چند ثانیه اسکرول میکند، سپس بدون خطای قابل مشاهده برای بازیکنان متوقف میشود.
- کنسول
java.lang.OutOfMemoryError: Java heap spaceیاGC overhead limit exceededنشان میدهد. - سرور در برخی ریستارتها کار میکند ولی در برخی دیگر نه (در دسترس بودن حافظه متغیر است).
- سرور روی B41 خوب کار میکرد ولی بعد از ارتقا به B42 به طور مداوم کرش میکند.
مراحل
- در GPanel، روی سرور خود کلیک کنید و به تب Console بروید. مقدار RAM فعلی تخصیصیافته سرور را که در نوار منابع یا پنل اطلاعات سرور نشان داده میشود یادداشت کنید.
- اگر پلن شما کمتر از ۱۰ گیگابایت RAM دارد، سرور ممکن است هنگام راهاندازی کرش کند زیرا B42 برای مقداردهی اولیه تقریباً ۹ گیگابایت نیاز دارد. باید پلن خود را ارتقا دهید یا منتظر بمانید تا Indie Stone یک اصلاحیه منتشر کند.
- اگر پلن شما ۱۰ گیگابایت یا بیشتر دارد و سرور همچنان هنگام راهاندازی کرش میکند، به تب Startup در GPanel بروید.
- به دنبال فیلدی با برچسب Java Memory، Max RAM یا Xmx بگردید. مطمئن شوید که بیشتر از ۸۰ تا ۸۵ درصد کل RAM موجود تنظیم نشده است. به عنوان مثال، در یک پلن ۱۲ گیگابایتی، این مقدار را روی
10240(۱۰ گیگابایت بر حسب مگابایت) تنظیم کنید. آن را برابر یا بیشتر از کل RAM تنظیم نکنید — سیستمعامل و سایر فرآیندها نیز به حافظه نیاز دارند. - روی Save در تب Startup کلیک کنید، سپس سرور خود را ریستارت کنید.
- کنسول را هنگام راهاندازی مشاهده کنید. اگر سرور به خط
SERVER STARTEDبرسد یاLuaManager: Loading lua files...بدون کرش کامل شود، تخصیص حافظه اکنون کافی است.
راهحل ۲ — پر شدن /tmp توسط BackupsOnStart (کرش هنگام راهاندازی)
Project Zomboid میتواند طوری پیکربندی شود که هر بار که سرور شروع میشود یک پشتیبان کامل از جهان ایجاد کند. وقتی این پشتیبان در /tmp نوشته میشود — که در اکثر هاستهای Linux حجم محدودی دارد — سرور هنگام راهاندازی با خطای نوشتن روی دیسک کرش میکند وقتی /tmp پر شود.
علائم
- سرور در هر ریستارت به طور مداوم کرش میکند، ولی قبلاً کار میکرد.
- کنسول یا
debug.logشامل خطاهایی مانندIOException: No space left on deviceیا اشاره به نوشتن در/tmp/است. - کرشها با گذشت زمان بدتر میشوند زیرا حجم ذخیره جهان بزرگتر میشود.
- سرور گاهی اوقات اگر کمی بعد از ریبوت تمیز نود هاست تلاش کنید شروع میشود (قبل از اینکه
/tmpدوباره پر شود).
مراحل — غیرفعال کردن BackupsOnStart
- در GPanel، به تب File Manager بروید.
- به مسیر
/.cache/server/بروید. به دنبال فایل پیکربندی سرور خود بگردید — معمولاً با نامservertest.iniیا هر چیزی که نام سرور شماست به همراه.ini(مثلاًMyServer.ini). - فایل
.iniرا برای ویرایش باز کنید. - از قابلیت جستجوی مرورگر خود (Ctrl+F) برای جستجوی
BackupsOnStartاستفاده کنید. - مقدار را از
trueبهfalseتغییر دهید:BackupsOnStart=false - همچنین در فایل، تنظیم
BackupsOnVersionChangeرا بررسی کنید و اگر فضای دیسک نگرانی شماست آن را رویfalseتنظیم کنید:BackupsOnVersionChange=false - فایل را ذخیره کنید و سرور خود را ریستارت کنید. کنسول را مانیتور کنید تا تأیید شود که سرور به خط
SERVER STARTEDمیرسد.
/.cache/saves/multiplayer/ دانلود کنید، یا با پشتیبانی Legion Hosting تماس بگیرید تا درباره گزینههای پشتیبانگیری زمانبندیشده در پلن خود بپرسید.
راهحل ۳ — خرابی SandboxVars.lua یا پیکربندی سرور
Project Zomboid تنظیمات جهان را در یک فایل Lua به نام SandboxVars.lua ذخیره میکند. اگر این فایل به صورت دستی ویرایش شود و با خطای نحوی ذخیره شود، یا اگر انتقال فایل قطع شده باشد، سرور بلافاصله هنگام راهاندازی وقتی تلاش میکند فایل را تجزیه کند کرش خواهد کرد.
علائم
- کنسول
ERROR: SandboxVars،LuaManager errorیا یک خطای تجزیه Lua با شماره خط نشان میدهد. - کرش دقیقاً بعد از اینکه تنظیمات را در فایل
.iniیا مستقیماً درSandboxVars.luaویرایش کردید شروع شده است. - سرور ممکن است
Bad argument #1 toیا خطاهای مشابه runtime در Lua نشان دهد.
مراحل — بررسی و تعمیر SandboxVars.lua
- در GPanel، به File Manager بروید و به مسیر
/.cache/saves/multiplayer/<YourServerName>/بروید. SandboxVars.luaرا برای ویرایش باز کنید.- بررسی کنید که فایل با
VERSION = 1,(یا مشابه) در داخل یک بلوکSandboxVars = {شروع شود و با یک}بسته شود. هر کاما فراموششده، آکولاد بستهنشده، یا کاراکتر اضافی باعث خطای تجزیه میشود. - اگر نمیتوانید خطا را شناسایی کنید، امنترین راهحل حذف کامل
SandboxVars.luaاست. سرور آن را با مقادیر پیشفرض در راهاندازی بعدی بازسازی خواهد کرد. توجه: این کار تنظیمات sandbox شما (غنیمت، تعداد زامبیها و غیره) را به حالت پیشفرض بازنشانی میکند — دادههای نقشه و بازیکنان شما تحت تأثیر قرار نمیگیرند. - همچنین فایل
.iniدر/.cache/server/را برای مشکلات مشابه بررسی کنید اگر اخیراً آن را به صورت دستی ویرایش کردهاید. مطمئن شوید هر خط از فرمتKey=Valueپیروی میکند و خط خالی داخل یک مقدار وجود ندارد. - تغییرات را ذخیره کنید و سرور را ریستارت کنید.
SandboxVars.lua خودداری کنید. در عوض، از پنل ادمین درون بازی یا رابط تنظیمات سرور در GPanel در صورت موجود بودن استفاده کنید. ویرایشهای مستقیم مستعد خطا هستند و میتوانند با یک کامای فراموششده سرور را خراب کنند.
راهحل ۴ — رمز عبور خالی ادمین باعث کرش میشود
Project Zomboid برای شروع یک سرور چندنفره به یک رمز عبور ادمین غیرخالی نیاز دارد. اگر فیلد رمز عبور خالی باشد، فرآیند سرور بلافاصله پس از تلاش برای مقداردهی اولیه حساب ادمین متوقف میشود.
علائم
- سرور کاملاً جدید یا سرور اخیراً بازنشانیشده در هر تلاش شروع شکست میخورد.
- خروجی کنسول بسیار کوتاه است — سرور چند خط مقداردهی اولیه چاپ میکند و سپس متوقف میشود.
debug.logممکن است شامل ارجاع به حساب ادمین یا اعتبارسنجی رمز عبور باشد.
مراحل
- در GPanel، روی سرور خود کلیک کنید و به تب Startup بروید.
- به دنبال فیلدی با برچسب Admin Password یا RCON Password بگردید. مطمئن شوید که حاوی مقدار است — نباید خالی باشد.
- اگر فیلد خالی است، یک رمز عبور وارد کنید. حداقل ۸ کاراکتر استفاده کنید. از کاراکترهای خاص مانند
!،#،$یا@در رمز عبور ادمین خودداری کنید، زیرا برخی نسخههای PZ آنها را در آرگومانهای راهاندازی به درستی تجزیه نمیکنند. - روی Save کلیک کنید و سرور را ریستارت کنید.
- به عنوان بررسی ثانویه، فایل
.iniدر/.cache/server/را باز کنید و تأیید کنید که خطAdminPassword=بعد از علامت مساوی مقداری دارد.
راهحل ۵ — بازنشانی جهان (آخرین راهحل برای کرشهای مداوم)
اگر ذخیره جهان خراب شود — مثلاً بعد از کرش سخت سرور، آپدیت ناموفق یا خطاهای سیستم فایل — دادههای ذخیره ممکن است غیرقابل بازیابی باشند. در این حالت، حذف جهان و شروع از نو تنها گزینه است.
مراحل
- سرور خود را در GPanel قبل از ایجاد هرگونه تغییر در فایلهای ذخیره متوقف کنید. ویرایش فایلها روی سرور در حال اجرا میتواند باعث خرابی بیشتر شود.
- در GPanel، به تب File Manager بروید.
- به مسیر
/.cache/saves/multiplayer/بروید. - یک یا چند پوشه با نام سرور خود (مثلاً
servertest) خواهید دید. قبل از حذف، اختیاری پوشه را به عنوان پشتیبان با انتخاب آن و استفاده از گزینه دانلود، دانلود کنید — حتی یک ذخیره خراب ممکن است بعداً تا حدی قابل بازیابی باشد. - پوشه مطابق با نام سرور خود در داخل
Multiplayer/را حذف کنید. خود پوشهMultiplayerرا حذف نکنید. - همچنین به
/.cache/db/بروید و فایل<YourServerName>.dbرا حذف کنید. این پایگاه داده آمار بازیکنان را نگه میدارد و ممکن است به جهان قدیمی ارجاع دهد — بازسازی آن از عدم تطابق جلوگیری میکند. - سرور خود را شروع کنید. یک جهان تازه با استفاده از تنظیمات فایل
.iniشما تولید خواهد شد.
.ini، رمز عبور ادمین، لیست مادها و تنظیمات پورت همه حفظ میشوند. راهاندازی بعدی دقیقاً از همان تنظیمات برای ایجاد جهان جدید استفاده خواهد کرد.
مرجع سریع تشخیصی
| آنچه در لاگ میبینید | محتملترین علت | راهحل |
|---|---|---|
OutOfMemoryError یا Java heap space |
RAM ناکافی برای راهاندازی B42 | راهحل ۱ — باگ حافظه B42 |
IOException: No space left on device |
پر شدن /tmp توسط BackupsOnStart |
راهحل ۲ — BackupsOnStart |
خطای SandboxVars یا خطای تجزیه Lua |
فایل پیکربندی خراب یا ویرایششده دستی | راهحل ۳ — SandboxVars.lua |
| سرور بلافاصله متوقف میشود، خروجی کنسول بسیار کوتاه | رمز عبور خالی ادمین | راهحل ۴ — رمز عبور ادمین |
| کرش مداوم صرفنظر از تغییرات پیکربندی | ذخیره جهان خراب | راهحل ۵ — بازنشانی جهان |
بعد از تمام مراحل همچنان کرش میکند؟
اگر سرور شما بعد از انجام تمام راهحلهای بالا همچنان کرش میکند، یک تیکت پشتیبانی با Legion Hosting باز کنید. موارد زیر را برای کمک به تیم پشتیبانی جهت تشخیص سریع مشکل ارسال کنید:
- ۵۰ خط آخر خروجی کنسول GPanel در زمان کرش
- محتوای کامل جدیدترین فایل
debug.logیاDebugLog-server.txt - نسخه build سرور Project Zomboid شما (در کنسول هنگام راهاندازی نشان داده میشود، مثلاً
Build 42.x.x) - تخصیص RAM شما همانطور که در GPanel نشان داده میشود
- آیا کرش در هر راهاندازی رخ میدهد یا فقط بعد از اینکه سرور مدتی در حال اجرا بوده
- هرگونه تغییراتی که قبل از شروع کرش انجام دادید (افزودن ماد، ویرایش پیکربندی، آپدیت بازی)
یک تیکت پشتیبانی باز کنید و شناسه سرور و پیامهای خطا از کنسول GPanel را ارسال کنید.