Blog
Palworld Dedicated Server: Deployment and Performance Tuning
My group of four to eight plays Palworld on a dedicated server running on a used six-core box with 16 GB of RAM. In March I ran a round of controlled experiments: same save, same player-count window, one parameter changed at a time, tracked with process memory tools and player feel. What follows are numbers, not an official optimization whitepaper. When you're done, you should be able to judge "add more RAM or shrink the base" instead of blindly flipping unrelated toggles.
Baseline: how far the default config goes
SteamCMD pulls the dedicated server, it runs under its own user, and systemd supervises it. It auto-restarts on crash, capped at three restarts in five minutes so a bad config can't fill the log disk. The firewall opens the game ports (check the current official docs), the save directory goes into the backup, and updates stop the server first with a double backup.
# 安装后关键路径(按实际版本调整)
/home/pal/PalServer/Pal/Saved/SaveGames/
/home/pal/PalServer/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini
On the default config (no deliberate breeding or base squeezing), cold-start resident memory is about 4.8 to 5.2 GB. With four people online and one or two bases each, steady state runs about 7.1 to 7.8 GB; by week three, once buildings have piled up, the peak touched 11.2 GB. If the photo album's nightly transcoding is running on the same box at that moment, the OOM killer goes for the game process first — we actually hit that once.
| Scenario | Players | Peak memory | Feel |
|---|---|---|---|
| Default + unrestricted breeding | 4 | 11.2G | Building stutters noticeably |
| Default + backup sync running at the same time | 6 | 12.4G | Occasional disconnects |
| After tuning (below) | 6–8 | 8.6–9.4G | Playable |
Round one: gameplay-layer settings only
System tuning untouched, room settings only. Here's what changed and what I observed.
Day/night speed gets slightly faster at night, cutting the resident load of long-idle grinding zones — memory impact is roughly plus or minus 0.3 GB, mostly about feel. Spawn rate stays at the default 1; I tried 1.5 once, entities in the same area clearly multiplied, single-core usage climbed from about 55% to 78%, and memory went up roughly 0.6 to 0.9 GB. For base size and number of working Pals, player self-restraint beats config files — one night someone pushed it close to the cap and resident memory crawled from 8.1 GB in the evening to 10.5 GB by morning.
The conclusion: breeding and base complexity are the biggest variable on a 16 GB box, an order of magnitude more important than fine-tuning convenient settings like the death penalty. Restraint at the gameplay layer is usually faster than buying another stick of RAM.
Round two: process and disk spikes colliding
Here's the timeline from one "everyone's game is lagging" night: 10:10 PM, seven players online, memory at 9.1 GB; 10:15, the scheduled job kicks off a full save sync to network storage, about 2.3 GB of incremental data; 10:16, disk utilization pegs and the game's main thread waits on I/O; 10:18, someone reports the Pals aren't moving.
The fix isn't mysterious: move the backup window to 4 AM, throttle the sync, or copy to a cold local directory first and push to remote asynchronously. After that, evening-peak disk waits dropped from double-digit to single-digit percentages and lag complaints went to zero. So even before memory runs out, an I/O spike can ruin a dedicated server's feel on its own.
Update nights follow a fixed ritual: stop the server; double-backup the save directory (local plus network storage); update; watch the logs for ten minutes after startup; log in and verify the key chests and the guild. Skip any step and you'll be staring at a corrupt save at 3 AM. Rolling back is far more realistic than "repairing" a save.
The numbers: final steady state
| Item | Before | After |
|---|---|---|
| Six-player evening-peak memory | 10–12G | 8.5–9.5G |
| Killed when colliding with transcoding | Happened once | Never again |
| Backup-induced stutter | Common | Gone once windows were offset |
| Crash-restart policy | Unlimited restarts | Rate-limited |
On the system side I only did three small things: slightly lowered the game's priority so backups don't fight the peak head-on; raised the open-file limit to something reasonable; capped the log volume. No magical kernel parameters. Keep an eye on resident memory and disk, and don't schedule heavy services to land in the same hour.
Where it can still bite
Eight full-timers, an oversized base, plus mods — 16 GB is still tight; go 32 GB or cut the complexity. A passworded public server is also scanned, so budget for denial-of-service attempts. Major version updates always get the double backup. Operationally, password-plus-friends beats fully public any day; telling your players "best effort, not five nines" prevents a lot of misunderstandings.
Firewall, process supervision, save backup, updates that don't break things — server engineering for online games always comes back to these. The numbers just help you decide which load to cut first; they don't guarantee it never lags.
If you're also on a 16 GB box: stagger the backup window and transcoding first, then talk about gameplay-layer restraint, and only then think about adding RAM. The first two steps are free, and usually more effective than blindly flipping a pile of unrelated room settings. Don't watch only the averages — three consecutive nights of evening-peak curves tell you far more about whether your server can still hold up than a single screenshot.