Anwendung "nicht unterstützt" in einer VM?

10

Wir haben Software von einem kleinen Unternehmen gekauft. Es handelt sich um einen Windows 32-Bit-Workflow-Manager für Videoinhalte. Diese wurden von ihnen angepasst.

Wir arbeiten seit über einem Jahr einwandfrei daran, diesen Code in einer VMWare ESXi 4.1u2-VM auf W2K3EE-32-Bit auszuführen (genau dafür wird die Ausführung unterstützt).

Dann haben sie ihren Code vor ungefähr einem Monat aktualisiert und wir haben festgestellt, dass eine der vCPUs regelmäßig mit 100% verbunden ist. Die zweite vCPU ist ziemlich untätig, sagen wir 5-7%. Wir haben also nur angenommen, dass der Code schlecht gefädelt ist, und haben sie kontaktiert es.

Sie sind jetzt zu uns zurückgekehrt und haben gesagt, dass ihr Code in einer VM nicht funktioniert. Sie kennen diese Anforderung seit ungefähr 18 Monaten und möchten, dass wir sie mit V2P bearbeiten. Sie sagen, dass sie dieses Problem nur sehen, wenn sie in VMs ausgeführt werden. Ich habe einen Anruf mit ihrem leitenden Programmierer, der in ein paar Stunden besprochen werden soll.

Zum Glück haben wir jetzt ein paar physische Dinge, mit denen wir dies tun können, etwas zeitaufwändig, aber machbar.

Meine Frage ist jedoch, dass diese VM keine Hardware direkt berührt, sich auf einem sehr modernen Host befindet und tatsächlich sehr geringe Anforderungen hat (2 x vCPU, 4 GB, 20 GB Boot-Vdisk, 100 GB Daten-Vdisk, einzelne vNIC und sonst nichts) könnte möglicherweise das Problem beim Ausführen in einer VM sein, wenn es eine gibt?

Natürlich verfolge ich das mit ihnen nachdrücklich, aber ich habe mich nur gefragt, ob jemand eine reguläre Anwendung gefunden hat, die sich in einer VM irgendwie schlecht verhält, aber nicht auf einer physischen.

Chopper3
quelle
Ziehen beide vCPUs von derselben CPU? Haben Sie es so eingerichtet, dass jeder echte Kern direkt einer vCPU zugeordnet ist? Tun Sie etwas Lustiges wie das Aktivieren von Hyper-Threading auf Ihrer CPU? Dies sind einige Fragen, die Ihnen helfen sollen, alles zu beantworten, was möglicherweise dazu führt, dass sie sich verlangsamen und die Sie beantworten können. Sie werden wahrscheinlich eine bessere Idee haben, nachdem Sie mit dem erfahrenen Programmierer gesprochen haben, entweder wie Sie die Probleme beheben können, die möglicherweise durch das Ausführen in einer VM entstehen, oder Sie werden sicher wissen, ob sie es nur falsch machen. Es könnte einfach sein, dass der Code in Java geschrieben ist.
Wilshire
Ich lasse ESXi seine eigene Sache in Bezug auf die Prozessplanung machen, und bei Xeons der> 55xx-Serie wird Hyperthreading nicht als "lustig" angesehen, es funktioniert und ist sehr nützlich - oh, und das .NET 3.5 des Codes übrigens.
Chopper3
Ich weiß, dass MySQL Cluster anscheinend auch in einer virtualisierten Umgebung nicht "offiziell" funktioniert. Grund? Keine Ahnung! : P
Ben Ashton

Antworten:

3

Obwohl ich nicht für diesen Anbieter oder das Softwarepaket sprechen kann, habe ich für einen großen (multinationalen) Anbieter gearbeitet, bei dem eine der von ihnen verkauften Software sehr spezifische bekannte Probleme hatte, wenn sie unter VMware ausgeführt wurden.

In diesem Fall kann ein Problem dazu führen, dass die Software blockiert, und das andere kann zu einer Beschädigung der Daten führen. Daher wurde den Kunden empfohlen, die Software nicht in einer virtuellen Umgebung auszuführen. Einige taten es immer noch, und in allen mir bekannten Fällen stießen sie auf eines oder beide Probleme.

Obwohl dies selten vorkommt, kann es Fälle geben, in denen Software nicht so funktioniert, wie Sie es in VMware erwarten würden.

Mir ist zwar klar, dass es Ihrem Problem nicht direkt hilft, aber es zeigt, dass VMWare nicht immer das perfekte System ist.

Fußnote: In diesem Fall konnte der Anbieter mit VMware zusammenarbeiten, um Lösungen zu finden (einige Codekorrekturen, einige Änderungen an der VMWare-Konfiguration), und sie haben jetzt einige (sehr spezifische) Anleitungen zum Ausführen der Software unter VMWare.

Sam
quelle
Das ist genau das, worüber ich traurig bin, aber dankbar zu hören - wie ich Janne in seiner Antwort erwähne, gewöhnen wir uns so sehr an die Dinge, die in VMs richtig funktionieren, dass ich ehrlich gesagt ein wenig verwirrt war, wenn ich so seltsame Umstände fand Es ist zumindest beruhigend, von Ihnen zu hören, dass ich damit nicht allein bin. Ich habe noch nichts Positives vom Softwareanbieter gehört, aber ich weiß, dass sie sich mit dem Problem befassen. Ich kann mir leider keine Lösung für einen Monat vorstellen. Danke noch einmal.
Chopper3
3

Mit ESX v5 und dem Monster VM-Limit (32 vCPU 1 TB RAM) verringert sich die Anzahl der Anwendungen, bei denen Probleme mit der VM auftreten. Die meisten, die ich erlebt habe, sind entweder: - sich auf die Zeit verlassen, um linear zu sein (Echtzeitprozesse oder Apps, die eine lineare Zeit benötigen ... dies kann normalerweise optimiert werden) - Apps, die viele Hardware-Interrupts oder Kontextwechsel verursachen

In den meisten Fällen sollten Sie Ihren VMware-Mitarbeiter bitten können, mit diesen Leuten zu sprechen. Ich glaube, vmware hat immer noch ein Team von Leuten, die sich dafür einsetzen, dass die Dinge funktionieren (sie hatten in den frühen Tagen nur dafür ein Support-Labor).

Als Lösung hatte ich ein ähnliches Problem mit VMs mit hoher CPU-Auslastung (aber Host mit vielen freien CPU-Ressourcen). Wir haben das Problem behoben, indem wir auf einen Server mit einer Nehalem-CPU migriert und die CPU-Kompatibilitätsstufe in EVC geändert haben (wenn Sie einen Cluster mit DRS / HA haben).

hdex
quelle
Vielen Dank für Ihre Antwort - sehr nett von Ihnen, wenn dies wirklich keine Schwarz-Weiß-Frage ist. Ihre Beispiele sind sehr nützlich. Ich werde zurückgehen und insbesondere die Kontextumschaltung untersuchen. Oh, und alle unsere Server befinden sich auf genau derselben CPU (X5690), wobei die EVC einheitlich eingestellt ist, aber nochmals vielen Dank.
Chopper3
2

Ich habe ein ähnliches Problem mit VMware ESX + Debian 6 + OpenLDAP 2.4.x gesehen (unabhängig von der genauen Version von OpenLDAP ist apt-gettable ...).

Im täglichen Betrieb funktioniert es einwandfrei, aber Dinge wie das Importieren einer größeren LDIF-Datei mit etwa 400.000 Einträgen sind sehr langsam (50-100x langsamer als bei physischen Servern). Auch beim lang andauernden Benchmarking mit hohem Volumen läuft alles reibungslos mit einer Reaktionszeit von einigen Millisekunden, aber gelegentlich gibt es seltsame Spitzenwerte zwischen 500 und 25 000 (!) Millisekunden.

Mit physischen Servern kann ich diese Probleme nicht reproduzieren. Und ja, ich habe ungefähr drei Wochen damit verbracht, das Problem zu isolieren und alle Arten von Parametern von Betriebssystemparametern über Slapd-Werte bis hin zu BerkeleyDB-Werten abzustimmen ... nichts hat geholfen.

Janne Pikkarainen
quelle
Vielen Dank, dass Sie Ihre Erfahrungen geteilt haben. Ich kann nicht sagen, dass ich das Ganze nicht etwas seltsam finde. Ich bin ein Erfahrungsvirtualisierungsfreak und ich bin es so gewohnt, dass Dinge funktionieren, dass ich eine Anwendung finde, die dies tut hat meine Überzeugungen in gewisser Weise erschüttert, daher ist es gut zu hören, dass ich nicht in einer isolierten Position bin. Vielen Dank.
Chopper3
1
Weitere zwei Beispiele: Atlassian sagt, dass beide Jiraund Confluencenicht empfohlen werden, in einer VM (ware) -Umgebung ausgeführt zu werden. Es muss ein Muster für diese Ausnahmen geben, ich habe nur noch nicht herausgefunden, was das sein könnte. Meine OpenLDAP-Installation ist nicht sehr E / A-intensiv (3 MB / s Schreibzugriff und nicht zu viele IOPS in Spitzen während des Benchmarks), sie verwendet möglicherweise 20-40% CPU und etwa 150 MB RAM. Sollte nicht zu schwer zu handhaben sein. Vielleicht hat es etwas mit Threading zu tun, aber vmstat meldet, dass Kontextwechsel usw. auf normalem Niveau sind.
Janne Pikkarainen
Meine aktuelle Theorie ist, dass dies etwas mit der Zeitmessung des Betriebssystems zu tun hat. VMware hatte in der Vergangenheit alle möglichen seltsamen Probleme mit der Uhr, und selbst jetzt müssen Sie manchmal tsc=pitbeim Start einige elegante Parameter übergeben, und zumindest reagiert OpenLDAP SEHR empfindlich auf die Genauigkeit der Systemuhr. Vielleicht sollte ich alle problematischen Apps ausfindig machen und sehen, ob sie alle stark genutzt werden gettimeofday()oder so.
Janne Pikkarainen
Nochmals vielen Dank, Sie haben Recht mit der Zeit in der VM. Es ist von Natur aus allgegenwärtig, also würde ich das verstehen, aber ich kann nicht anders, als zu denken, dass es ein sehr schnelles Problem wäre, selbst wenn dies ein Problem wäre Unsere Anbieter müssen in ihrem Code erkennen, dass es sich nicht um eine zeitkritische Anwendung handelt, sondern lediglich um Videoinhalte und deren Verarbeitung, hmmm. Danke noch einmal.
Chopper3