I average almost 100 players. What are some important changes i should make to the file to help the server run smoother?
Provide more information. What kind of server is it? How many players at peak hours, and how long are the peak hours, or is the server not 24/7? How big is your world? Where is the server located, and where are your players from? Information like these affects a lot.
Server im guessing gamemode: Prison, PMMP 3.8.5 Hovers around 60-70 players, Peak Hours Noon: 85-95 player Untill Raklib crashes so 2H, i try to run it 24h Huston, Texas Not sure about the players never asked lol i ran a quick timings https://timings.pmmp.io/?id=3683 Spoiler: My yml # Main configuration file for PocketMine-MP # These settings are the ones that cannot be included in server.properties # Some of these settings are safe, others can break your server if modified incorrectly # New settings/defaults won't appear automatically in this file when upgrading. settings: #Whether to send all strings translated to server locale or let the device handle them force-language: false shutdown-message: "Server restart, rejoin!" #Allow listing plugins via Query query-plugins: true #Show a console message when a plugin uses deprecated API methods deprecated-verbose: true #Enable plugin and core profiling by default enable-profiling: false #Will only add results when tick measurement is below or equal to given value (default 20) profile-report-trigger: 20 #Number of AsyncTask workers. #Used for plugin asynchronous tasks, world generation, compression and web communication. #Set this approximately to your number of cores. #If set to auto, it'll try to detect the number of cores (or use 2) async-workers: auto #Whether to allow running development builds. Dev builds might crash, break your plugins, corrupt your world and more. #It is recommended to avoid using development builds where possible. enable-dev-builds: false memory: #Global soft memory limit in megabytes. Set to 0 to disable #This will trigger low-memory-triggers and fire an event to free memory when the usage goes over this global-limit: 0 #Main thread soft memory limit in megabytes. Set to 0 to disable #This will trigger low-memory-triggers and fire an event to free memory when the usage goes over this main-limit: 0 #Main thread hard memory limit in megabytes. Set to 0 to disable #This will stop the server when the limit is surpassed main-hard-limit: 0 #AsyncWorker threads' hard memory limit in megabytes. Set to 0 to disable #This will crash the task currently executing on the worker if the task exceeds the limit #NOTE: THIS LIMIT APPLIES PER WORKER, NOT TO THE WHOLE PROCESS. async-worker-hard-limit: 0 #Period in ticks to check memory (default 1 second) check-rate: 20 #Continue firing low-memory-triggers and event while on low memory continuous-trigger: true #Only if memory.continuous-trigger is enabled. Specifies the rate in memory.check-rate steps (default 30 seconds) continuous-trigger-rate: 30 garbage-collection: #Period in ticks to fire the garbage collector manually (default 30 minutes), set to 0 to disable #This only affects the main thread. Other threads should fire their own collections period: 36000 #Fire asynchronous tasks to collect garbage from workers collect-async-worker: true #Trigger on low memory low-memory-trigger: true #Settings controlling memory dump handling. memory-dump: #Dump memory from async workers as well as the main thread. If you have issues with segfaults when dumping memory, disable this setting. dump-async-worker: true max-chunks: #Cap maximum render distance per player when low memory is triggered. Set to 0 to disable cap. chunk-radius: 4 #Do chunk garbage collection on trigger trigger-chunk-collect: true world-caches: #Disallow adding to world chunk-packet caches when memory is low disable-chunk-cache: true #Clear world caches when memory is low low-memory-trigger: true network: #Threshold for batching packets, in bytes. Only these packets will be compressed #Set to 0 to compress everything, -1 to disable. batch-threshold: 256 #Compression level used when sending batched packets. Higher = more CPU, less bandwidth usage compression-level: 7 #Use AsyncTasks for compression. Adds half/one tick delay, less CPU load on main thread async-compression: true #Experimental, only for Windows. Tries to use UPnP to automatically port forward upnp-forwarding: false #Maximum size in bytes of packets sent over the network (default 1492 bytes). Packets larger than this will be #fragmented or split into smaller parts. Clients can request MTU sizes up to but not more than this number. max-mtu-size: 1492 debug: #If > 1, it will show debug messages in the console level: 1 player: #Choose whether to enable player data saving. save-player-data: true anti-cheat: #If false, will try to prevent speed and noclip cheats. May cause movement issues. allow-movement-cheats: true level-settings: #The default format that levels will use when created default-format: pmanvil chunk-sending: #To change server normal render distance, change view-distance in server.properties. #Amount of chunks sent to players per tick per-tick: 4 #Radius of chunks that need to be sent before spawning the player spawn-radius: 4 chunk-ticking: #Max amount of chunks processed each tick per-tick: 40 #Radius of chunks around a player to tick tick-radius: 3 light-updates: false clear-tick-list: true #IDs of blocks not to perform random ticking on. disable-block-ticking: #- 2 # grass chunk-generation: #Max. amount of chunks in the waiting queue to be populated population-queue-size: 8 ticks-per: autosave: 6000 auto-report: #Send crash reports for processing enabled: false send-code: true send-settings: true send-phpinfo: false use-https: true host: crash.pmmp.io anonymous-statistics: #Sends anonymous statistics for data aggregation, plugin usage tracking enabled: false #TODO: re-enable this when we have a new stats host host: stats.pocketmine.net auto-updater: enabled: false on-update: warn-console: true warn-ops: true #Can be development, alpha, beta or stable. preferred-channel: stable #If using a development version, it will suggest changing the channel suggest-channels: true host: update.pmmp.io timings: #Choose the host to use for viewing your timings results. host: timings.pmmp.io console: #Choose whether to enable server stats reporting on the console title. #NOTE: The title ticker will be disabled regardless if console colours are not enabled. title-tick: true aliases: #Examples: #showtheversion: version #savestop: [save-all, stop] worlds: #These settings will override the generator set in server.properties and allows loading multiple levels #Example: #world: #I have about 4 loaded # seed: 404 # generator: FLAT:2;7,59x1,3x3,2;1;decoration(treecount=80 grasscount=45) plugins: #Setting this to true will cause the legacy structure to be used where plugin data is placed inside the --plugins dir. #False will place plugin data under plugin_data under --data. #This option exists for backwards compatibility with existing installations. legacy-data-dir: false
Spoiler: The Crash Error: RakLib Thread crashed File: src/pocketmine/network/mcpe/RakLibInterface Line: 112 Type: Exception Code: [103] [104] public function setNetwork(Network $network){ [105] $this->network = $network; [106] } [107] [108] public function process() : void{ [109] while($this->interface->handlePacket()){} [110] [111] if(!$this->rakLib->isRunning() and !$this->rakLib->isShutdown()){ [112] throw new \Exception("RakLib Thread crashed"); [113] } [114] } [115] [116] public function closeSession(string $identifier, string $reason) : void{ [117] if(isset($this->players[$identifier])){ [118] $player = $this->players[$identifier]; [119] unset($this->identifiers[spl_object_hash($player)]); [120] unset($this->players[$identifier]); [121] unset($this->identifiersACK[$identifier]); [122] $player->close($player->getLeaveMessage(), $reason);
Happened with me while trying to open the console. If you re-create the screens (console) when the server is on, it crashes with the error provided. Now, I don't know. Maybe give us some more details about how the crash occurs or when?