چگونه لگ سرور Minecraft را برطرف کنیم
در این صفحه
«سرور لگ دارد» میتواند سه مشکل متفاوت باشد و هر کدام راهحل متفاوتی دارد. برگشتن به عقب و بلوکهایی که بعد از شکستن دوباره ظاهر میشوند یعنی سرور عقب افتاده است. پینگی که بالا و پایین میپرد مشکل شبکه است. تصویر تکهتکه برای یک نفر در حالی که بقیه مشکلی ندارند، مربوط به کامپیوتر خود آن بازیکن است.
این راهنما نشان میدهد چطور اینها را از هم تشخیص دهید، چطور لگ سرور را با TPS، MSPT و یک پروفایل spark درست اندازه بگیرید، کدام تنظیمات روی Paper واقعاً کمک میکنند و چطور بفهمید کی پاسخ واقعاً RAM بیشتر یا CPU سریعتر است — و کی نیست.
لگ سرور، لگ شبکه یا لگ کلاینت؟
| آنچه بازیکنان میبینند | چطور مطمئن شویم | |
|---|---|---|
| لگ سرور | همه با هم: برگشتن به عقب، یخ زدن موبها، برگشتن بلوکها، تأخیر در چت | TPS زیر 20، یا زمان tick برابر 50 ms و بیشتر |
| لگ شبکه | یک یا چند بازیکن: تلپورت به عقب، ضربههایی که ثبت نمیشوند | پینگ بالا برای همان بازیکنان، در حالی که TPS روی 20 میماند |
| لگ کلاینت | یک بازیکن: نرخ فریم پایین، لرزش هنگام چرخیدن | FPS پایین در صفحه F3 همان بازیکن، اعداد سرور سالم |
سریعترین آزمون این است که بپرسید آیا همه در یک لحظه لگ دارند. سروری که عقب میافتد همه بازیکنان را با هم متوقف میکند؛ اتصال بد یا کامپیوتر کند فقط روی صاحب خودش اثر دارد. بقیه این راهنما درباره لگ سرور است.
لگ به خاطر سختافزار کند؟ سرورهای Minecraft در HytHost روی پردازندههای Ryzen 7 و Intel i9 با فرکانس بالا اجرا میشوند — از €2.59 در ماه.
مشاهده پلنهای Minecraftاول اندازه بگیرید: TPS، MSPT و spark
سرور Minecraft با 20 tick در ثانیه کار میکند، پس هر tick 50 ms فرصت دارد تمام شود. دو عدد نشان میدهند سرور چطور از پس کار برمیآید:
- TPS (tick در ثانیه): 20 یعنی سرور عقب نمیماند؛ زیر 20 دنیا کند میشود.
- MSPT (میلیثانیه برای هر tick): هر tick چقدر طول میکشد. زیر 50 ms وقت اضافه هست؛ بالای 50 ms سرور عقب میافتد.
Paper دستورهای /tps و /mspt را دارد، اما مستندات خودش به spark ارجاع میدهد که از 1.21 در Paper گنجانده شده و بهصورت ماد برای Fabric، Forge و NeoForge هم در دسترس است:
/spark tps /spark health /spark ping
/spark tps مقدار TPS را در ثانیهها و دقیقههای اخیر نشان میدهد و — مفیدتر از آن — مدت tickها را بهصورت کمینه، میانه، صدک 95 و بیشینه. /spark ping پینگ بازیکنان را نشان میدهد و سؤال «سرور یا شبکه» را حل میکند. /spark health هم CPU، حافظه و دیسک را اضافه میکند.
علت را با پروفایل spark پیدا کنید
اعداد میگویند که سرور لگ دارد؛ پروفایل میگوید چرا. آن را در همان زمانی که لگ رخ میدهد شروع کنید و بگذارید چند دقیقه اجرا شود:
/spark profiler start --timeout 300
وقتی تمام شد، spark لینکی به نمایشگر وب خودش میفرستد. در آن:
- Server thread را باز کنید — رشته اصلی که دنیا را اجرا میکند. لگ همینجاست.
- مواردی را که بیشترین درصد را دارند باز کنید: زمان tick همانجا صرف میشود.
- به نمای Sources بروید تا زمان را به تفکیک پلاگین یا ماد ببینید. یک پلاگین یا ماد که سهم بزرگی از رشته اصلی را میگیرد معمولاً همان پاسخ شماست.
دو ابزار دیگر برای لگی که میآید و میرود کمک میکنند: /spark tickmonitor هر tick طولانی را گزارش میکند و /spark profiler start --only-ticks-over 100 فقط tickهای کند را ثبت میکند تا یک جهش نادر در میانگین گم نشود.
اصلاحاتی که مهماند، به ترتیب
1. فاصله دید و فاصله شبیهسازی
در server.properties، simulation-distance تعیین میکند دنیا تا چه فاصلهای از بازیکنان واقعاً شبیهسازی شود — موبها، محصولات، ردستون — و view-distance تعیین میکند chunkها تا چه فاصلهای برای بازیکنان فرستاده شوند. پیشفرض هر دو 10 است. کم کردن simulation-distance اغلب بزرگترین بهبود است: 6 تا 8 را امتحان کنید و view-distance را کمی بالاتر نگه دارید تا دنیا همچنان باز به نظر برسد. اینها نقطه شروعاند، نه مقادیر رسمی؛ قبل و بعد اندازه بگیرید.
2. دنیا را از قبل تولید کنید
تولید chunkهای جدید یکی از پرهزینهترین کارهای سرور است و بازیکنانی که در جهتهای مختلف کاوش میکنند مدام آن را به این کار وادار میکنند. پلاگین (یا ماد) Chunky نقشه را از قبل تولید میکند:
chunky radius 5000 chunky start chunky pause chunky continue
آن را وقتی کسی بازی نمیکند اجرا کنید — پیشتولید در حال اجرا ذاتاً باعث میشود سرور «Can't keep up» گزارش دهد — و وقتی بازیکنان وارد میشوند متوقفش کنید.
3. موجودیتها و مزرعهها
مزرعههای موب، سالنهای روستاییها و انبوه آیتمها رایجترین مصرفکننده دائمیاند. در Paper و Spigot، entity-activation-range در spigot.yml تعیین میکند بازیکن چقدر باید نزدیک باشد تا یک موجودیت بهطور کامل tick شود، و merge-radius آیتمهای افتاده و گویهای تجربه را ادغام میکند. مزرعههای موب را با پلاگین یا قانون محدود کنید و انبوه آیتمهای فراموششده را پاک کنید.
4. قیفها و ردستون
زنجیرههای بزرگ قیف پرهزینهاند. در spigot.yml، ticks-per.hopper-transfer تعیین میکند هر چند وقت یک بار آیتم جابهجا کنند، و hopper.disable-move-event در Paper آنها را خیلی سریعتر میکند — اما پلاگینهای محافظتی را که به آن رویداد متکیاند خراب میکند. برای ردستون، misc.redstone-implementation: ALTERNATE_CURRENT در Paper میتواند لگ ناشی از گرد ردستون را بسیار کم کند، اما رفتار گرد را تغییر میدهد، پس اول سازههایتان را آزمایش کنید.
5. پلاگین یا مادی که در پروفایل دیده میشود
اگر پروفایل spark به یک پلاگین یا ماد اشاره کند، اصلاح همان است: بهروزش کنید، تنظیماتش را سبکتر کنید یا جایگزینش کنید. هیچ مقدار RAM یک پلاگین بدنوشته را سریعتر نمیکند.
«TPS روی 20 است ولی باز هم لگ دارد»
این گیجکنندهترین حالت است و تقریباً همیشه یک توقف tick است: بیشتر tickها سریعاند، اما هر از گاهی یکی صدها میلیثانیه طول میکشد. میانگین روی 20 میماند، با این حال همه یک یخزدگی را حس میکنند.
- بیشینه زمان tick را بررسی کنید در
/spark tps، یا/spark tickmonitorرا اجرا کنید. جهشهای چندصد میلیثانیهای آن را تأیید میکنند. - علت معمول پلاگینی است که روی رشته اصلی منتظر میماند — اسکین یا سر بازیکنان را از اینترنت میگیرد، به یک webhook پیام میفرستد، بهروزرسانی یا مجوز را بررسی میکند، یا یک فایل یا پایگاه داده را بهصورت همزمان ذخیره میکند. سرور در طول انتظار هیچ کاری نمیکند.
- انتظار را پروفایل کنید، نه فقط محاسبه را. پروفایل معمولی کار CPU را نشان میدهد؛ رشتهای که منتظر است بیکار به نظر میرسد. از
/spark profiler start --thread *استفاده کنید تا محل صرف زمان، شامل انتظارها، ثبت شود و دنبال فراخوانیهای شبکه یا فایل روی Server thread بگردید.
اصلاح در خود پلاگین است — فراخوانیهای ناهمزمان، یا یک پلاگین دیگر. RAM بیشتر، CPU سریعتر یا اتصال بهتر کمکی نمیکند، چون سرور کمبود چیزی ندارد؛ فقط منتظر است.
کی پاسخ واقعاً RAM یا CPU است
Minecraft دنیا را روی یک رشته اصلی شبیهسازی میکند. این دو پیامد دارد:
- سرعت CPU در هر هسته از همه مهمتر است. اگر spark نشان دهد Server thread مشغول کار عادی دنیاست — موجودیتها، chunkها، tick بلوکها — و MSPT بالاست، یک CPU سریعتر کمک میکند، جایی که هستههای بیشتر کمکی نمیکنند.
- RAM فقط وقتی کمک میکند که کم دارید. نشانهها: سرور با رسیدن به سقف حافظه ریاستارت میشود، یا مکثهای garbage collection بر پروفایل غالباند. فراتر از نیاز دنیا و مادها، RAM بیشتر هیچ تأثیری بر سرعت tick ندارد — و یک heap بیش از حد بزرگ و تنظیمنشده میتواند مکثهای garbage collection را طولانیتر کند.
اینکه سرور چقدر RAM لازم دارد و فلگهای اجرایی که garbage collection را کوتاه نگه میدارند، در سرور Minecraft چقدر RAM لازم دارد توضیح داده شدهاند. انتخاب بین Paper، Purpur و بقیه در بهترین نرمافزار سرور Minecraft آمده است.
لگ و سرور شما در HytHost
همه پلنهای Minecraft در HytHost روی یک سختافزار اجرا میشوند: پردازندههای Ryzen 7 و Intel i9 با boost تا 5.0 GHz، حافظه DDR4 و ذخیرهسازی NVMe — همان سرعت تکرشتهای که Minecraft به آن وابسته است. spark از قبل بخشی از Paper است، پس میتوانید بلافاصله از کنسول پروفایل بگیرید.
اگر پروفایل نشان دهد سرور واقعاً برای دنیا و مادهایش حافظه کم دارد، از پنل به پلن بالاتر بروید؛ دنیا سر جایش میماند. اگر به یک پلاگین یا مزرعه اشاره کند، اول آن را اصلاح کنید — رایگان است و روی هر پلنی جواب میدهد. هاستینگ Minecraft را ببینید، یا پلنهای بزرگتر را در هاستینگ پریمیوم Minecraft از €11.65 در ماه.
فضای بیشتر برای مادپکها و دنیاهای بزرگ: MC Diamond با 9 GB به قیمت €11.65 در ماه، و ارتقا دنیای شما را حفظ میکند.
مشاهده پلنهای Minecraftپرسشهای متداول
20 TPS، که هدف خود بازی است. تا وقتی هر tick کمتر از 50 ms طول بکشد (MSPT زیر 50) حفظ میشود. زمان tick در صدک 95 و بیشینه را هم در /spark tps زیر نظر داشته باشید، چون میانگین 20 میتواند یخزدگیهای کوتاه را پنهان کند.
فقط اگر سرور واقعاً کمبود حافظه داشته باشد، مثلاً اگر در سقف حافظه ریاستارت شود یا garbage collection بر پروفایل غالب باشد. بیشتر لگ از رشته اصلی میآید: موجودیتها، تولید chunk، ردستون یا یک پلاگین کند، و RAM بیشتر اینها را سریعتر نمیکند.
Purpur بر پایه Paper ساخته شده و گزینههای پیکربندی و قابلیتهای گیمپلی زیادی اضافه میکند؛ بهطور رسمی ادعا نمیکند سریعتر است. برای لگ، تنظیمات و پلاگینهای سرور شما خیلی بیشتر از انتخاب بین این دو اهمیت دارند.
پیشفرض برای هر دو view-distance و simulation-distance برابر 10 است. کم کردن simulation-distance به حدود 6 تا 8 معمولاً بیشترین کمک را میکند، چون محدودهای را که سرور شبیهسازی میکند کوچک میکند. view-distance را کمی بالاتر نگه دارید تا دنیا همچنان باز به نظر برسد، و قبل و بعد اندازه بگیرید.
در زمانی که سرور لگ دارد، /spark profiler start --timeout 300 را اجرا کنید. سپس spark لینکی به نمایشگر خود میفرستد: Server thread را باز کنید، مواردی با بیشترین درصد را باز کنید و از نمای Sources استفاده کنید تا ببینید کدام پلاگین یا ماد وقت را میگیرد.
سختافزار سریع برای دنیایی روان
هاستینگ Minecraft در HytHost همه پلنها را روی پردازندههای Ryzen 7 و Intel i9 با فرکانس بالا و ذخیرهسازی NVMe اجرا میکند، و ارتقا دنیای شما را حفظ میکند — از €2.59 در ماه.
Live chat 8 AM – 11 PM (Chișinău time) · tickets answered during business hoursاین راهنما برایتان مفید بود؟