Sven Eichler Geschrieben 30. Oktober 2009 Teilen Geschrieben 30. Oktober 2009 Hallo liebe Leute, ich bin mir nicht sicher, ob dieser Thread hier hereingehört oder vielleicht doch eher unter Hardware, also bitte verschieben, falls notwendig. Hintergrund: Wir haben hier eine webbasierte Anwendung laufen, die auf SQL-Server zugreift. Es sind mehrere Datenbanken vorhanden, im Ganzen so ca. 30GB. Bisher gab es keine Performanceprobleme, es arbeiten momentan ca. 180 User darauf. Jetzt sollen weitere 80 hinzukommen, da ein neuer Standort angebunden wird. Bei Tests (also nach dem Einbinden der (Test-)Datenbank) ist uns aufgefallen, dass es zu Performance-Einschränkungen kommt: So dauern Suchvorgangäe jetzt beispielsweise 10 Sekunden, bei denen vorher 3 Sekunden ausreichend waren. Zur Hardware: Frontend: QuadCore INTEL Xeon 2.66GHz 4 GB RAM Windows Server 2003 SQL-Server: QuadCore INTEL Xeon 2.66GHz 8GB RAM Windows Server 2003 Gigabit-Anbindung Ein Festplattenmonitoring hat gezeigt, dass die Platten bei ca. 20 Auslastung sind, die CPU.-Auslastung Frontend liegt bei max 30%, die des DB max 50%. RAM Frontend frei ohne Ende, Auslagerungsdatei OK. RAM DB: 7GB SQL-Server, Auslagerungsdatei: 7GB. Jetzt frage ich Euch nach Eurer Erfahrung: Wenn man den DB auf 16GB aufstocken würde, sollte der ja ca. 8GB mehr SQL-Daten im RAM vorhalten können. Würde das etwas Leistung bringen oder eher nicht, da sich die Platten ja eher zu langweilen scheinen? Für Erfahrungswerte bin ich wirklich dankbar, da das GoLive! in ca. 3 Wochen stattfinden soll... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 30. Oktober 2009 Teilen Geschrieben 30. Oktober 2009 SQL-Server ist ein allgm. Begriff: mySQL, MS SQL, Oracle, Postgresql,..... sind alles SQL Server. Du solltest hier schon das genaue Produkt nennen. Ebenso sprichst Du von SQL-Servern, d.h. Du hast hier mehrere Server im Einsatz? Ebenso die eingesetzte Software, denn bei einer Eigenentwicklung ist die Frage, wo im Moment die Flaschenhälse sind, man kann sicherlich nicht pauschal sagen für n User und x Datenbanken braucht man xn Hardware. Je nach Umfang der Anfragen kann auch das Netz ein entsprechendes Problem sein Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
grueni Geschrieben 30. Oktober 2009 Teilen Geschrieben 30. Oktober 2009 Die zusätzlichen 8GB RAM schaden garantiert nicht, nur ob man damit den Performance-Engpaß behebt oder nur marginäre Verbesserungen erzielt kann ich dir nicht sagen. Ich würde als erstes eingrenzen, ob die Software oder die Hardware den Engpaß verursacht. Sind nur Lesevorgänge so langsam? Ist das Verhalten bei den Suchvorgängen reproduzierbar? Wie sieht der Ausführungsplan der langsamen Abfragen aus? Wieviele Sperren sind zu dem Zeitpunkt auf der Datenbank? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sven Eichler Geschrieben 30. Oktober 2009 Autor Teilen Geschrieben 30. Oktober 2009 Verflixt, jetzt hab ich mir Mühe gegeben, die Sache bestmöglich zu beschreiben, und dann vergess ich die Anwendung...:upps - Es ist genau EIN Microsoft SQL 2005-Server im Einsatz - Es handelt sich NICHT um eine Eigenentwicklung - Keine DB-Sperren, jedenfalls nichts, was reproduzierbar wäre. - Fehler ist reproduzierbar, jedesmal mit ziemlich genau dem gleichen Ergebnis - Bei den Selects geht es zum Beipiel darum, einen Kunden in einer Datenbank anhand eines Suchkürzels zu finden. In der DB sind rund 70.000 Kunden hinterlegt. Aktionen aus einem Kunden heraus öffnen, Belege betrachten, etc. Mir ist nicht ganz klar, was Du meinst mit "Ausführungsplan für langsame Abfragen", es handelt sich bei den Abfragen um das "Tagesgeschäft" der User, die werden also regelmäßig und ständig ausgeführt. Wie gesagt, eigentlich läuft es echt gut, seit aber die neue Testdatenbank auf dem Server ist, kann man die Arbeit darauf eher gemütlich in Angriff nehmen... ;-) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 30. Oktober 2009 Teilen Geschrieben 30. Oktober 2009 - Bei den Selects geht es zum Beipiel darum, einen Kunden in einer Datenbank anhand eines Suchkürzels zu finden. In der DB sind rund 70.000 Kunden hinterlegt. Aktionen aus einem Kunden heraus öffnen, Belege betrachten, etc. Sorry, aber verstehe das nicht falsch, wenn ich schreibe: Meine Glaskugel ist gerade in der Spüle. Keiner hier kann in Deinen Server wirklich bewerten und sinnvolle Empfehlungen geben. Ich würde ja hier auf eine nicht indizierte Spalte tippen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sven Eichler Geschrieben 30. Oktober 2009 Autor Teilen Geschrieben 30. Oktober 2009 (bearbeitet) Ja, schon klar, ich wollte ja auch keine detailiierte, technische Lösung, sondern wirklich nur Erfahrungswerte, um ein "Gefühl" dafür zu entwickeln...: Jetzt frage ich Euch nach Eurer Erfahrung: Wenn man den DB auf 16GB aufstocken würde, sollte der ja ca. 8GB mehr SQL-Daten im RAM vorhalten können. Würde das etwas Leistung bringen oder eher nicht, da sich die Platten ja eher zu langweilen scheinen? Für Erfahrungswerte bin ich wirklich dankbar, da das GoLive! in ca. 3 Wochen stattfinden soll... Bearbeitet 30. Oktober 2009 von Sven Eichler Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 30. Oktober 2009 Teilen Geschrieben 30. Oktober 2009 Ich will hier mal einwerfen zu schauen, ob Du nicht die Spalten passend als Index setzen kannst, denn es wird Dir auf Dauer wenig bringen, wenn Du die Hardware immer mehr aufrüsten musst, wenn ein Designfehler der Datenbank vorliegt Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 30. Oktober 2009 Teilen Geschrieben 30. Oktober 2009 So dauern Suchvorgangäe jetzt beispielsweise 10 Sekunden, bei denen vorher 3 Sekunden ausreichend waren. Schauen wir mal, welche Schritte sich denn in etwa hinter diesen 10 Sekunden verbergen: User klickt auf den Button "Suchen" - Die Zeit läuftDie Abfrage läuft übers Netzwerk bis zum EingangsserverEine Webserver/Appserver etc. bekommt die Abfrage, wertet sie aus und sendet sie weiter an die DBDie Abfrage läuft übers Netzwerk an die DBDie DB bekommt die Abfrage, erstellt einen Plan und führt sie ausDie Abfrage ist beendet, die Daten werden übers Netzwerk zurück an den Web/Appserver gesendetDer Web/Appserver bereitet die Daten ggf. auf und sendet sie wiederum übers Netzwerk an den ClientDer Client bekommt die Daten und beginnt diese anzuzeigenDer User sieht die ersten Daten. 10 Sekunden sind vorbei Solange Du jetzt nicht hinter diese einzelnen Schritte eine wiederholbar meßbare Zeit dahinterschreiben kannst, so das sich in Summe die 10 sekunden ergeben bringt es überhaupt nichts über Hardwareaufrüstung oder Indizes zu sprechen. Diese Vorgehensweise war und ist die beste Möglichkeit eine Tuningmaßnahme so teuer und ineffektiv wie nur irgendwie möglich zu gestalten. Also: Erst rausfinden woran es liegt. In welchen Punkten wird die meiste Zeit verbraucht? Erst dann kann man sich die einzelnen Punkte genauer ansehen und gezielte Maßnahmen treffen. Dim Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.