Hallo!<br>
<br>
Wir programmieren unsere Anwendung unter Delphi5 und greifen über ADO/OBDC auf eine Datenbank auf einem SQL-Server 2000 (auf NT4 oder W2k) zu.
Bei uns in der Firma läuft das Ganze auf einem PIII/600 Server wunderbar in ordentlicher Geschwindigkeit, es gibt keine Timeouts, und wenn, dann nur bei ordentliche Belastung.<br>
<br>
Jetzt haben wir Kunden die mit ungefähr 10 Clients auf unsere Datenbank zugreifen, und dort gibt es dann TimeoutFehler teilweise über das komplette Programm.<br>
<br>
Nun ist es so, daß wenn der SQL Server neu gestartet ist, der Speicher schön leer ist, und die Anwendung wunderbar schnell läuft. Jetzt schaufelt aber der SQL-Server den ganzen Speicher voll der ihm zugewiesen wird, und gibt diesen aber nicht mehr frei! So müllt sich suksessive der ganze Hauptspeicher bis zur gegebenen Grenze voll, und das Programm wird immer träger, bis am Schluß dann die Timeouts kommen..<br>
Das Einzige was wir bisher groß als Hilfe gefunden haben ist, daß man nur 50% für den Hauptspeicher an den SQL-Server geben soll, weil bei 100% Speicher, und dann noch swappen, dann ists klar, daß der Server erst recht in die Knie geht.<br>
<br>
Was können wir also dagegen tun, daß der SQL Server sich dauernd den Speicher zumüllt? Wie kann man von der Anwendung aus diesen Speicher wieder freigeben? Hat man da über Delphi/ADO überhaupt eine Möglichkeit?<br>
<br>
Oder woran können diese Timeouts noch liegen? Weil einige Kunden arbeiten problemlos mit dem Programm, haben auch nicht weniger Clients und berichten, daß sie keine Timeouts bekommen, auch nicht im heftigeren Betrieb.<br>
<br>
Ein Kunde berichtete, daß seit dem Eintrag des Benutzers SA in der UDL-Datei liefe das Programm "schneller", sprich ohne Timeouts? Kann das sein? Kann der Benutzer SA SQL-Server intern schneller sein?<br>
<br>
Fragen über Fragen.. Leider findet sich im Internet zu diesem Thema recht wenig, ich hoffe ihr könnt uns da ein wenig weiterhelfen..<br>
<br>
<br>
Ciao,<br>
Markus<br>
<br>
Wir programmieren unsere Anwendung unter Delphi5 und greifen über ADO/OBDC auf eine Datenbank auf einem SQL-Server 2000 (auf NT4 oder W2k) zu.
Bei uns in der Firma läuft das Ganze auf einem PIII/600 Server wunderbar in ordentlicher Geschwindigkeit, es gibt keine Timeouts, und wenn, dann nur bei ordentliche Belastung.<br>
<br>
Jetzt haben wir Kunden die mit ungefähr 10 Clients auf unsere Datenbank zugreifen, und dort gibt es dann TimeoutFehler teilweise über das komplette Programm.<br>
<br>
Nun ist es so, daß wenn der SQL Server neu gestartet ist, der Speicher schön leer ist, und die Anwendung wunderbar schnell läuft. Jetzt schaufelt aber der SQL-Server den ganzen Speicher voll der ihm zugewiesen wird, und gibt diesen aber nicht mehr frei! So müllt sich suksessive der ganze Hauptspeicher bis zur gegebenen Grenze voll, und das Programm wird immer träger, bis am Schluß dann die Timeouts kommen..<br>
Das Einzige was wir bisher groß als Hilfe gefunden haben ist, daß man nur 50% für den Hauptspeicher an den SQL-Server geben soll, weil bei 100% Speicher, und dann noch swappen, dann ists klar, daß der Server erst recht in die Knie geht.<br>
<br>
Was können wir also dagegen tun, daß der SQL Server sich dauernd den Speicher zumüllt? Wie kann man von der Anwendung aus diesen Speicher wieder freigeben? Hat man da über Delphi/ADO überhaupt eine Möglichkeit?<br>
<br>
Oder woran können diese Timeouts noch liegen? Weil einige Kunden arbeiten problemlos mit dem Programm, haben auch nicht weniger Clients und berichten, daß sie keine Timeouts bekommen, auch nicht im heftigeren Betrieb.<br>
<br>
Ein Kunde berichtete, daß seit dem Eintrag des Benutzers SA in der UDL-Datei liefe das Programm "schneller", sprich ohne Timeouts? Kann das sein? Kann der Benutzer SA SQL-Server intern schneller sein?<br>
<br>
Fragen über Fragen.. Leider findet sich im Internet zu diesem Thema recht wenig, ich hoffe ihr könnt uns da ein wenig weiterhelfen..<br>
<br>
<br>
Ciao,<br>
Markus<br>
Comment