Zweck: |
Dieses Script testet die Geschwindigkeit und Fehlerfreiheit des Datenbank-Zugriffs unter a99 und hoher Last. Das Ziel dabei ist es, Dateizugriffskonflikte zu provozieren um die fehlerfreie Auflösung testen zu können. |
Voraussetzungen: |
A99 mit einer nicht produktiv genutzen Datenbank (evtl. Kopie der Arbeitsdatenbank oder der demo-Datenbank) |
Installation: |
Das Test-Script im Flex- oder Datenbank-Verzeichnis ablegen. |
Funktionsweise: |
Eine wählbare Menge an Datensätzen wird zyklisch verriegelt, gelesen, verändert, wieder in die Datenbank zurückgeschrieben und entriegelt.
Dazu sind Pausenzeiten, Messzeiten und Verwendung des Offline-Speichers einstellbar.
Die Deaktivierung des Offline-Speichers erfolgt durch dessen Löschung nach jedem Speichervorgang.
Zur Veränderung der Datensätze wird der Inhalt der Kategorie #31 mit Zeichenketten "ZZACS TEST n XX" gefüllt (n = Zähler) |
Start: |
X ac-stress
(im a99-Schreibfeld eingeben) |
Bedienung: |
Nach dem Start können folgende Einstellungen vorgenommen werden: |
|
Ergebnismenge |
Auswahl der zu verwendenden Datensätze
Über das das Index-Fenster wählen Sie einen Eintrag mit mehreren Datensätzen (2 ... 10) aus
Eine geringere Anzahl von ausgewählten Datensätzen provoziert eine höhere Warscheinlichkeit von aufzulösenden Konflikten.
|
|
Pause |
Zusätzliche Wartezeit Zeit in Millisekunden zwischen zwei Zyklen
Eine Pause von 0 verursacht die maximale Last
|
|
Meßzeit |
Zur Bestimmung der Zugriffsrate in Lese+Schreibzyklen/Sekunde |
|
Offline-Speicher |
kann verwendet oder deaktiviert werden
Die Deaktivierung des Offline-Speichers kostet etws mehr lokale Rechenzeit, erhöht jedoch erfahrungsgemäß die Stabilität der Script-Anwendungen im Netzwerk
|
|
Die angegebenen Werte merkt sich das Programm in der Datei "ac-stress.ini" im Datenbank-Verzeichnis. Beim Start des Testscripts von weiteren Stationen aus werden diese Werte dann jeweils vorgegeben und können mit <ENTER> einfach übernommen werden. |
Fehlermeldungen: |
Satz xxx erst beim n. Versuch gespeichert |
|
|
nicht kritisch, zeigt hohe Last an |
|
Satz "xxx": Zuordnung Satznummer -> Inhalt #99n verändert! (ab V1.5) |
|
|
kritisch; unter der erwarteten Satznummer wurde ein anderer Datensatz geladen. Das passiert, wenn zwei a99 auf dem gleichen PC mit dem gleichen temporären Verzeichnis und der gleichen Ergebnismenge gestartet werden |
|
Satz xxx konnte 10x nicht gespeichert werden - Abbruch |
|
|
kritisch; wenn dieser Fehler nicht durch besonders enge Testeinstellungen (Pause<5ms, weniger als (Instanzen+2 Datensätze) provoziert wurde, sind in Produktivumgebung Probleme bei der Anwendung zu erwarten.
Wenn dieser Fehler auf mehreren Clients gleichzeitig auftritt, ist ein echter Datenbank-Fehler entstanden (verbliebene Satz- oder Datenbank-Sperre) |
|
Satz Nr. xxx konnte nicht gesperrt werden |
|
|
kritisch; wie vorher |
|
!.TBL gesperrt, Speichern nicht möglich |
|
|
kritisch; wie vorher |
|
!inkonsistente Daten (Record xxx) |
|
|
kritische Fehlfunktion; nach dem Verriegeln ließ sich der Satz nicht mehr lesen |
|
!Speicherfehler : MP_PutUnlock(free record #nnn) |
|
|
kritische Fehlfunktion; der Lock-Zustand des aktuellen Datensatzes wurde offensichtlich von einer anderen Programm-Instanz aufgehoben. |
|
diff nnn |
|
|
kritischer Fehler im Zusammenhang mit inkonsistentem Offline-Speicher (nnn ist die Satznummer) |
|
Popup: "Sorry, jemand anders war schneller ..." |
|
|
kritische Fehlfunktion; Diese Meldung zeigt an, dass trotz scheinbar erfolgtem Record-Lock mindestens zwei Prozesse einen Datensatz gleichzeitig geändert haben oder der nach 'set rec lock' gelesene Satz nicht mit dem in der Datenbank befindlichen übereinstimmte. |
|
Kritisch sind alle weiteren Fehlermeldungen, die als Popup direkt aus a99 heraus angezeigt werden. |