aslain.dev
0%
01 Hizmetler 02 Hakkımda 03 Projeler 04 Stack 05 Blog 06 İletişim
← Tüm makaleler Metin2

Metin2 Lag Oplossen: server- en netwerkprestaties

Een betrouwbare manier om Metin2 lag op te lossen begint met een waarheid die veel servereigenaren op de harde manier leren: "lag" is niet één probleem. Als spelers klagen, beschrijven ze eigenlijk drie verschillende kwesties — hoge ping (netwerkvertraging), lage FPS (clientzijde) of een server die commando's te traag verwerkt (server-tickvertraging). Elke ingreep zonder deze drie te scheiden helpt niet of veroorzaakt een nieuw probleem. In deze gids laat ik zien hoe je de vertraging eerst correct diagnosticeert en daarna stap voor stap oplost aan de server- en netwerkzijde.

Eerst diagnosticeren: waar komt de lag vandaan?

Voordat je iets aanraakt, meet je de bron in cijfers. "Het voelen" is niet genoeg; ping, pakketverlies en serverbelasting zijn drie afzonderlijke metrieken.

  • Netwerkvertraging: de heen-en-terugtijd van speler naar server. Als de in-game ping voor iedereen hoog is, ligt het waarschijnlijk aan de serverlocatie of routering; is hij alleen bij losse spelers hoog, dan ligt het aan hun verbinding.
  • Pakketverlies: disconnects, teleporteren en dat "rubber-banding"-gevoel komen meestal door pakketverlies, niet door de ruwe ping.
  • Serverbelasting: als één CPU-kern op 100% vastzit, verwerkt de spellogica (core/db) commando's te laat; het spel voelt "zwaar" zelfs bij lage ping.

Op een Linux-VPS is je eerste stop het live resourcegebruik:

htop                 # CPU/RAM-verdeling, welk proces is belast
mpstat -P ALL 2      # CPU per kern (zit één kern vol?)
ss -s                # overzicht van open sockets/verbindingen

Metin2-emulators draaien de spellogica vaak zwaar op één kern. Ook al toont de totale CPU 25%, als één kern op 100% zit, is die kern je knelpunt.

Netwerkvertraging meten

Vertrouw niet op het in-game getal, maar meet de ping op netwerkniveau. mtr is nuttiger dan ping en traceroute, omdat het zowel de gemiddelde vertraging toont als de hop waar het pakketverlies begint:

mtr -rwzbc 100 SPELER_IP
# -c 100: stuur 100 pakketten, het gemiddelde wordt betrouwbaarder
# kijk naar de kolommen Loss% en Avg op de laatste regel

Als het pakketverlies niet bij de eerste hops begint maar bij een provider midden in de route, ligt het probleem niet bij jouw server maar bij het transitnetwerk; open dan een ticket bij je hostingprovider om de route te corrigeren. Een constant hoge ping is meestal een kwestie van geografische afstand: als de meeste spelers in één regio zitten, levert het verplaatsen van de server naar een dichtbijgelegen datacenter een schonere winst op dan welke software-instelling dan ook.

Serverzijde: knelpunten in core en database

De twee meest voorkomende oorzaken van belastingsgedreven lag zijn quest/AI-lussen en trage databasequery's.

  • Zware quests: when ... begin-blokken die vele keren per seconde per speler draaien — vooral met lussen en frequente timer-aanroepen — verstikken de CPU. Maak voortdurend getriggerde quests in plaats daarvan event-driven.
  • Query's zonder index: als grote tabellen zoals player of item geen index hebben, doet elke query een volledige tabelscan. Maak in MySQL de trage query's expliciet zichtbaar:
-- in my.cnf: slow query log
[mysqld]
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1        # vang query's langer dan 1 seconde

Zie je een terugkerende query in het log, bekijk dan het plan met EXPLAIN; zie je type: ALL, voeg dan een index op die kolom toe. Gebruik je InnoDB, dan vermindert het instellen van innodb_buffer_pool_size op 50-70% van het server-RAM merkbaar de stilstand door schijf-I/O.

Netwerkstack en verbindingsinstellingen

Het spel stuurt kleine realtimepakketten, dus kernelnetwerkparameters en de firewall zijn belangrijk. Op Linux kan een volle connection-trackingtabel (conntrack) ervoor zorgen dat nieuwe verbindingen worden geweigerd, met plotselinge laggolven tot gevolg:

sysctl net.netfilter.nf_conntrack_count   # huidig aantal records
sysctl net.netfilter.nf_conntrack_max     # bovengrens
# zit je dicht bij de limiet, verhoog hem permanent (/etc/sysctl.conf):
# net.netfilter.nf_conntrack_max = 262144

Een DDoS-beschermingslaag of een verkeerd geconfigureerde iptables-regel kan ook legitieme spelpakketten vertragen. Bekijk regels die de spelpoort rate-limiten; het verkeerd filteren van de UDP/TCP-mix leidt tot stille pakketverliezen.

Clientzijde: lag of lage FPS?

Sommige "lag"-meldingen hebben niets met de server te maken. Hapert het scherm van de speler maar is de ping laag, dan is het probleem de FPS. Je kunt de speler dit snel laten controleren:

  • Probeer randloze venstermodus in plaats van volledig scherm.
  • Werk het grafische stuurprogramma bij en draai het spel als administrator.
  • Dalende FPS in drukke gebieden (markt, boss) is normaal; de oplossing is een clientinstelling, niet de server.

De diagnoseregel is simpel: lage ping + haperend scherm = client/FPS, hoge of springende ping = netwerk, iedereen bevriest tegelijk = server.

Zet permanente monitoring op

Lag één keer oplossen is niet genoeg; je moet het meteen zien als het terugkeert. Zelfs een simpel log dat CPU, RAM en spelersaantal in de tijd volgt, betaalt zich uit. Als lichtgewicht optie kun je Netdata installeren, of met een cronjob elke minuut een meting nemen:

* * * * * uptime >> /var/log/load.log
# wanneer piekt de load average? valt dat samen met spelersdrukte?

Deze data verandert vage klachten als "iedereen lagt om 21:00" in een meetbaar patroon en helpt je het echte knelpunt te vinden.

Veelgestelde vragen

Mijn ping is laag maar het spel hapert toch, waarom?

Een lage ping toont dat het netwerkpad snel is, maar garandeert niet dat de server commando's op tijd verwerkt. 100% CPU op één kern of trage databasequery's maken het spel "zwaar" zelfs bij lage ping. Controleer de serverzijde met htop en het slow query log.

Moet ik mijn server naar een dichtere locatie verplaatsen?

Als de overgrote meerderheid van je spelers geografisch ver van de server zit, ja — geen enkele software-instelling kan de vertraging door fysieke afstand volledig wegnemen. Meet eerst de echte ping met mtr; is die constant hoog, dan is een dichterbij datacenter de meest definitieve oplossing.

Wat veroorzaakt plotselinge lagpieken?

De meest voorkomende oorzaken: een volle conntrack-tabel, een periodieke zware cron-/back-uptaak, of drukke events die op bepaalde uren starten. Koppel het lagtijdstip aan de piek in je load-log om de trigger te vinden.

Kun je de bron van de lag op je server niet vinden? Ik kan je helpen om netwerk-, kernel- en databasezijde samen te diagnosticeren en een blijvende prestatie-instelling op te leveren — neem contact met me op.

Bu kategorideki tüm yazılar →

Devamı için