Infrastrukturen maximieren: Aus weniger mach mehr

Während die Entscheidung zwischen Kaufen oder Selbst Schreiben in den letzten Jahren überwiegend für „Kaufen“ ausfiel, gibt es Anzeichen dafür, dass sich dies langsam ändert. Es hat jedoch immer auch einige Jobs gegeben, in denen an die jeweiligen Bedürfnisse angepasste Software-Entwicklung nötig war. Wie kann man sicherstellen, dass solche Software auch auf effiziente Art und Weise installiert wurde?

Es ist nicht so, dass man vermutete Effizienzmängel beseitigen könnte, indem man sie ignoriert und argumentiert, dass es billiger sei, einen zusätzlichen Server zu kaufen anstatt den Code zu optimieren. „Für Server wird eine Menge Java-Entwicklung betrieben … und Lizenzen für Anwendungungsserver sind nicht billig – wir reden hier über 50.000 Dollar für einen zusätzlichen Prozessor“, so Mark Foley, Java-Architekt bei Borland.

Ein Projekt von Borlands Professional Services Group hatte mit Software zu tun, der abgefordert wurde, Windows, Mac OS und andere Betriebssysteme unterstützen zu können. Dies ist eigentlich eine Situation, in der Java glänzen kann, es gab jedoch ein Problem damit, dass viele der Mac-Nutzer alte und langsame Hardware verwendeten und daher keine zufrieden stellenden Leistungen erzielen konnten. Mit Hilfe von Borlands Optimizeit gelang es Foley, mehr als 20 optimierbare Stellen im Code zu finden und die Verzögerungen innerhalb von nur zwei Tagen von zehn Sekunden auf eine akzeptable Zeit von einer Sekunde zu reduzieren.

Zwar kann man mit Optimizeit nicht immer solch große Geschwindigkeitssteigerungen erzielen, es ist jedoch selten, dass sich gar keine lohnenden Verbesserungen ergeben, so Foley.

„Es ist leicht, einen Fehler zu machen“, wenn man Code schreibt, sagt er, das Problem besteht allerdings darin, dass sich solche Fehler unter Millionen Codezeilen verbergen können. Es ist jedoch so, dass Performance-Probleme nicht immer auf bestimmte Codezeilen zurückzuführen sind, sondern viel mehr auf die Speicherverwaltung. „Eine schlecht konfigurierte Anwendung [kann] 25% der Zeit damit verbringen, Müll aufzulesen“, behauptet er. Dadurch unterscheidet sich die Optimierung von Java recht stark von der Optimierung von C oder C++: „Ohne Werkzeug ist es ziemlich schwer, zu erkennen, was los ist.“ In einer solchen Situation kann es sinnlos sein, den Server mit einem zusätzlichen Prozessor auszustatten, zusätzlicher Speicher würde jedoch helfen. „In einer Java-Umgebung ist die Art der Speicherverwaltung von Java absolut entscheidend“, so Foley. Man muss in der Lage sein, in die JVM hineinzuschauen, um zu erkennen, was los ist. Die nächste Version von Optimizeit wird mehr Funktionen für die Behebung speicherbedingter Probleme beinhalten.

Foley zufolge lässt sich auf Java-Software die 80:20-Regel anwenden: 20 Prozent des Codes sind für gewöhnlich für 80 Prozent der Ausführungszeit verantwortlich. Bei Anwendungsservern, die nur wenig Zeit mit der Ausführung des Anwendungscodes zubringen, ist die Situation noch extremer. Unter diesen Umständen „kann es sehr schwierig sein, den Code zu optimieren“, so Foley weiter. Man muss also untersuchen, auf welche Art und Weise das Programm mit dem Anwendungsserver in Interaktion steht. „Viele der Komplikationen haben mit der Datenbank zu tun – sie zu identifizieren ist eines der größten Probleme“, erklärt er. Optimizeit ist gut geeignet, um herauszufinden, welche Datenbank-Abfragen eine lange Antwortzeit benötigen.

Die Konfiguration von Anwendungsservern ist ein anderes Thema. In einem Versuch, ein Performance-Problem zu beheben, stand ein Kunde kurz vor dem Kauf eines zusätzlichen Servers. Eine Stunde Arbeit mit Optimizeit reichte jedoch aus, um aufzuzeigen, dass die Konfiguration verhinderte, dass der Server seinen gesamten Speicher verwenden konnte. „Es ist nur ein Werkzeug. Es ist zwar ein gutes Werkzeug, die Ergebnisse hängen jedoch von den Fähigkeiten des Menschen ab, der es einsetzt“, so Foley weiter.

Warum setzen dann nicht alle Entwickler Werkzeuge zur Code-Optimierung ein? Foley zufolge geschieht dies immer häufiger, jedoch kosten auch solche Werkzeuge Geld und die Optimierung genießt häufig weniger Priorität als andere Aspekte des Entwicklungsprozesses. Es ist jedoch sehr viel besser, Optimierung vor der Testphase und vor der tatsächlichen Implementierung durchzuführen. Die Optimierung sollte, so Foley, „der Zaun am Rande der Klippe sein, und nicht der Krankenwagen, der unten wartet.“ Ein weiterer Grund, warum man Optimierungen bereits während der Entwicklungsphase durchführen sollte ist der, dass bei Anwendungen, die bereits im Einsatz sind, Funktionserweiterungen Vorrang vor Optimierungen eingeräumt wird, so Pregnell von Quest.

Nach der kürzlichen Übernahme von Sitraka verfügt Quest nun über Werkzeuge zur Diagnose und Optimierung von J2EE-Umgebungen. Dies sind JProbe und Performa-Sure, mit denen Kunden potenzielle Performance-Probleme bis hinunter zu einer spezifischen Zeile des Java-Codes identifizieren können. „Durch die Kombination von Quests bestehenden Lösungen im Bereich Performance-Management für Datenbanken und Anwendungen mit Sitrakas tiefgehendem Fachwissen im Java-Bereich werden wir in einer besseren Ausgangslage für die Überwachung der aktuellen Java-Anwendungen und der nächsten Generation von Standardanwendungen sein“, so Pregnell.

So wie es das Packet-Shaping IT-Managern ermöglicht, die bestimmten Anwendungen zur Verfügung stehende Bandbreite zu kontrollieren, gibt es andere Tools, mit denen sich die Belastung der CPU durch Programme kontrollieren lässt. Ein Beispiel dafür ist ONEAPP CPU SeNTinel, das unter Windows NT oder 2000 Server, Terminal Server und NT, 2000 oder XP Workstation läuft.

Nach Angaben der Vertreiberfirma dieses Programms, Infotronics Software, „kann ein einziger Nutzer, der eine Anwendung öffnet, die Belastung des Prozessors auf bis zu 100 Prozent steigern; die Konsequenzen können im gesamten Unternehmen beträchtlich sein, Maschinen können zum Stillstand kommen oder nur sehr langsam laufen.“ Die Begrenzung der einzelnen Programmen zur Verfügung stehenden CPU-Leistung verhindert, dass Programme den Prozessor allein beanspruchen und sorgt für konsistentere Leistungen im gesamten Betrieb. „Anwendungen, die so viele CPU-Ressourcen verbraucht haben, dass sie ihren eigenen Server benötigten, können nun in Verbindung mit anderen Anwendungen ausgeführt werden, wodurch sich die Kosten für Hardware und Betriebssysteme senken lassen“, so ein Sprecher des Unternehmens.

Themenseiten: IT-Business, Technologien

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu Infrastrukturen maximieren: Aus weniger mach mehr

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *