Ich habe eine Datenbankanwendung (bin nicht der Programmierer davon) und möchte diese auf einem neuen Server beschleunigen.
Läuft auf einem Server mit Windows Server 2012 R2 in zwei VMs. 2x Intel Xeon E5-2630v2 2,6 GHz, 6 Cores.
VM mit Applikationsserver: 4 vCPUs
VM mit Datenbankserver: 2 vCPUs (habe da auch schon mit vier vCPUs getestet, Sizing sagt 2 CPUs)
Bei einer bestimmten Abfrage wartet man 20 Minuten bis zum Ergebnis. Auslastung CPU am Applikationsserver vielleicht 10%, CPU am Datenbankserver ca. 25%, eher weniger und 2,x MBit/s Senden und 1,x MBit/s Empfangen am Datenbankserver und das die ganze Zeit.
Ab und an auch mal ein wenig mehr.
Was meint Ihr, wie wurde hier die Abfrage programmiert? An der Art der Programmierung kann nur der Hersteller was ändern, würde aber gerne mal wissen auf was das hindeutet und wo man hier ansetzen muss? Kürzere Latenzzeit des Netzwerks würde hier helfen?
So dann habe ich die beiden VMs auf zwei physische Rechner (leider nur Desktoprechner) portiert. Einer war mit 3,3 GHz i5 Prozessor bestückt, der andere mit einem i7-4790k (4 GHz Basistakt). Beide Rechner mit 1 GBit/s Netzwerk verbunden. Antwortzeit der Abfrage: 7:30 Minuten. Datenbankserver sendet mit 5 Mbit/s und Empfang 3 MBit/s während der ganzen Zeit.
Dann die beiden VMs auf dem 4 GHz i7 betrieben. Hier ist die Antwortzeit 2:48. CPU beim Datenbankserver 25%, Senden 15 MBit/s, Empfangen 8 Mbit/s. Mit der Antwortzeit könnte man leben.
Zum Schluss noch in die VM mit dem Applikationsserver die Datenbank installiert, Antwortzeit dann 2:20.
Kann man anhand des Datenverkehrs und der Auslastung eine Aussage treffen wie das der Hersteller der Applikation gelöst hat? Viele sehr kleine Abfragen die permanent über die Leitung gehen?
Was ist primär der Schlüssel für mehr Performance? Schnellerer Prozessor?
Und da beide VMs auf einem Hostserver dann als VM laufen und die Anbindung über vSwitch auch von der Prozessorleistung abhängen muss einfach der schnellste bezahlbare Prozessor gekauft werden? So Richtung Intel Xeon Gold 6128 3,4 GHz, 6C, 19,25 MB Cache, 115W oder noch besser.
Bei meinen eigenen Anwendungen habe ich noch kein Netzwerkverkehr und Auslastung des Datenbankservers im Detail angesehen. Optimierungen habe ich über SQL-Abfragen gestaltet. Hier bei der Anwendung kann ich aber nichts an der Applikation verändern und hoffe das mir jemand Tipps gibt auf was das hindeutet und wo man zur Beschleunigung ansetzen sollte.
BTW: Da ich zuerst gedacht habe im Hyper-V Forum Hilfe zu bekommen habe ich da einiges zum Test mit netio geschrieben. Denke mal, ich verlinke nur und schreibe hier nicht das ganze nochmal hin?
https://social.technet.microsoft.com/Forums/de-DE/12b916be-a812-4314-ad72-b2550521007c/applikation-und-datenbank-in-zwei-vms-kurze-antwortzeiten-realisieren?forum=virtualisierung