Serverul tău nu e un singur program. E o mică echipă de programe care lucrează împreună: unul vorbește cu baza de date, unul verifică parolele, altele țin hărțile pe fiecare canal. Dacă unul dintre ele cade, jucătorii văd ciudățenii: un canal care nu se deschide, o hartă unde nu poți intra, teleportări care eșuează. În această lecție îți faci o rutină scurtă, zilnică, prin care vezi dacă toată echipa e la post.
CONFIG câte procese și ce porturi ar trebui să ai, verifică cu ps că rulează toate, cu sockstat că ascultă porturile lor și citește ultimele rânduri din syserr. Durează două minute.Cuvinte pe care le vei întâlni
| Cuvânt | Ce înseamnă |
|---|---|
| Proces | Un program care rulează acum pe server. |
| PID | Numărul procesului. Îl folosești ca să-l recunoști. |
| Core | Un proces game care ține o parte din hărți. Un canal are de obicei mai multe core-uri. |
| Port | „Ușa” pe care un proces primește conexiuni, de exemplu 13000. |
syslog / syserr | Jurnalul normal și jurnalul de erori al fiecărui proces. |
Pasul 1: Află ce ar trebui să ruleze
Nu poți spune că lipsește ceva dacă nu știi ce ar trebui să fie acolo. Folderul jocului are câte un subfolder pentru fiecare proces. În pachetul pe care l-am verificat, structura arată așa:
| Folder | Ce e | Port (din CONFIG) |
|---|---|---|
db | Legătura cu MySQL | 15000 (din db/conf.txt) |
auth | Verifică login-ul | 11000 |
channel1/first | Canalul 1, primul core | 13000 |
channel1/game1 | Canalul 1, al doilea core | 13001 |
channel1/game2 | Canalul 1, al treilea core | 13002 |
channel2/first … | Canalul 2 (la fel, cu alte porturi) | 13010 … |
game99 | Un core separat pentru hărți speciale | 13099 |
Fiecare core are în CONFIG un rând MAP_ALLOW cu hărțile pe care le ține. Dacă un core cade, doar hărțile lui devin inaccesibile, iar restul canalului pare să meargă. De aceea problemele de felul „nu pot intra în Valea Orcilor, dar în sat merge” vin des de la un singur core căzut.
Ca să vezi porturile tale reale:
cd /usr/metin2
grep -H "^PORT" */CONFIG */*/CONFIGCalea /usr/metin2 e cea din pachetul verificat; la tine poate fi /usr/home/game sau alta. grep -H afișează și numele fișierului lângă fiecare port.
Scrie rezultatul pe o foaie: „4 canale × 3 core-uri + game99 + auth + db = 15 procese”. Asta e lista ta de control.
Pasul 2: Verifică procesele
ps auxww | grep -E "[.]/(game|db|auth)"Bucată cu bucată:
ps auxwwafișează toate procesele, cu linia de comandă completă;grep -E "..."păstrează doar rândurile care conțin./game,./dbsau./auth, adică felul în care le pornesc scripturilerun.shdin pachetul verificat.
Ca să le numeri:
ps auxww | grep -cE "[.]/(game|db|auth)"Ce ar trebui să vezi: numărul de pe foaia ta (de exemplu 15). Dacă vezi mai puțin, lipsește ceva. Dacă vezi mai mult, ai pornit ceva de două ori.
Coloana a doua din ps e PID-ul. Ca să afli de cât timp rulează un proces:
ps -o pid,etime,command -p 1234etime arată timpul de la pornire. Dacă un core are 5 minute, iar celelalte 3 zile, înseamnă că acel core a căzut și a fost repornit. Merită să afli de ce.
Pasul 3: Verifică porturile
Un proces poate exista, dar să nu primească jucători (de exemplu, blocat la pornire). Verifici dacă ascultă:
sockstat -4 -lPe FreeBSD, sockstat arată cine ascultă pe ce port. -4 înseamnă conexiuni IPv4, -l doar porturile care „ascultă”.
Pentru o verificare rapidă a porturilor de pe foaia ta:
for p in 15000 11000 13000 13001 13002 13099; do
sockstat -4 -l -p $p | grep -q ":$p" && echo "$p OK" || echo "$p LIPSESTE"
donePune în listă porturile tale. Scriptul afișează OK sau LIPSESTE pentru fiecare.
Pasul 4: Citește jurnalele
Fiecare proces își scrie jurnalele în folderul lui: db/syserr, auth/syserr, channel1/first/syserr și așa mai departe.
ls -lh */syserr */*/syserr
tail -n 20 channel1/first/syserrPrima comandă arată mărimea tuturor fișierelor de erori. Unul care a crescut brusc e primul pe care îl citești. A doua afișează ultimele 20 de rânduri dintr-unul.
Nu te speria de orice rând din syserr. Unele pachete scriu acolo și avertismente fără importanță. Ce contează e ce apare nou și ce se repetă. Pentru erorile de pornire, vezi Server Metin2 nu pornește?
Uită-te și după fișiere game.core sau fișiere noi în folderele cores. Ele apar când un proces se prăbușește (crash) și pot fi mari. Nu le șterge înainte să afli cauza.
Pasul 5: Fă din asta o rutină
| Când | Ce verifici |
|---|---|
| Zilnic, 2 minute | Numărul de procese, porturile, syserr care a crescut, spațiul pe disc (df -h) |
| După fiecare restart | Toate cele de mai sus + intri în joc pe fiecare canal |
| Săptămânal | Mărimea jurnalelor (du -sh */syslog */*/syslog) și fișierele core |
Atenție la clear.sh: în pachetul verificat, acest script șterge syslog, syserr, fișierele core și jurnalele tuturor proceselor. E util ca să faci curat, dar dacă îl rulezi înainte să citești erorile, pierzi exact indiciile de care ai nevoie. Copiază întâi jurnalele interesante.
Greșeli des întâlnite
| Ce vezi | Ce înseamnă | Ce faci |
|---|---|---|
| Un canal nu apare în listă la login | Core-ul first al canalului e căzut | Citește syserr din folderul lui |
| O hartă nu se încarcă, restul merge | Core-ul care ține harta e căzut | Caută harta în MAP_ALLOW, verifică acel core |
| Procese dublate | start.sh rulat de două ori | Oprește tot cu close.sh, apoi pornește o dată |
db lipsește | Nimic nu se mai salvează | Tratează ca urgență: anunță jucătorii, citește db/syserr |
Întrebări frecvente
Pot reporni doar un core căzut?
Uneori da, din folderul lui, cu sh run.sh. Dar mai întâi citește-i syserr: dacă a căzut din cauza unei erori, va cădea din nou. Dacă nu ești sigur, fă un restart complet la ora de mentenanță.
Există un program care să mă anunțe singur?
Da, se poate face cu un script programat (cron) care rulează verificările de mai sus și îți trimite un mesaj. Învață întâi verificarea manuală. Pe un server găzduit, întreabă și firma de hosting ce monitorizare oferă.
De ce are syslog câțiva GB?
Pentru că jocul scrie mult. Un disc plin oprește MySQL și jocul. Arhivează sau curăță jurnalele vechi la mentenanță, după ce le-ai citit.
Ce urmează
Când totul rulează, dar jucătorii se plâng de lag, treci la lecția De unde vine lagul: CPU, RAM, disc. Toate lecțiile sunt în lista tutorialelor Metin2.
Server Metin2 gata de joc
Găzduire Metin2 în România, cu instalare de serverfiles, bază de date MySQL și protecție Anti-DDoS inclusă.