თუ შენი სერვერი ზედმეტად ბევრი entity-ის გამო ლაგავს, გამოსავალი თითქმის არასოდეს არის plugin, რომელიც ყოველ რამდენიმე წუთში მიწაზე ყველაფერს შლის. დაყრილი ნივთები ისედაც ქრება ხუთი წუთის შემდეგ (6000 tick). Paper და Spigot საშუალებას გაძლევს, ისინი უფრო აგრესიულად გააერთიანო, უსარგებლო ნივთები უფრო სწრაფად გააქრო, შეზღუდო, რას ინახავს chunk, და ისრებისა და ბურთულების დაგროვება შეაჩერო - ისე, რომ არ შეეხო არაფერს, რის აღებასაც მოთამაშე აპირებს. /paper entity list-ით იპოვე, entity-ის რომელი ტიპი იზრდება, გაასწორე ფერმა ან დიზაინი, რომელიც მას აწარმოებს, და ClearLag-ის სტილის ტაიმერები შეინახე ბოლო საშუალებად საჯარო სერვერებისთვის, სადაც ყველა მშენებელს ვერ ელაპარაკები. დროზე გაწერილი წმენდა მიზეზს მალავს და მოთამაშეების ქონებას შლის, რაც ნდობაში უფრო მეტი გიჯდება, ვიდრე tick-ებში ზოგავ.
ეს entity-ებზე ორიენტირებული გზამკვლევებიდან მესამეა. სოფლელები და მობების ფერმები განხილულია სოფლელებისა და მობების ფერმების ლაგში; redstone და hopper-ები - redstone-ის ლაგსა და ლიმიტებში. აქ საქმე გვაქვს entity-ებთან, რომლებიც არავინ ააშენა განზრახ: ნივთები, გამოცდილება, ჭურვები და ფერმების ნარჩენები.
რა ითვლება entity-ად და რომლები ჯდება#
Minecraft-ის სამყაროში ყველაფერი, რაც ბლოკი არ არის, entity-ია: მოთამაშეები, მობები, დაყრილი ნივთები, გამოცდილების ბურთულები, ისრები, ვაგონები, ნავები, ჯავშნის სადგამები, ნივთების ჩარჩოები, ვარდნილი ქვიშა, ანთებული TNT, display entity-ები. ყველა ერთნაირი ფასი არ არის.
| entity-ის ტიპი | აკეთებს tick-ს? | ტიპური ღირებულება | ჭარბი რაოდენობის ჩვეული წყარო |
|---|---|---|---|
| დაყრილი ნივთები | კი | თითო დაბალი, ათასობით - მაღალი | ფერმები შეგროვების გარეშე, სიკვდილები, მობების ნადავლი |
| გამოცდილების ბურთულები | კი | თითო დაბალი | მობების grinder-ები, დნობა, გამრავლება |
| ისრები და სამკაპები | კი | დაბალი | ჩონჩხების ფერმები, PvP, dispenser-ები |
| მტრული და პასიური მობები | კი, AI-ით | საშუალოდან მაღალამდე | ფერმები, ბაკები, spawner-ები |
| ვაგონები და ნავები | კი | საშუალო | მიტოვებული რკინიგზის სისტემები, მობების ტრანსპორტი |
| ჯავშნის სადგამები | კი, ნაგულისხმევად | დაბალიდან საშუალომდე | დეკორაცია, ჰოლოგრამის plugin-ები |
| ნივთების ჩარჩოები | ძლივს | ძირითადად კლიენტის ხარჯი | საცავის კედლები, რუკები |
| ვარდნილი ბლოკები და TNT | კი | მაღალი აქტიურობისას | ქვიშის ფერმები, TNT მანქანები |
ამ ცხრილში ორი რამ არის მნიშვნელოვანი. პირველი, იაფი entity-ები ძვირი რაოდენობით ხდება: ერთი ნივთი არაფერია, რვა ათასი ნივთი ერთ chunk-ში გაფუჭებული ფერმის ქვეშ კი სერვერია, რომელიც იყინება ყოველ ჯერზე, როცა ვინმე ახლოს გაივლის. მეორე, entity-ების ზოგიერთი ხარჯი კლიენტზე და ქსელზე მოდის და არა სერვერის tick-ზე. ნივთების ჩარჩოები და ჯავშნის სადგამები ათასობით მოთამაშეების frame rate-ს აგდებს და chunk-ის პაკეტებს ბერავს გაცილებით ადრე, ვიდრე /mspt-ში გამოჩნდება.
იპოვე, რა გროვდება სინამდვილეში#
სანამ რამეს დააყენებ, გაზომე.
/paper entity list/paper entity list minecraft:item/paper entity list minecraft:experience_orb/execute if entity @e[type=minecraft:item]/paper entity list ტიპის გარეშე გაძლევს რაოდენობებს entity-ის ტიპების მიხედვით ჩატვირთულ chunk-ებში; ტიპით კი ჩამოთვლის chunk-ებს, სადაც ყველაზე მეტია, კოორდინატებით. ეს "სერვერზე ზედმეტად ბევრი entity-ა"-ს აქცევს "ერთ chunk-ში x: -310, z: 2290-ზე 4,100 ნივთია"-დ, რაც გაფუჭებული შეგროვების სისტემის მქონე ფერმაა და მფლობელი, რომელსაც შეგიძლია მისწერო.
შეამოწმე სხვადასხვა დროს. entity-ების დაგროვება ლოკალურია და მხოლოდ ჩატვირთულ chunk-ებში არსებობს, ამიტომ დილის 4 საათზე აღებული რაოდენობა არაფერს გეუბნება ბაზაზე, რომელიც საღამოს 8 საათზე იტვირთება. თუ ტენდენციის თვალყურის დევნება გინდა, ყოველ საღამოს ფიქსირებულ დროს გაუშვი დათვლა და ჩაინიშნე - მარტივი ჟურნალი სტაფის არხში საკმარისია.
შემდეგ ღირებულება პროფაილით დაადასტურე. თუ spark აჩვენებს, რომ entity-ების tick-ი chunk-ების ჩატვირთვასთან ან plugin-თან შედარებით მცირეა, entity-ების რაოდენობა სხვა რამის სიმპტომია ან უბრალოდ პრობლემა არ არის. spark-ის რეპორტის წაკითხვა გაჩვენებს, სად უნდა იყურო.
despawn და merge პარამეტრები, რომლებიც საქმეს აკეთებს#
entity-ების გასუფთავების უმეტესობა, რაც გჭირდება, Paper-სა და Spigot-ში უკვე ჩაშენებულია. უბრალოდ მორგებული არ არის.
merge-radius: item: 2.5 exp: 3.0item-despawn-rate: 6000arrow-despawn-rate: 1200trident-despawn-rate: 1200ეს ნაგულისხმევი მნიშვნელობებია. რას აკეთებს თითოეული და რისი შეცვლა ღირს:
merge-radius.itemაკონტროლებს, რამდენად ახლოს უნდა იყოს ერთნაირი დაყრილი ნივთები, რომ ერთ დაწყობილ entity-ად გაერთიანდეს.3.5-მდე ან4.0-მდე აწევა ფერმების ქვეშ item entity-ების რაოდენობას შესამჩნევად ამცირებს. ნივთები ოდნავ უფრო დიდი მანძილიდან ხილულად ეკვრის ერთმანეთს, რაც არავის აწუხებს.merge-radius.expიგივეს აკეთებს გამოცდილების ბურთულებისთვის. თანამედროვე ვერსიები თანაბარი ღირებულების ბურთულებს თავისითაც აერთიანებს, ამიტომ ამის აწევას ნაკლები ეფექტი აქვს, ვიდრე ადრე, მაგრამ grinder-ების ქვეშ მაინც გეხმარება.item-despawn-ratetick-ებშია:6000vanilla-ს ხუთი წუთია. მისი გლობალური შემცირება ClearLag-ის უხეში ვერსიაა და იმ მოთამაშეს ურტყამს, რომლის სიკვდილის გროვაც ორი ბლოკის მოშორებითაა. ამის ნაცვლად ქვემოთ მოცემული ნივთების მიხედვით ოფცია გამოიყენე.arrow-despawn-rateდაtrident-despawn-rateნაგულისხმევად1200tick-ია (ერთი წუთი) ბლოკებში ჩარჭობილი ჭურვებისთვის. ისრების300-მდე შემცირება უვნებელია და ჩონჩხების ფერმებსა და სასროლეთებს ასუფთავებს. სამკაპები დატოვე: მოთამაშეს, რომელიც მას ისვრის, უკან დაბრუნება უნდა.
Paper config/paper-world-defaults.yml-ში უფრო ზუსტ კონტროლს ამატებს:
entities: spawning: alt-item-despawn-rate: enabled: true items: cobblestone: 300 netherrack: 300 rotten_flesh: 600 bamboo: 600alt-item-despawn-rate სწორი ინსტრუმენტია ნაგვისთვის. სამთო გასვლიდან დარჩენილი cobblestone და გვირაბიდან დარჩენილი netherrack ხუთი წუთის ნაცვლად თხუთმეტ წამში ქრება; ყველაფერი დანარჩენი vanilla-ს ტაიმერს ინარჩუნებს, ასე რომ დაგდებულ ალმასის წერაქვს არაფერი ემართება. სია შეადგინე იმის მიხედვით, რაც სინამდვილეში ჩანს /paper entity list minecraft:item-ში შენს სერვერზე, და ნუ დააკოპირებ სხვისას - ფერმების სერვერის ნაგავი სამთო სერვერისას არ ჰგავს.
Paper-ის სხვა ოფციები იმავე ფაილში, რომელთა ცოდნაც ღირს:
entities.spawning.non-player-arrow-despawn-rateდაcreative-arrow-despawn-rateჩონჩხების, dispenser-ებისა და creative მოთამაშეების ისრებს უფრო სწრაფად აქრობს. ორივე ნაგულისხმევადdefault-ია, რაც Spigot-ის მნიშვნელობას ნიშნავს.entities.armor-stands.tick: trueაკონტროლებს, აკეთებს თუ არა ჯავშნის სადგამები tick-ს.false-ზე დაყენება სამუშაოს ზოგავს სერვერებზე ათასობით დეკორატიული სადგამით; ის აფუჭებს სადგამებს, რომლებსაც ფიზიკა სჭირდება ან რომლებსაც plugin ამოძრავებს, ამიტომ ჯერ გამოსცადე.entities.armor-stands.do-collision-entity-lookups: trueშეიძლებაfalse-ზე დაყენდეს, რომ სადგამებმა შეჯახებები აღარ შეამოწმონ - მცირე დანაზოგი დეკორაციით დატვირთულ სერვერებზე.entities.spawning.despawn-rangesაკონტროლებს მობების რბილ და მკაცრ despawn-ის მანძილებს, რაც გავლენას ახდენს იმაზე, რამდენად სწრაფად ქრება არასაჭირო მობები, როცა მოთამაშეები შორდებიან.
გასაღებები Paper-ის ვერსიებს შორის გადაადგილდება. გახსენი ფაილი, რომელიც შენმა სერვერმა დააგენერირა, და მოძებნე გასაღების სახელი, ნაცვლად იმისა, რომ გზამკვლევიდან ბლოკი ჩასვა - მათ შორის ამ გზამკვლევიდანაც.
chunk-ის შენახვის ლიმიტები: დაცვა entity-ბომბებისგან#
ზოგჯერ პრობლემა tick კი არა, ჩატვირთვაა. chunk, რომელშიც ჩაუტვირთავ მდგომარეობაში ათი ათასი გამოცდილების ბურთულა ან ისარი დაგროვდა, ან chunk, რომელიც ვიღაცამ განზრახ entity-ებით გაავსო, სერვერს ყინავს ყოველ ჯერზე, როცა იტვირთება. Paper-ს ამისთვის დაცვა აქვს:
chunks: entity-per-chunk-save-limit: arrow: 100 experience_orb: 100 snowball: 50 ender_pearl: 20 fireball: 20 small_fireball: 20ნაგულისხმევად ყველა ჩანაწერი -1-ია, რაც შეუზღუდავს ნიშნავს. ლიმიტის დაყენების შემდეგ chunk ამ ტიპისგან მხოლოდ ამდენს ინახავს; დანარჩენი chunk-ის გადმოტვირთვისას იკარგება. ჭურვებისა და ბურთულებისთვის ეს სრულიად უსაფრთხოა და ხურავს entity-ებით გატენილი chunk-ებით სერვერების ჩამოგდების ცნობილ გზას.
ნუ გამოიყენებ მას ნივთებისა და ცხოველების ზოგად ლიმიტად. ის ზედმეტს შენახვისას ჩუმად შლის, და მოთამაშეს, რომელიც აღმოაჩენს, რომ მისი ძროხები გაქრა ან სკივრის მტვრევის შემდეგ დარჩენილი გროვა აღარ არის, არანაირი საშუალება არ აქვს გაიგოს, რატომ. ნივთებისა და ცხოველებისთვის წყარო გაასწორე და დააწესე წესები, რომლებსაც მოთამაშეები ხედავენ.
ხელით გასუფთავება, რომელიც არავის ავნებს#
არის მომენტები, როცა entity-ების მოშორება ახლავე გჭირდება - ფერმა ღამით გაფუჭდა და chunk ნივთებში ჩაფლა, ან grief-ერმა ასობით მობი გააჩინა. vanilla-ს სელექტორები საკმარისად ზუსტია, რომ ეს უსაფრთხოდ გააკეთო.
/kill @e[type=minecraft:item,distance=..64]/kill @e[type=minecraft:experience_orb]/kill @e[type=minecraft:arrow]/kill @e[type=minecraft:item,nbt={Item:{id:"minecraft:cobblestone"}}]/kill @e[type=minecraft:zombie,distance=..100]ზონით შეზღუდული ბრძანებები გაუშვი საჭირო ადგილიდან - დადექი იქ თამაშში, ან კონსოლიდან შეფუთე ისინი /execute positioned <x> <y> <z> run ...-ში. distance=..64 ფილტრი ნიშნავს 64 ბლოკის ფარგლებში იქიდან, სადაც ბრძანება სრულდება; კონსოლიდან პოზიციის გარეშე ის სამყაროს spawn-იდან იზომება, რაც იშვიათად არის ის, რაც გინდა. ნივთებზე NBT ფილტრი ვერსიაზეა დამოკიდებული (ნივთების NBT 1.20.5-ში component-ებით შეიცვალა), ამიტომ ჯერ ერთ ნივთზე გამოსცადე.
სანამ ამას გააკეთებ, მოთამაშეებს უთხარი. შეტყობინება ჩატში და ერთი წუთის ლოდინი არაფერი ჯდება და ერიდება იმ ერთ ადამიანს, რომლის სიკვდილის გროვაც რადიუსში იყო. /minecraft: პრეფიქსის გამოყენება ღირს, როცა plugin-ები /kill-ს საკუთარი ვერსიით გადაფარავს.
ClearLag და დროზე გაწერილი წმენდა#
ClearLag entity-ების წაშლის ყველაზე ცნობილი plugin-ია. ის ტაიმერით მუშაობს, გაფრთხილებებს აგზავნის, შლის entity-ის ტიპებს, რომლებსაც დააკონფიგურირებ, და გთავაზობს ბრძანებებს, როგორიცაა /lagg clear entity-ების დაუყოვნებლივ წასაშლელად, /lagg check მათ დასათვლელად და /lagg killmobs მობების მოსაშორებლად. ის დიდი ხანია არსებობს და მისი განვითარება წყვეტილი იყო, ამიტომ მასზე დაყრდნობამდე შეამოწმე, რომ ჩამოტვირთული build შენს Minecraft-ის ვერსიას უჭერს მხარს.
რას აკეთებს კარგად:
- დიდ საჯარო სერვერზე, სადაც ყველა ფერმას ვერ შეამოწმებ, მიწაზე დაყრილი ნივთების დროზე გაწერილი წმენდა ხილული უკუთვლით უარეს შემთხვევას ჭერს უწესებს.
- მისი დათვლის ბრძანებები ჯამების სწრაფად სანახავი გზაა.
რას აკეთებს ცუდად:
- ის სიმპტომს შლის. ფერმა აწარმოებს და აწარმოებს; plugin შლის და შლის. ნივთების წარმოების tick-ის ღირებულება ისევ იქვეა.
- ის ქონებას შლის. სიკვდილის გროვები, ვაჭრობისთვის დაგდებული ნივთები, shulker box, რომელიც ვიღაცამ წამით დადო. უკუთვლა გეხმარება; არ ეხმარება მოთამაშეს, რომელიც აბაზანაში იყო.
- ის ცუდ ნაგებობებს ახალისებს. თუ მიწა ყოველ ხუთ წუთში სუფთავდება, შეგროვების სისტემების აშენება არავის სჭირდება, და არც აშენებენ.
- ფუნქციები, რომლებიც სასარგებლოდ ჟღერს, ხშირად ასეთი არ არის. ყველაფერი, რაც რეკლამირებულია, როგორც მეხსიერების გათავისუფლება Java-ს garbage collector-ის გამოძახებით, თანამედროვე JVM-ზე სასარგებლოს არაფერს აკეთებს და შეიძლება პაუზა გამოიწვიოს. მეხსიერება და entity-ების რაოდენობა სხვადასხვა პრობლემაა - ნახე, რამდენი RAM სჭირდება Minecraft სერვერს.
თუ მაინც იყენებ დროზე გაწერილ წმენდას, შეზღუდე ის ნაგვის ტიპის ნივთებით, გამორიცხე სახელიანი ნივთები და ყველაფერი ძვირფასების სიიდან, ინტერვალი გრძელი დატოვე (ათი წუთი ან მეტი) და გაფრთხილებები - ნათელი. whitelist-იან მეგობრების სერვერზე საერთოდ ნუ გამოიყენებ; შეგიძლია დაელაპარაკო ადამიანს, რომლის ფერმაც გადაივსო.
დაწყობის plugin-ები (RoseStacker გავრცელებულია) სხვა მიდგომას იყენებს: ისინი ბევრ მობს ან ნივთს ერთ entity-ად აერთიანებს რაოდენობის მითითებით. ეს entity-ების რაოდენობას მკვეთრად ამცირებს და ცვლის, როგორ იქცევა ფერმები და მობების ნადავლი, ამიტომ ეს იმდენადვე გეიმფლეის გადაწყვეტილებაა, რამდენადაც წარმადობის.
წყაროს გასწორება#
entity-ების ყოველ პრობლემას მშენებელი უდგას უკან. გამოსწორებები იშვიათად არის რთული.
- შეგროვება ყოველი ფერმის ქვეშ. წყლის ნაკადები რამდენიმე hopper-ში ან hopper-ების ხაზი, რომელიც საცავს კვებავს. ფერმა, რომელიც მიწაზე ყრის, დასრულებული არ არის.
- გადავსების მართვა. როცა საცავი ივსება, ნივთები უკან გროვდება და იღვრება. მშენებლებმა უნდა დაამატონ გადავსების გამოსავალი, რომელიც ან ფერმას აჩერებს, ან ზედმეტს ლავის ან კაქტუსის ნაგვის ყუთით ანადგურებს - განზრახ განადგურება გროვაზე იაფია.
- მოსაკლავი კამერები, რომლებიც კლავს. მობების grinder, რომელიც მობებს მოსაცდელ ზონაში ცოცხლად ტოვებს, AI-ის ბაკია. მოკალი სწრაფად, შეაგროვე დაუყოვნებლივ.
- გამოუყენებელი ტრანსპორტი არ უნდა იყოს. მიტოვებული ვაგონების ჯაჭვები და ნავები მობებით tick-ს აგრძელებს. პროექტის დასრულებისას გაასუფთავე.
- დეკორაცია ზომიერად. საცავის ოთახი სამასი ნივთის ჩარჩოთი კლიენტის frame rate-ის პრობლემაა ყველასთვის, ვინც შედის, თუნდაც სერვერს არ აწუხებდეს.
ჩაწერე ეს სერვერის წესებად და დააკავშირე ბაზის ლიმიტებთან შენს სოფლელებისა და redstone-ის წესებში. წესები, მოდერაცია და სტაფი განიხილავს, როგორ აიძულო მათი დაცვა.
RE:NODE-ზე დათვლის ბრძანებები და /kill-ის უსაფრთხო ფორმები პირდაპირ პანელის კონსოლიდან შეგიძლია გაუშვა, ფილტრის გარეშე გამონატანით, და შემდეგ უყურო, როგორ მშვიდდება მეხსიერებისა და CPU-ს გრაფიკები. ნებისმიერ მასობრივ გასუფთავებამდე პანელიდან backup გააკეთე - ეს ერთი ღილაკია, მანქანის გარეთ ინახება და შეცდომით აკრეფილი სელექტორი ზუსტად ის შემთხვევაა, რისთვისაც არსებობს. backup-ები, რომლებიც მართლა აღდგება ხსნის, რატომ ღირს ერთის გამოცდა.
FAQ#
რამდენ ხანს ძლებს დაყრილი ნივთები Minecraft-ში?
ხუთ წუთს, ანუ 6000 tick-ს, თუ არ შეცვლილა spigot.yml-ში item-despawn-rate-ით ან კონკრეტული ნივთებისთვის Paper-ის alt-item-despawn-rate-ით. ჩაუტვირთავ chunk-ებში ნივთები არ ბერდება, ამიტომ გროვა chunk-ში, რომელსაც არავინ სტუმრობს, ელოდება, სანამ ვინმე მივა.
ცუდია თუ არა ClearLag ჩემი სერვერისთვის?
ცუდი არა, მაგრამ უხეში. ის entity-ების რაოდენობას ნივთების წაშლით ამცირებს, რაც მალავს ფერმას ან დიზაინს, რომელიც მათ იწვევს, და ზოგჯერ შლის რამეს, რაც მოთამაშეს უნდოდა. ჯერ Paper-ის merge და despawn პარამეტრები მოარგე და ClearLag მხოლოდ იქ გამოიყენე, სადაც წყაროებს სათითაოდ ვერ ასწორებ.
რა არის ყველა დაყრილი ნივთის წაშლის ყველაზე უსაფრთხო გზა?
/kill @e[type=minecraft:item], იდეალურად მანძილით შეზღუდული და გაფრთხილების შემდეგ გაშვებული. /kill @e ტიპის ფილტრის გარეშე არასოდეს გამოიყენო, რადგან ის მოთამაშეებს, შინაურ ცხოველებს, სოფლელებს, ნივთების ჩარჩოებსა და ჯავშნის სადგამებსაც შლის.
იწვევს თუ არა ლაგს ნივთების ჩარჩოები და ჯავშნის სადგამები?
ჯავშნის სადგამები ნაგულისხმევად tick-ს აკეთებს და თითო ცოტა ჯდება; Paper-ს ამის გამორთვა შეუძლია. ნივთების ჩარჩოები თითქმის არ აკეთებს tick-ს, მაგრამ კლიენტსა და ქსელს უჯდება, ამიტომ მათით სავსე ოთახი მოთამაშეების frame rate-ს უფრო აზიანებს, ვიდრე სერვერის tick-ს.
რატომ იყინება ჩემი სერვერი, როცა ვინმე ერთ ბაზასთან მიდის?
იტვირთება chunk უზარმაზარი რაოდენობის entity-ით, ხშირად ნივთებით ან ბურთულებით, რომლებიც ფერმის ქვეშ დაგროვდა. შეამოწმე /paper entity list-ით, სანამ მოთამაშე იქაა, შემდეგ დააყენე entity-per-chunk-save-limit ჭურვებისა და ბურთულებისთვის და გაასწორე ფერმის შეგროვება.




კომენტარები
სრულიად ანონიმურად: ანგარიშის, ელფოსტის და cookie-ის გარეშე. ინახება მხოლოდ სახელი, ტექსტი და დრო - სხვა არაფერი. ბმულების რაოდენობა ლიმიტირებულია.