గేమ్ సర్వర్ కోసం VPS ఎలా ఎంచుకోవాలి
గేమ్ సర్వర్ VPSకు వేగవంతమైన single core, తగినంత RAM అవసరం. సరైన sizing, ports, systemd restarts, backups, అలాగే latencyపై server location ప్రభావాన్ని తెలుసుకోండి.
మీరు ఏ రకమైన gaming VPS ను ఉద్దేశిస్తున్నారు?
game servers కోసం VPS కొనడం ఒక పని కోసం మంచి ఎంపిక: మీరు మరియు మీ స్నేహితులు మీ స్వంత కంప్యూటర్ల నుంచి కనెక్ట్ అయ్యే dedicated server ను నడపడం. అయితే ఈ పదబంధంతో కొందరు ఉద్దేశించే మరో పనికి ఇది సరైన ఎంపిక కాదు. అంటే, remote desktop ద్వారా VPS పైనే game ఆడటం. ఈ రెండు పనులకు పరస్పర విరుద్ధమైన hardware అవసరం. Dedicated server కు ఒక వేగవంతమైన CPU core మరియు game world ను నిల్వ చేయడానికి తగినంత RAM అవసరం. Game ఆడటానికి GPU (graphics processing unit) అవసరం. సాధారణ VPS plan లో GPU ఉండదు.
క్రింద ఉన్న సమాచారం మొత్తం మొదటి పని గురించి మాత్రమే. రెండవ పనిపై రెండు నిమిషాలు కేటాయించి ఆలోచించడం మంచిది. ఎందుకంటే దాని కోసం చాలామంది తప్పు server ను కొనుగోలు చేస్తారు.
VPSలో గేమ్లు ఆడలేకపోవడానికి కారణం
సాధారణ VPSలో virtual CPU cores మాత్రమే ఉంటాయి; graphics card ఉండదు. Physical host నుంచి ఏ hardware కూడా pass through చేయబడదు. అందువల్ల గేమ్ ఉపయోగించగల hardware renderer ఉండదు. మీకు వాస్తవంగా ఏమి లభించిందో ఇలా చూడవచ్చు:
sudo apt install -y pciutils
lspci | grep -iE "vga|3d"దానికి సమాధానం virtual display adapter. ఇది Cirrus Logic లేదా virtio GPU device వంటిది కావచ్చు. Provider యొక్క web console మీకు screen చూపించడానికి ఇది ఉంటుంది. దీనిలో 3D acceleration ఉండదు. దాని పైన desktop మరియు VNC server install చేస్తే, glxinfo -B తన renderer ను llvmpipeగా చూపిస్తుంది. ఇది CPUపై నడిచే Mesa software renderer. CPUతో render చేసే ఆధునిక 3D game సెకనుకు కొన్ని frames మాత్రమే ఇస్తుంది. అందువల్ల ఏదీ server నుంచి బయటకు వెళ్లకముందే గేమ్ ఆడలేని స్థితిలో ఉంటుంది. Windows instances కూడా ఇదే సమస్యను మరో విధంగా ఎదుర్కొంటాయి. Display adapter లేకపోవడంతో Direct3D device సృష్టించలేకపోయామని చెబుతూ అనేక titles launch సమయంలోనే exit అవుతాయి.
రెండవ సమస్య మీకు తిరిగి వచ్చే network path. Remote boxలో ఆడితే ప్రతి frame videoగా encode అవుతుంది, internet ద్వారా పంపబడుతుంది, మీ screenపై decode అవుతుంది. దీనివల్ల గేమ్కు సహజంగా ఉండే input lagకు encoding మరియు decoding సమయం కూడా జత అవుతుంది. RDP మరియు VNCలను 60 frames per second motion కోసం కాకుండా desktops కోసం రూపొందించారు. Cloud gaming services దీనిని నిజమైన GPU hardware మరియు ప్రత్యేకంగా రూపొందించిన streaming protocolతో పరిష్కరిస్తాయి. సాధారణ VPSలో ఇవి రెండూ ఉండవు. మీరు ఆడాలనుకుంటే GPU timeను rent చేయండి. మీరు host చేయాలనుకుంటే చదవడం కొనసాగించండి.
ఒక dedicated game server కు వాస్తవంగా అవసరమైన వనరులు
Game server ఒక simulation loop. అది game world ను memoryలో ఉంచి, ప్రతి సెకనుకు నిర్ణీత సంఖ్యలో సార్లు ముందుకు తీసుకెళ్తుంది. తరువాత అనుసంధానమైన ప్రతి player కు, వారు చూడగలిగే ఆ world భాగాన్ని పంపుతుంది.
ఈ నిర్మాణమే hardware అవసరాలను నిర్ణయిస్తుంది. Loop ఎక్కువగా ఒకే threadపై నడుస్తుంది. అందువల్ల core count కంటే core speed ముఖ్యమైనది. World memoryలో ఉంటుంది. కాబట్టి సాధారణంగా ముందుగా ఎదురయ్యే పరిమితి RAM. Gameplay సమయంలో diskపై కార్యకలాపాలు తక్కువగా ఉంటాయి. Load మరియు save సమయంలో మాత్రం diskపై కార్యకలాపాలు ఎక్కువగా ఉంటాయి. మీ network path pingను నిర్ణయిస్తుంది. ఏ plan tier కూడా దాన్ని మార్చదు.
సింగిల్-కోర్ వేగం, కోర్ల సంఖ్యకంటే ముఖ్యమైనది
చాలా game servers ప్రపంచ స్థితిని ఒక ప్రధాన thread పై నడుపుతాయి. Minecraft యొక్క tick loop మరియు Source engine యొక్క server frame కూడా ఇదే విధంగా పనిచేస్తాయి. ప్రతి tick కు ఒక గడువు ఉంటుంది. Minecraft Java సెకనుకు 20 ticks తో నడుస్తుంది. అందువల్ల ప్రతి tick కు 50 milliseconds సమయం ఉంటుంది. ఆ సమయంలో పని పూర్తికాకపోతే, server ఖచ్చితంగా ఈ సందేశాన్ని చూపిస్తుంది:
[12:04:51] [Server thread/WARN]: Can't keep up! Is the server overloaded? Running 2547ms or 50 ticks behindదీని అర్థం ఒక thread కు కేటాయించిన సమయం ముగిసిందని. మరిన్ని cores జోడించడం వల్ల ఆ thread కు అదనపు సమయం లభించదు. 8 నెమ్మదైన vCPUs కలిగిన plan కంటే 2 వేగమైన vCPUs కలిగిన plan స్థిరమైన tick rate ను కొనసాగిస్తుంది. ఎందుకంటే ఆ 8 vCPUs లో ఒకటే అవసరమైన పనిని చేస్తుంది.
ఏదైనా plan ఎంచుకునే ముందు single-thread వేగాన్ని కొలవండి:
sudo apt install -y sysbench
sysbench cpu --cpu-max-prime=20000 --threads=1 runevents per second line ను పరిశీలించండి. ఆ సంఖ్యను ఒంటరిగా చూసినప్పుడు దాని అర్థం ఉండదు. పోల్చినప్పుడు మాత్రమే అది ఉపయోగకరంగా ఉంటుంది. కాబట్టి రెండు candidate plans పై దీన్ని run చేసి, ఫలితాలను పక్కపక్కన ఉంచండి. పూర్తి VPS benchmark run లో disk మరియు network ను కూడా ఇదే విధంగా కొలుస్తారు.
అదనపు cores కు ఇంకా ఉపయోగం ఉంది. అవి రెండవ game server, database, nightly backup మరియు chunk pre-generator ను నడుపుతాయి. దీనివల్ల tick thread సమయం తగ్గదు. Server software కూడా పనిని విభజించడం నేర్చుకుంది. ప్రముఖ Minecraft server fork అయిన Paper, కొంత పనిని ప్రధాన tick thread నుంచి వేరే thread కు తరలిస్తుంది. కాబట్టి కొనుగోలు చేయాల్సిన విధానం కొన్ని వేగమైన cores కలిగిన plan. చాలా నెమ్మదైన cores కలిగిన plan కాదు.
ఒక సంఖ్య plan page పై ఎప్పుడూ కనిపించదు. మీరు చెల్లించిన వేగమైన core నిజంగా మీకు అందుబాటులో ఉందో లేదో ఆ సంఖ్య నిర్ణయిస్తుంది:
vmstat 1 5st column లోని విలువ, మీ virtual CPU run కావడానికి సిద్ధంగా ఉన్న సమయంలో physical host ఆ core ను వేరే వినియోగదారునికి ఇచ్చిన శాతాన్ని చూపిస్తుంది. st కొన్ని శాతాలకంటే నిరంతరం ఎక్కువగా ఉంటే, ఆ host లో వనరులను అధికంగా కేటాయించారు. మీ server లోని top idle CPU ను చూపిస్తున్నప్పటికీ players కు అది stutter గా అనిపిస్తుంది. కారణం, ఆ idle time ను మీరు వినియోగించలేరు.
గేమ్ సర్వర్కు ఎంత RAM అవసరం?
The data behind this chart
[
{
"label": "Minecraft Java, vanilla",
"players": 10,
"ram_gb": 2
},
{
"label": "Minecraft Java, large modpack",
"players": 10,
"ram_gb": 8
},
{
"label": "Valheim",
"players": 10,
"ram_gb": 4
},
{
"label": "Palworld",
"players": 32,
"ram_gb": 16
}
]ఇవి 2026 ఆగస్టు నాటికి గేమ్ మరియు modpack documentationలో ప్రచురించిన ప్రారంభ కేటాయింపులు. ఇవి మార్గదర్శకాలు మాత్రమే; ఒకే సర్వర్లో కొలిచిన ఖచ్చితమైన సంఖ్యలు కావు. Vanilla Minecraft Javaలో సుమారు 10 మంది players కోసం 2 GB heap సాధారణంగా సరిపోతుంది. అదే player count కోసం పెద్ద modpackకు 8 GB అవసరం కావచ్చు, ఎందుకంటే mods జోడించే entities మరియు generated structures అన్నీ ఆ heapలోనే ఉంటాయి. Valheim documentationలో పేర్కొన్న కనిష్ఠ RAM 2 GB. అయితే చిన్న worldతో పనిచేసే operators process దాదాపు 3 GB వద్ద స్థిరపడుతుందని చెబుతున్నారు. అందువల్ల 4 GBతో ప్రారంభించడం సముచితం. Palworldలో మాత్రం 16 GB అవసరం. దాని గరిష్ఠ player సంఖ్య 32. ఇది Pocketpair సిఫారసు చేసిన పరిమాణం.
RAM connections సంఖ్యకు అనుగుణంగా పెరగదు. Loaded world పరిమాణానికి అనుగుణంగా పెరుగుతుంది. ప్రతి player తన చుట్టూ ఉన్న regionను loadedగా ఉంచుతాడు. అందువల్ల ఇద్దరు players కలిసి నిలబడితే ఖర్చు తక్కువగా ఉంటుంది. అదే ఇద్దరు players mapకు వ్యతిరేక మూలల్లో అన్వేషిస్తే ఖర్చు ఎక్కువగా ఉంటుంది. అందుకే “RAM per player” కేవలం సుమారు అంచనా మాత్రమే. నిజమైన ప్రభావం “RAM per active area”ది. అందువల్ల అన్వేషణను ఇష్టపడే చిన్న group, తమ సంఖ్యకు రెండింతల players కోసం రూపొందించిన planను కూడా మించవచ్చు.
Java serversకు మరో రెండు నియమాలు ఉన్నాయి. Minimum మరియు maximum heapలను ఒకే విలువకు సెట్ చేయండి. అప్పుడు JVM heap పరిమాణాన్ని మార్చడానికి మధ్యలో pause చేయదు:
java -Xms4G -Xmx4G -jar server.jar noguiతర్వాత కొంత memory headroom ఉంచండి. మీరు కేటాయించిన heap వెలుపల కూడా JVM memoryని ఉపయోగిస్తుంది. Thread stacks మరియు native buffers కోసం అది memory అవసరం. World filesను వేగంగా చదవడానికి kernelకు page cache కూడా అవసరం. 6 GB boxపై 4 GB heap సరైన ఎంపిక. 6 GB heap మాత్రం సరైనది కాదు.
ఈ రెండు memory failures పూర్తిగా భిన్నంగా కనిపిస్తాయి. అందువల్ల రెండింటిలో కనిపించే messagesను గుర్తుంచుకోండి. Heap చాలా చిన్నదైతే Javaలోనే error వస్తుంది. సాధారణంగా server నెమ్మదిగా పనిచేస్తూనే ఉంటుంది:
java.lang.OutOfMemoryError: Java heap spaceBoxలో అందుబాటులో ఉన్న memory కంటే heap పెద్దదైతే మొత్తం processను బయట ఉన్న వ్యవస్థ terminate చేస్తుంది. Consoleలో కేవలం Killed మాత్రమే కనిపిస్తుంది. ఆధారం kernel logలో ఉంటుంది:
sudo dmesg -T | grep -i "out of memory"Swapను జోడించడం killను ఆపవచ్చు. కానీ సమస్యను పరిష్కరించదు. Tick loop తన worldను swap నుంచి మళ్లీ చదవాల్సి వస్తే ప్రతి deadline తప్పిపోతుంది. అప్పుడు server crash కాకుండా freeze అవుతుంది. Playersకు అది crashed server కంటే frozen serverగా కనిపిస్తుంది.
2026 ఆగస్టు నాటికి వర్తించే ఒక version గమనిక: Minecraft Java 1.20.5 మరియు తర్వాతి versionsకు Java 21 అవసరం. పాత runtime ప్రారంభమైన తర్వాత unsupported class file version errorతో విఫలమవుతుంది. అది compiler messageలా కనిపిస్తుంది. మొదటిసారి చూసినప్పుడు ఇది చాలామందిని గందరగోళానికి గురిచేస్తుంది.
sudo apt install -y openjdk-21-jre-headless
java -versionగేమ్ server కు disk వేగం ముఖ్యమా?
గేమ్ ఆడుతున్న సమయంలో చాలామంది ఊహించినంతగా కాదు. అయితే రెండు నిర్దిష్ట సందర్భాల్లో ఇది చాలా ముఖ్యమైనది. ప్రారంభ సమయంలో world ను memory లోకి చదువుతుంది. Autosave సమయంలో దాన్ని తిరిగి disk లో రాస్తుంది. అందువల్ల disk వేగం boot నెమ్మదిగా ఉండటంలో, అలాగే save అమలైనప్పుడు pause రావడంలో కనిపిస్తుంది. మిగిలిన సమయంలో ఎక్కువ reads RAM నుంచే అందుతాయి.
ఈ సంక్షిప్త వివరణ సూచించినదానికంటే disk ముఖ్యమయ్యే రెండు కారణాలు ఉన్నాయి. Players కదులుతున్నప్పుడు exploration కొత్త chunks లేదా zones ను disk నుంచి load చేస్తుంది. ఆ read tick budget లోనే జరుగుతుంది. పెద్ద world కోసం autosave ఒకేసారి ఎక్కువ డేటాను రాస్తుంది. Slow volume లో ఈ write loop ను ఎక్కువసేపు block చేస్తే పైన ఉన్న "Can't keep up" warning కనిపిస్తుంది. ఇవి throughput సమస్యలకన్నా latency సమస్యలు. అందుకే VPS లో NVMe మరియు SATA SSD మధ్య తేడా ఇక్కడ headline megabytes per second సూచించే దానికంటే ముఖ్యమైనది. ఒక చిన్న operation పూర్తవడానికి ఎంత సమయం పడుతుందోనే మీరు గమనించాలి.
భవిష్యత్ విస్తరణకు సరిపడే పరిమాణంలో volume ను ఎంచుకోండి. ఎవరైనా కొత్త ప్రదేశంలో నడిచిన ప్రతిసారీ world పెరుగుతుంది. మీ backups దాని పరిమాణాన్ని మరింత పెంచుతాయి. du -sh world ను నెల రోజుల పాటు వారానికి ఒకసారి అమలు చేయండి. అప్పుడు మీ వాస్తవ growth rate తెలుస్తుంది.
Tick rate, ping, మరియు వాటి మధ్య తేడా
Tick rate అంటే సర్వర్ ప్రతి సెకనుకు world ను ఎన్నిసార్లు మళ్లీ లెక్కిస్తుందో అది. Minecraft Java 20 వద్ద నడుస్తుంది. Source engine సర్వర్లు సాధారణంగా 64 వద్ద నడుస్తాయి. Minecraft లో అధిక tick rate ను కొనుగోలు చేయడం సాధ్యం కాదు, ఎందుకంటే ఈ rate గేమ్ రూపకల్పనలో భాగం. అందువల్ల లక్ష్యం 20 ను మించడంకాదు, 20 ను స్థిరంగా కొనసాగించడం.
Ping అంటే ఒక player మరియు సర్వర్ మధ్య జరిగే round trip. ఈ రెండు సమస్యలు వేర్వేరు ఫిర్యాదులకు కారణమవుతాయి. కాబట్టి డబ్బు ఖర్చు చేసే ముందు వాటిని వేరు చేయండి. సర్వర్ ticks ను కోల్పోతే అందరికీ ఒకే సమయంలో rubber-band అవుతుంది. సర్వర్ log లో దీనికి సంబంధించిన సమాచారం స్పష్టమైన text గా కనిపిస్తుంది. ఒక player కు network path పొడవుగా ఉంటే, lag అయ్యేది ఆ player మాత్రమే. మిగతా group కు సమస్య ఉండదు. రెండో పరిస్థితిని పెద్ద CPU ఎప్పటికీ పరిష్కరించదు.
Latency అనేది location గురించి, plan tier గురించి కాదు
Fibreలో కాంతి ప్రతి millisecondకు సుమారు 200 kilometres ప్రయాణిస్తుంది. Round tripలో దూరం రెండుసార్లు ఉంటుంది. అందువల్ల player మరియు server మధ్య ప్రతి 100 kmకు కనీస latency సుమారు 1 ms. ఏ provider కూడా దీనికంటే మెరుగ్గా చేయలేడు. ఏ plan upgrade కూడా దీన్ని మార్చదు.
The data behind this chart
[
{
"label": "Toronto to New York",
"distance_km": 550,
"rtt_floor_ms": 5.5
},
{
"label": "Dallas to Chicago",
"distance_km": 1290,
"rtt_floor_ms": 12.9
},
{
"label": "Dallas to Los Angeles",
"distance_km": 1990,
"rtt_floor_ms": 19.9
},
{
"label": "New York to London",
"distance_km": 5570,
"rtt_floor_ms": 55.7
},
{
"label": "Los Angeles to Sydney",
"distance_km": 12070,
"rtt_floor_ms": 120.7
}
]ఇవి great circle distance ఆధారంగా లెక్కించిన కనీస పరిమితులు. వాస్తవ fibre నేరుగా ఉండదు. మార్గంలోని ప్రతి router కొంత అదనపు latency జోడిస్తుంది. అందువల్ల మంచి real world ఫలితం సాధారణంగా ఈ కనీస పరిమితికి దాదాపు రెండింతలుగా ఉంటుంది. Torontoలోని player, 550 km దూరంలోని New York serverను చేరితే, కనీస latency 5.5 ms ఉంటుంది. సాధారణంగా latency teensలో కనిపిస్తుంది. Los Angeles నుంచి Sydney వరకు మార్గానికి కనీస latency 120.7 ms. ఎంత డబ్బు ఖర్చు చేసినా అది మారదు.
కాబట్టి ఆ serverను దానిపై ఆడే వ్యక్తులకు సమీపంలో ఉంచండి. మీ group ఒక oceanకు ఇరువైపులా విభజించబడి ఉంటే, ఎవరో ఒకరు పొడవైన మార్గాన్ని ఉపయోగించాల్సి వస్తుంది. సాధారణంగా ఎక్కువ మంది players ఉన్న regionను ఎంచుకోవడమే సముచితమైన పరిష్కారం.
ఊహించకుండా మార్గాన్ని కొలవండి:
sudo apt install -y mtr-tiny
mtr -rwzc 100 203.0.113.10ముందుగా చివరి lineను చూడండి. ఆ line serverను చూపిస్తుంది. అందులోని loss మరియు latency మాత్రమే game అనుభూతిని నిర్ణయిస్తాయి. మధ్యలోని hop వద్ద loss కనిపించినా, చివరి hop శుభ్రంగా ఉంటే, అది దాదాపు ఎల్లప్పుడూ ఆ routerలోని ICMP rate limiting వల్లే జరుగుతుంది. ఎందుకంటే routers వాస్తవ trafficను సాధారణంగా forward చేస్తూనే, probe packetsకు ఇచ్చే replyలకు తక్కువ ప్రాధాన్యత ఇస్తాయి. ప్రతి player server వైపు ఈ commandను run చేయాలి. ప్రతి ఒక్కరికీ వేర్వేరు మార్గం ఉండవచ్చు.
round trip కనీస పరిమితి ఎలా లెక్కించబడుతుంది
Glassలో కాంతి vacuumలోని వేగంలో సుమారు two thirds వేగంతో ప్రయాణిస్తుంది. ఇది ప్రతి millisecondకు దాదాపు 200 kmకు సమానం. Round tripలో దూరం రెండుసార్లు ఉంటుంది. అందువల్ల millisecondsలో కనీస latency, one way దూరాన్ని kilometresలో తీసుకుని 100తో భాగించిన విలువ. New York నుంచి London వరకు దూరం 5,570 km. 5570ను 100తో భాగిస్తే 55.7 ms వస్తుంది. ప్రతి measured number దీనికంటే ఎక్కువగానే ఉంటుంది. కారణం cables తీరరేఖలను అనుసరిస్తాయి. Routersకు packetను process చేయడానికి కూడా సమయం పడుతుంది.
ఆటకు అవసరమైన ports మాత్రమే తెరవండి
Game server కు ఒకటి లేదా రెండు ports మాత్రమే open గా ఉండాలి. మరేమీ అవసరం లేదు. సాధారణ defaults ఇవి:
- Minecraft Java Edition: TCP 25565
- Minecraft Bedrock Edition: UDP 19132
- Valheim: UDP 2456 మరియు UDP 2457
- Palworld: UDP 8211
- Counter-Strike 2 వంటి Source engine games: UDP 27015
ఆటకు సంబంధించిన documentation ను పరిశీలించండి. కొన్ని games అదనపు query port ను ఉపయోగిస్తాయి. Valheim దీనికి స్పష్టమైన ఉదాహరణ. 2456 ద్వారా game traffic వెళ్తుంది. 2457 Steam server query కు సమాధానం ఇస్తుంది. అందువల్ల server browser list లో మీ server కనిపిస్తుంది. ఈ numbers ను TCP పై open చేయడం వల్ల ప్రయోజనం ఉండదు. Valheim UDP మాత్రమే ఉపయోగిస్తుంది.
Firewall ను enable చేయడానికి ముందు SSH ను allow చేయండి. లేకపోతే మీ స్వంత server నుంచి మీరు బయటపడిపోతారు:
sudo ufw allow 22/tcp
sudo ufw allow 25565/tcp
sudo ufw enable
sudo ufw status verboseచాలా providers తమ control panel లో, server పై ఉన్న firewall కు వేరుగా network firewall ను కూడా అమలు చేస్తాయి. ufw లో port open గా ఉండి, అక్కడ closed గా ఉంటే connections ఇంకా తిరస్కరించబడతాయి. బయట నుంచి కనిపించే లక్షణం రెండింటిలోనూ ఒకేలా ఉంటుంది. అందువల్ల config files ను edit చేయడానికి ముందు రెండు చోట్లా తనిఖీ చేయండి.
మరొక machine నుంచి TCP port ను తనిఖీ చేయడం సులభం:
sudo apt install -y netcat-openbsd
nc -vz 203.0.113.10 25565UDP ను ఆ విధంగా test చేయలేరు. సాధారణంగా closed UDP port ఎలాంటి సమాధానం ఇవ్వదు. అందువల్ల reply రాకపోతే probe ద్వారా అసలు ఏమీ నిర్ధారించలేరు. బదులుగా server వైపు నుంచి నిర్ధారించండి. మీరు ఆశిస్తున్న port కు game process bind అయిందో లేదో పరిశీలించండి:
sudo ss -lunp | grep 2456RCON, అంటే remote console protocol ను internet కు ఎప్పుడూ expose చేయవద్దు. ఇది సాధారణంగా port 25575 పై plaintext connection ద్వారా పంపబడే ఒకే password. దాన్ని 127.0.0.1 కు bind చేసి, SSH tunnel ద్వారా access చేయండి. Game server ను దాని స్వంత unprivileged user తోనే నడపండి. అప్పుడు mod లోని bug మిగిలిన machine ను చేరుకోలేను. కొత్త VPS పై మొదటి పది నిమిషాలు అనే విభాగంలో, ఈ section కు అవసరమని భావించిన user account మరియు SSH hardening వివరించబడతాయి.
systemd కింద సర్వర్ను నడిపి పునఃప్రారంభించండి
SSH sessionలో చేతితో ప్రారంభించిన సర్వర్ session మూసినప్పుడు ఆగిపోతుంది. Reboot తర్వాత కూడా అది స్వయంచాలకంగా ప్రారంభం కాదు. systemd ఈ రెండు సమస్యలను పరిష్కరిస్తుంది. /etc/systemd/system/minecraft.service ను రాయండి:
[Unit]
Description=Minecraft Java server
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=minecraft
WorkingDirectory=/opt/minecraft
ExecStart=/usr/bin/java -Xms4G -Xmx4G -jar server.jar nogui
Restart=on-failure
RestartSec=15
TimeoutStopSec=180
[Install]
WantedBy=multi-user.targetRestart=on-failure crash తర్వాత సర్వర్ను తిరిగి ప్రారంభిస్తుంది. Clean shutdown తర్వాత మాత్రం అది ఆగిపోయి ఉంటుంది. మీకు కావాల్సింది ఇదే. Restart=always ను ఉపయోగిస్తే, మీరు సర్వర్ను ఉద్దేశపూర్వకంగా ఆపిన ప్రతిసారీ systemd దాన్ని మళ్లీ ప్రారంభిస్తుంది. TimeoutStopSec=180 కనిపించేదానికంటే ముఖ్యమైనది. systemctl stop SIGTERM పంపుతుంది. Vanilla Minecraft server ఆ signal ను అందుకుని, నిష్క్రమించే ముందు world ను save చేస్తుంది. Timeout ముగిసినప్పుడు systemd SIGKILL పంపుతుంది. పెద్ద world ను disk కు రాయడానికి default 90 seconds కంటే ఎక్కువ సమయం పట్టవచ్చు. SIGKILL వచ్చే సమయానికి disk కు చేరని డేటా మొత్తం పోతుంది.
sudo systemctl daemon-reload
sudo systemctl enable --now minecraft
sudo journalctl -u minecraft -fసరిగ్గా ప్రారంభమైనప్పుడు చివరలో Done (12.345s)! For help, type "help" వంటి line కనిపిస్తుంది. Unit activating మరియు failed స్థితుల మధ్య మారుతూ ఉంటే, journalctl -u minecraft -n 50 కారణాన్ని చూపిస్తుంది. సాధారణంగా WorkingDirectory లో path తప్పుగా ఉండటం లేదా server memory heap, అందుబాటులో ఉన్న memory కంటే పెద్దదిగా ఉండటం కారణం.
systemd మీకు interactive console ఇవ్వదు. కాబట్టి దీనికి ముందుగానే ప్రణాళిక చేయండి. Commands కోసం localhost పై RCON ఉపయోగించండి. ప్రత్యామ్నాయంగా, server ను tmux session లో నడపండి. Logins మధ్య VPSలో ఎక్కువసేపు నడిచే Claude Code session ను సజీవంగా ఉంచే అదే పద్ధతి ఇది.
Steam ద్వారా పంపిణీ చేసే games కు వీటన్నింటికంటే ముందు SteamCMD అవసరం. Ubuntu package 32 bit binary. అందుకే architecture line అక్కడ ఉంది. ఆ line ను వదిలేస్తే, installation candidate లేదని apt చూపిస్తుంది:
sudo add-apt-repository multiverse
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y steamcmdకొన్ని game servers ఎక్కువసేపు నడిచే కొద్దీ memory వినియోగాన్ని పెంచుకుంటాయి. దీనికి పరిష్కారంగా కాకుండా, నిశ్శబ్ద సమయానికి scheduled restart ఏర్పాటు చేయడం సాధారణ పద్ధతి. systemctl restart ను పిలిచే systemd timer ను అర్థం చేసుకోవడం cron entry కంటే సులభం. ఎందుకంటే systemctl list-timers అది తదుపరి ఎప్పుడు అమలవుతుందో ఖచ్చితంగా చూపిస్తుంది.
షెడ్యూల్ ప్రకారం మొత్తం world ను backup చేయండి
Game server లోని అన్నింటినీ మళ్లీ పొందవచ్చు. కానీ world directory మరియు player data ను మళ్లీ నిర్మించడం సాధ్యం కాదు. Game ను మళ్లీ install చేయడానికి కొన్ని నిమిషాలే పడుతుంది. మీ group నిర్మించిన వాటిని మళ్లీ నిర్మించడానికి నెలలు పడతాయి.
ఏదీ write చేయని సమయంలో తీసినదే సురక్షితమైన backup. ఒక నిమిషం server ను ఆపడం ద్వారా ఇవి నిర్ధారించవచ్చు:
sudo systemctl stop minecraft
sudo tar czf /var/backups/mc-$(date +%F).tgz -C /opt/minecraft world world_nether world_the_end
sudo systemctl start minecraftప్రతి రాత్రి server ను pause చేయడం అనుకూలంగా లేకపోతే, ముందుగా world ను flush చేయండి. Minecraft console లో save-off autosave ను ఆపుతుంది, save-all flush ఇంకా pending లో ఉన్న ప్రతిదాన్ని write చేస్తుంది, copy పూర్తయిన తర్వాత save-on autosave ను మళ్లీ ప్రారంభిస్తుంది. Server write చేస్తున్న సమయంలో world ను copy చేస్తే, సగం మాత్రమే write అయిన region file capture కావచ్చు. Restore అవసరమైన రోజువరకు ఈ సమస్య బయటపడకపోవచ్చు.
కనీసం ఒక copy ను machine వెలుపల ఉంచండి. అదే disk పై ఉన్న backup, disk పాడైతే మిగలదు. Provider snapshot ఒక సౌలభ్యం మాత్రమే, backup కాదు. అది మీరు కోల్పోయే అవకాశం ఉన్న అదే account లో ఉంటుంది. Off-site storage కు Scheduled restic backups retention మరియు deduplication ను నిర్వహిస్తాయి. అందువల్ల ఒక నెలకు చెందిన nightly world copies మీ volume ను నింపవు.
తర్వాత దాన్ని restore చేసి చూడండి. ఎప్పుడూ restore చేయని backup కేవలం ఒక అంచనా మాత్రమే. గత రాత్రి archive ను spare directory లోకి extract చేయండి. దానిని ఉపయోగించేలా test server ను configure చేయండి. World load అవుతుందో, buildings మునుపటి స్థానాల్లో ఉన్నాయో నిర్ధారించండి.
కట్టుబడే ముందు ఈ విషయాలను పరిశీలించండి
ఒక సంవత్సరం ప్లాన్కు బదులుగా ఒక నెల ప్లాన్ కొనండి. ఒక సాయంత్రం నిజమైన players తో పరీక్షించండి. single thread sysbench ను అమలు చేయండి. తరువాత ప్రతి player సర్వర్ వైపు mtr ను అమలు చేయాలి. పూర్తి VPS benchmark విధానం ఈ tools గురించి దశలవారీగా వివరిస్తుంది. చెడు ఫలితం ఎలా కనిపిస్తుందో కూడా చూపిస్తుంది. VPS కు నెలకు వాస్తవంగా ఎంత ఖర్చవుతుంది ద్వారా మీ సర్వర్ను పరిమితం చేసే resource కోసం మీరు చెల్లిస్తున్నారా, లేక plan page లో అతిపెద్దదిగా చూపించిన resource కోసం చెల్లిస్తున్నారా అనేది నిర్ధారించుకోవచ్చు.
ఈ వ్యాసం ఆగిన చోట నుంచి రెండు posts కొనసాగుతాయి. VPS పై Minecraft server నిర్మించడం పై వివరించిన ప్రతిదానికి step-by-step రూపం. చాలామంది ప్రారంభించే game పై ఇది ఆధారపడి ఉంటుంది. VPS అమలు చేయగల ఇతర విషయాల విస్తృత జాబితాను చదవడం ఉపయోగకరం. game nights మధ్యలో కూడా ఈ box ఏదైనా ఉపయోగకరమైన పని చేయాలని మీరు కోరుకుంటే ఇది సహాయపడుతుంది.
FAQ
నేను gaming PC కొనకుండా VPSలో games ఆడవచ్చా?
లేదు. సాధారణ VPSలో GPU ఉండదు. Provider console కోసం virtual display adapter మాత్రమే ఉంటుంది. అందువల్ల desktop install చేసిన తర్వాత glxinfo -B software renderer ను llvmpipeగా చూపిస్తుంది. 3D game కొన్ని frames per second వేగంతో మాత్రమే నడుస్తుంది. GPU జతచేసినా remote playలో ప్రతి frame యొక్క round trip కు video encoding మరియు decoding అదనంగా జరుగుతాయి. RDP మరియు VNCలను ఈ పనికోసం రూపొందించలేదు. మీ group కనెక్ట్ అయ్యే dedicated serverను host చేయడానికి VPS ఉపయోగపడుతుంది. మీరు స్వయంగా ఆడాలనుకుంటే GPU సమయాన్ని rent చేయండి లేదా cloud gaming service ఉపయోగించండి.
Game serverకు ఎన్ని CPU cores అవసరం?
చాలా gamesలో ఎనిమిది slow cores కంటే రెండు fast cores మెరుగ్గా పనిచేస్తాయి. World simulation ఒక main threadపై నడుస్తుంది. అదనపు cores ఆ thread తన 50 ms deadlineను చేరుకోవడంలో సహాయపడలేవు. Candidate plansను sysbench cpu --cpu-max-prime=20000 --threads=1 runతో పోల్చి, events per second సంఖ్యను పరిశీలించండి. అదే boxపై రెండో server లేదా database కూడా నడిపితే అదనపు cores కోసం చెల్లించడం సముచితం. అప్పుడు ఆ workloads tick thread సమయాన్ని తీసుకోకుండా నడవగలవు.
Minecraft serverకు ఎంత RAM అవసరం?
సుమారు 2 GB heap ఒక vanilla worldకు, అందులో దాదాపు 10 మంది players ఉంటే సరిపోతుంది. అదే player సంఖ్యతో పెద్ద modpackకు 8 GB అవసరం. -Xms మరియు -Xmxను ఒకే విలువకు సెట్ చేయండి. Operating system కోసం machineలో 1 GB నుంచి 2 GB వరకు ఖాళీగా ఉంచండి. JVM heap వెలుపల కూడా memory ఉపయోగిస్తుంది. Kernelకు page cache అవసరం. Boxలో అందుబాటులో ఉన్నదానికంటే పెద్ద heapను సెట్ చేస్తే kernel processను terminate చేస్తుంది. ఇది Java errorగా కాకుండా dmesgలో out of memory lineగా కనిపిస్తుంది.
Serverలో CPU మరియు RAM ఖాళీగా ఉన్నా నా players ఎందుకు lag అవుతున్నారు?
ఈ పరిస్థితికి రెండు కారణాలు ఉండవచ్చు. Can't keep up! Is the server overloaded? కోసం server logను పరిశీలించండి. అంటే ఇతర cores idleగా ఉన్న సమయంలో single main thread తన 50 ms tick budgetను పూర్తి చేయలేకపోయిందని అర్థం. ఆ line లేకపోతే సమస్య network pathలో ఉంది. ప్రతి player మీ server addressకు వ్యతిరేకంగా mtr -rwzc 100 203.0.113.10 అమలు చేసి, చివరి lineను చూడాలి. vmstat 1లోని st columnను కూడా పరిశీలించండి. కొన్ని శాతం కంటే ఎక్కువ steal time ఉంటే host oversold అయిందని అర్థం. మీరు చూస్తున్న idle CPU వాస్తవానికి మీకు అందుబాటులో ఉండదు.
Game server కోసం ఏ portsను open చేయాలి?
Game ఉపయోగించే portతో పాటు SSH portను మాత్రమే open చేయాలి. Minecraft Java TCP 25565ను ఉపయోగిస్తుంది. Minecraft Bedrock UDP 19132ను ఉపయోగిస్తుంది. Valheim UDP 2456 మరియు 2457ను ఉపయోగిస్తుంది. Palworld UDP 8211ను ఉపయోగిస్తుంది. ufw enable అమలు చేయడానికి ముందు SSH ruleను జోడించండి. లేకపోతే boxకు మీ access కోల్పోతారు. చాలా providers తమ control panelలో రెండో firewallను కూడా అమలు చేస్తారని గుర్తుంచుకోండి. Port రెండు firewallsలోనూ open అయి ఉండాలి. Port 25575పై RCONను internetకు ఎప్పుడూ open చేయకండి. ఎందుకంటే password plain textగా పంపబడుతుంది.