Support >
  About independent server >
  Linux game server deployment practice: building a high-concurrency core from scratch
Linux game server deployment practice: building a high-concurrency core from scratch
Time : 2025-06-09 17:08:54
Edit : DNS.COM

Master the following tips to prevent game servers from lagging. First, the hardware selection should be tailored to the game load, with CPU priority over graphics cards: MMORPG or FPS game servers require high-frequency multi-core processors. AMD EPYC 9654 (96 cores) or Intel Xeon 8490H (60 cores) can support 3,000+ players fighting on the same screen, avoiding the decrease in tick rate due to physical engine calculations. Actual measurements show that the tick delay of an 8-core CPU in a 100-player gunfight scene is 47ms, while a 32-core CPU can be reduced to 11ms.

Memory capacity and speed are equally important: For open world games, it is recommended to reserve 512MB per player. Using DDR54800 memory reduces packet processing delay by 18% compared to DDR43200. Be sure to turn on the ECC function to prevent memory bit flips from causing character data anomalies.

The storage solution determines the loading speed: Using Intel Optane P5800X SSD as the system disk shortens the map loading time to 1/8 of the mechanical disk. The player database recommends deploying an NVMe RAID 10 array. For example, when four Samsung PM9A3s form an array, the SQL query throughput can reach 450K IOPS.

System distribution selection criteria, pursuit of extreme performance: Ubuntu 22.04 LTS (5.15 HWE kernel)

Require long-term stability: CentOS Stream 9 (supports 10 years of updates)

Lightweight deployment: AlmaLinux 8 (memory usage is 12% lower than Ubuntu)

Kernel-level optimization command examples:

# Improve network throughput

echo 'net.core.rmem_max=134217728' >> /etc/sysctl.conf

echo 'net.core.wmem_max=134217728' >> /etc/sysctl.conf

# Disable transparent huge pages to prevent jamming

echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled

# Optimize virtual memory management

echo 'vm.swappiness=10' >> /etc/sysctl.conf

TCP/UDP hybrid deployment solution:

Use UDP for player position synchronization (reduces latency to within 30ms), TCP+SSL for trading system (ensures data integrity), and WebRTC for voice communication (saves 50% bandwidth). Precise firewall control:

# Only open ports required for games

ufw allow 2456:2458/udp # Main game port

ufw allow 27015/tcp # RCON management port

ufw allow 22/tcp # SSH encrypted access

ufw force enable

Golden rule for server deployment, resource isolation technology:

# Create a cgroup for each game instance

cgcreate g cpu,memory:/rust_server

echo "100000" > /sys/fs/cgroup/cpu/rust_server/cpu.cfs_quota_us

echo "16G" > /sys/fs/cgroup/memory/rust_server/memory.limit_in_bytes

Automated operation and maintenance script:

#!/bin/bash

# Game process daemon script

while true; do

/opt/game/server config=prod.cfg

EXIT_CODE=$?

[ $EXIT_CODE eq 0 ] && break

logger "The game process exited abnormally ($EXIT_CODE), restarting after 10 seconds"

sleep 10

done

Memory management black technology: Use jemalloc instead of glibc memory allocator to reduce 40% memory fragmentation, and perform sync regularly; echo 3 > /proc/sys/vm/drop_caches to clean up the cache, and enable KSM (Kernel Samepage Merging) to merge duplicate memory pages.

Performance monitoring real-time diagnostic tool chain:

1. Network: iftop nNP View player connection bandwidth ranking

2. CPU: perf top g Locate hotspot function

3. Disk: iotop oPa Found abnormal write process

Key indicators of monitoring panel:

mermaid

graph LR

A[Number of player connections] > B(network delay)

A > C(CPU load)

C > D[Game logic thread]

C > E[Physics engine thread]

B > F[Packet loss rate]

F > G[Player disconnection alarm]

Three principles of permission control:

1. Game process runs with a dedicated account: adduser system shell /bin/false game_svc

2. Set the configuration file permission to 600: chmod 600 /etc/game/.cfg

3. Disable SSH password login: PasswordAuthentication no

Practical command for intrusion detection:

# Check abnormal process

ps auxf | grep E '\./miner|ddgs|\./sysctl'

# Scan for hidden backdoors

rpm Va | grep '^..5'

# Monitor changes in sensitive files

auditctl w /usr/game/bin/ p wa k game_bin

Disaster recovery solution design, cross-computer room hot standby architecture:

1. Primary node: Frankfurt computer room (European players)

2. Backup node: Singapore computer room (Asian players)

3. Use Pacemaker+Corosync to achieve second-level switching

4. Player data is mirrored in real time through DRBD

Incremental backup strategy:

# Hourly backup of player archives

rsync az partial /var/game/saves/ backup@192.168.1.100:/bak/game/ \

linkdest=/bak/game/last_full \

logfile=/var/log/game_bak.log

Ultimate performance squeeze technique, CPU binding to improve cache hit rate:

taskset c 25,811 ./game_server

Network stack tuning:

ethtool K eth0 tx off rx off tso off gso off # Disable offloading to reduce CPU burden

Database index optimization, player item query acceleration:

CREATE INDEX idx_player_items ON inventory (player_id)

INCLUDE (item_id, quantity)

WHERE quantity > 0;

When your server hosts 2,000 players at the same time, an unoptimized file descriptor configuration may cause large-scale disconnection; CPU contention of the physics engine thread will allow the character to pass through the wall; memory leaks will cause an avalanche crash after 48 hours. Every technique mentioned in this article is derived from the tempering of real failures - a well-known survival game once lost 37% of player retention every day due to transparent huge pages.

Perform stress testing immediately after deployment: use tc to simulate network packet loss, use stressng to create CPU competition, and observe the critical point of service degradation. Remember: every 1 second of delay in the online environment increases the player churn rate by 7%.

DNS Becky
DNS Amy
DNS Jude
DNS Luna
DNS Grace
DNS Puff
DNS Sugar
DNS NOC
Title
Email Address
Type
Information
Code
Submit