Performance Tuning

Started by UncleSam, June 29, 2015, 12:03:51 AM

Previous topic - Next topic

UncleSam

Hallo zusammen,

mich würde interessieren, wie man den bot schneller machen kann (vor allem wenn viele einzelne Bots darauf gehostet sind). Grund dafür ist, dass mein Bot letztes mal gelaggt hat und eine Verzögerung von ca. 10 Sekunden hatte.

Meine momentane Lösung:
Den Arbeitsspeicher für den Bot eingestellt auf 1GB direkt beim Start und bis zu 3GB - funktioniert bisher super, aber ob das die Lösung ist weis ich noch nicht zu 100%.
java -Xms1G -Xmx3G -jar JTS3ServerMod.jar

Zum Betreiben des Bots benutze ich das Original Java von Oracle:
Quotejava version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

Gibt es eine Empfehlung welches Java unter Linux am besten ist für den Bot? (gibt ja auch z.B. OpenJDK oder wie das heist).

Außerdem gibt es ja noch zahlreiche CommandLine Parameter. Kann man hier auch noch was rausholen indem man auf 32/64bit, -server/-client, ... stellt? (http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html)

Schonmal vielen Dank im Voraus!

Stefan1200

Das originale Java von Oracle ist normalerweise das Beste. Was verstehst du unter "viele Bots"?

UncleSam

Momentan laufen bei mir 3 bots. Da ich ja einen kostenlosen Service für die bots betreibe (tsbots.de) kann dies ja jederzeit mehr werden. Daher würde es mich halt interessieren ob du hier weitere Tipps hast damit ich den Service stabil und schnell anbieten kann (auch für meinen eigenen Bot).

Stefan1200

Also bei 3 Bots langweilt sich der Server ja noch. Bei einem Hoster laufen knapp 2000 Bots innerhalb eines JTS3ServerMod Prozesses. Da kann es durchaus mal Schwierigkeiten geben, die aber nahezu alle lösbar sind, wenn man Limits von Linux oder MySQL als Admin anheben kann.

Bei unter 500 Bots sollte es aber gar keine Probleme geben, ohne das irgendwelche Limits angepasst werden.

UncleSam

So hab das Problem jetzt leider wieder ... der AutoMover benötigt teilweise bis zu 20 Sekunden (hab extra im Log nachgesehen) bis er jemanden verschiebt. Wenn ich den Bot neu starte, dann gehts wieder binnen einer Sekunde.
Das ist halt deswegen momentan so nervig, weil man meist einen Channel betritt, "Hallo" sagt, anfängt sich zu unterhalten und plötzlich ... "You are moved" kommt.


Mach ich was mit der Serverkonfiguration falsch? Hier meine aktuellen Daten:
- OS: Ubuntu 14.04.2 LTS / 6 Core / 6 GB Ram (Webserver, aber komplett unausgelastet)
- Java (1. Zeile): Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
- Java (2. Zeile): Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
- MySQL: mysql  Ver 14.14 Distrib 5.5.43, for debian-linux-gnu (x86_64) using readline 6.3
- Startparameter (min 1GB max 3GB Ram): java -Xms1G -Xmx3G -jar JTS3ServerMod.jar
- Verbindung zum Teamspeak: Beide Maschinen auf der selben Hyper-V Umgebung, verbunden per internem Netzwerk (Switch)
- Bot Version: 5.5.4 hosted edition (trat aber schon seit paar Versionen davor auf)


Mit dem Startparameter für mindestens 1GB Ram, maximal 3GB Ram dachte ich ich hätte es in den Griff bekommen. Aber anscheinend war das nicht der Fall. Anschließend habe ich aus dem Netz mir Tipps zur Performance Optimierung von MySQL angesehen und vorgenommen. Hat aber auch nichts gebracht.


Im Prinzip  macht der Server nicht viel. Vielleicht 100 Seitenaufrufe und ca. 250 Mails (inkl. Spam) pro Tag. Der Bot hat also mehr als genügend Resourcen in meinen Augen (und nutzt weder spürbar CPU noch Ram).


Ich würde mich rießig freuen, wenn jemand mir helfen könnte dieses "Lag" unter Kontrolle zu kriegen!


Gruß
UncleSam

Stefan1200

Da wäre es spannend zu wissen, was da eigentlich lägt. Der TS3 Server mit den Events an den Bot, oder der Bot selbst.

Lägt denn nur der AutoMover, oder auch sowas wie der AwayMover oder MuteMover? Wie sieht das mit der Willkommensnachricht aus? Der basiert auf dem selben Event, wie der AutoMover.

UncleSam

Die Willkommensnachricht kommt auch immer erst wenn der AutoMover zieht (sprich wenn er lagt dann auch erst nach 20 Sekunden zeitgleich mit dem AutoMover). Bei Awaymover weiß ich es nicht, der steht zwar auf 30 Sekunden, aber bei uns nutzt keiner die TS3 Away Funktion.


Hab gerade festgestellt, dass ich aus meinem MySQL Server noch bisschen Leistung kitzeln konnte, aber da gehts um Millisekunden - die sollten nicht zu solch einer Verzögerung führen.
Hast du ne Idee woran das liegen könnte?

Stefan1200

Quote from: UncleSam on July 14, 2015, 12:39:20 AM
Bei Awaymover weiß ich es nicht, der steht zwar auf 30 Sekunden, aber bei uns nutzt keiner die TS3 Away Funktion.

Test 1:
Stelle den Away Mover bitte mal auf 0 Sekunden und teste es dann mal. Also wenn das Problem mit dem AutoMover auftritt, stelle dich im TS3 Client dann auf Away und zähle die Sekunden, bis du verschoben wirst.

Test 2:
Wenn das Problem mit dem AutoMover auftritt, sende mal ein !botreload an den Bot (oder im Web Interface beim entsprechenden Bot auf Neu verbinden klicken). Danach prüfe bitte mal, ob a) der Bot wirklich sofort neu verbindet und b) das Problem direkt nach dem Neu verbinden noch besteht, oder ob es ebenfalls wieder für einige Zeit verschwunden ist.

UncleSam

#8
ich warte bis er wieder langsam ist, sobald ich mehr infos für dich habe schreib ich hier wieder


PS: selbst wenn ich im TS3 Client mir die Server Query Clients anzeigen lasse seh ich den Bot nicht. Andere Statsbots von tsviewer.com seh ich aber wenn Sie kommen. Ist das normal?
PPS: weil ichs gerade sehe: mein Teamspeak Server startet jede Nacht einmal neu. Hier habe ich halt immer einen Disconnect pro Nacht vom Bot im Log. Persönlich vermute ich, dass ihm das nichts ausmacht.

Stefan1200

Quote from: UncleSam on July 14, 2015, 11:55:13 PM
PS: selbst wenn ich im TS3 Client mir die Server Query Clients anzeigen lasse seh ich den Bot nicht. Andere Statsbots von tsviewer.com seh ich aber wenn Sie kommen. Ist das normal?

Lass mich raten, der Bot nutzt den serveradmin Query Account? Der hat eine i_client_needed_serverquery_view_power von 100. Der normale Server Admin nur eine i_client_serverquery_view_power von 75. Daher kannst du den nicht sehen. Der tsviewer.com nutzt vermutlich gar keinen Query Account und ist daher problemlos von jedem sichtbar, wenn du nichts geändert hast.