domino statistiken verstehen und nutzen (teil 1) - 41. dnug konferenz
TRANSCRIPT
11
• Admin Client
• Server auswählen Server tab Statistics Subtab
• Theoretisch auch Server Status Server Console
sh sta
oder auch
„sh sta mail“ oder sh „sta mail.trans*“
• Servertasks
• Statistics Log Task (statlog)
• Cataloger Task (catalog)
12
Es gibt vier Arten von Statistiken:
• Statische Statistiken, die sich nach einem Serverstart nicht ändern
• z.B. Disk.D.Size, Server.Version.Notes
• Momentaufnehmende Statistiken, die einen aktuellen Zustand beschreiben
• z.B. Mem.Free, Server.AvailabilityIndex
• Berechnete Statistiken (seit dem letzten Serverstart)
• z.B. SMTP.SessionDuration.Ave/Max
• Wachsende Statistiken (seit dem letzten Serverstart)
• Mail.TotalKBTransferred.SMTP, Server.Trans.Total
14
Schwer bis nicht unter Laborbedingungen testbar
Fangen Sie mit offensichtlichen / einfachen Dingen an
Notieren Sie sich Einstellungen bevor Sie diese ändern
Bedenken Sie mögliche Wechselwirkungen
„Zuviel des Guten“ kann Performance verschlechtern,
bis hin zu „Out of Memory“ bedeuten
Drehen Sie nicht an mehreren Schrauben gleichzeitig
es sei denn, es ist absolut notwendig / so „dokumentiert“
Beobachten Sie Ihre Server nach Änderungen eine
(sinnvolle) Zeit lang
Werten Sie aus, ob es Ihrem Server besser geht
„Google“
Denken Sie bitte mit
Trauen Sie sich
Das hier ist erst der Anfang – bleiben Sie neugierig!
15
Viele der nachfolgenden Statistiken sind mit einem „einmaligen“ ‚sh sta‘ nicht ausreichend
erfassbar; die Werte sollten bzw. müssen auf einem Zeitstrahl ausgewertet werden
Nur so ist greifbar, ob – und wann – es sich um dauerhafte / wiederkehrende Probleme handelt
Nur so ist tatsächlich überprüfbar, ob Änderungen helfen oder nicht (oder „verschlimmbessern“)
Ein Bild sagt mehr als tausend Worte …
Mit (leider größeren)
Einschränkungen können Sie
sich mit dem Admin Client
behelfen …
Ohne Einschränkungen geht
es nur mit hohem manuellen
Aufwand oder Zusatz-Lösungen
18
ViewRebuildDir & Disk Optimierungen
• Allem voran: freier Plattenplatz(„30%“ um Fragmentierung zu vermeiden)
• Jeweils eigene Disks für …
– Translog
– Data
– Ggf. page file/OS eigene disk
– „ViewRebuildDir“=…view indexing auf eigene disk
– Ab 8.5.3. ggf. .ft-Verzeichnisse(so nötig/gewünscht)
– DAOS („günstig“)
19
Server.Availability
• Sagt in % aus wie verfügbar = „antwortbereit“ ein Server ist (response times)
• Spätestens ab < 30% Verfügbarkeit wird es meistens problematisch;WENN denn der Availability-Index überhaupt stimmt … (Nur!) wenn der Server gut beschäftigt ist: ‚sh ai‘ auf Console;
gibt Empfehlung zur Anpassung von SERVER_TRANSINFO_RANGE in notes.ini
• Ab Notes 8.5 empfiehlt sich:
– notes.ini: Server_MinPossibleTransTime=1500
– notes.ini: Server_MaxPossibleTransTime=20000000
Wichtig:loadmon.ncf löschenwenn Server runter-gefahren ist, um alteWerte zu löschen
20
Monitor.* Warnungen im Auge behalten; Beispiele
• Monitor.Last.ADMIN PROCESS.Warning(High)Text = Disk space statisticscould not be found on Servername/Cert.
• Monitor.Last.EVENT MONITOR.Warning(High)Text = Event: Error adding eventdocument to Domino Domain Monitoring: Event correlation cache is full. Youcan increase its size via the NOTES.INI settingEVENT_CORRELATION_POOL_SIZE.
• Monitor.Last.INDEX ALL.Warning(High)Text = Error updating view '#4538' inmail\nameabc.nsf: The single copy template associated with this databasecannot be located.
• Monitor.Last.SMTP SERVER.FailureText = SMTP Server: Initializationfailure: Message Queue name already in use.
• Monitor.Last.STATISTICS.Warning(High)Text = Unable to update activitydocument in log database for mail\namexyz.nsf: In Datenbank kann nichtgeschrieben werden, da die Datenbank die erlaubte Größeüberschreiten würde.
21
Server.Sessions.Dropped
• Gibt an, wie oft seit dem letzten Serverstart Sessions ‚gedropped‘ wurden
• Verursacht durch „Drop all“ und/oder Client-seitigem Ctrl+Break(Frust-/Problem-Indikator)
• Server.Sessions.Dropped = 25407
• 28.6. - 18.10 = 4*30=120 Tage
• 25407/120=211 Sessions dropped / day
• Weiterführend in Verhältnis zu Peak # of users setzen
„anderes“
Problem
„Drop all“
22
Platform.LogicalDisk.*
Platform.LogicalDisk.1.AssignedName = DPlatform.LogicalDisk.1.AvgQueueLen = 0Platform.LogicalDisk.1.AvgQueueLen.Avg = 0,01Platform.LogicalDisk.1.AvgQueueLen.Peak = 1,01Platform.LogicalDisk.1.BytesReadPerSec = 0Platform.LogicalDisk.1.BytesWrittenPerSec = 10.172,49Platform.LogicalDisk.1.PctUtil = 0,22Platform.LogicalDisk.1.PctUtil.Avg = 0,86Platform.LogicalDisk.1.PctUtil.Peak = 101,07Platform.LogicalDisk.1.ReadsPerSec = 0Platform.LogicalDisk.1.WritesPerSec = 2,07
Platform.LogicalDisk.2.AssignedName = CPlatform.LogicalDisk.2.AvgQueueLen = 0,01Platform.LogicalDisk.2.AvgQueueLen.Avg = 0,73Platform.LogicalDisk.2.AvgQueueLen.Peak = 34,74Platform.LogicalDisk.2.BytesReadPerSec = 17.272,75Platform.LogicalDisk.2.BytesWrittenPerSec = 63.697,52Platform.LogicalDisk.2.PctUtil = 1,11Platform.LogicalDisk.2.PctUtil.Avg = 72,8Platform.LogicalDisk.2.PctUtil.Peak = 3.473,81Platform.LogicalDisk.2.ReadsPerSec = 2,58Platform.LogicalDisk.2.WritesPerSec = 7,3
InterpretationGUT < 2% < AvgQueueLen > 5% > SCHLECHT (1-100% = 0,01 – 1,0!)GUT = PctUtil < 80% (1-100% = 1-100)HINWEIS: ggf. durch # Spindeln zu dividieren SAN/NAS
LösungDiverse Parameter (bufferpool, cache, namelookup), und OS / Disk Tuning
24
Mail.Mailbox.*
• (Mail.Mailbox.AccessConflicts/Mail.Mailbox.Accesses) x 100
• Muss < 2 sein; ansonsten eine weitere Mailbox(ab vier / fünf Mailboxen wird der „Benefit“ zunehmend geringer)
• Beispiel:
• Mail.Mailbox.AccessConflicts = 1636Mail.Mailbox.Accesses = 189864
• = 0,86 = ok
25
Update.PendingList
• Update.PendingList = Anzahl von Ansichten die auf Aktualisierung warten
• WennUpdate.PendingList„laufend“ > 0, dann …
• Notes.ini:Update_Fulltext_Thread=1FTUPDATE_IDLE_TIME=4
Hintergrund:
• Wenn Sie viele Anwendungen haben …
• … und einen vielbeschäftigtenUpdate Task
– View updates sind beeinträchtigt, solange Full Text Index Aktualisierungen in Arbeit sind
• FTI Update von View Update trennen– FTI erfolgt dann in eigenem Memory Thread
• Verbessert Performance
• Update_Fulltext_Thread=1
Wenn wir schon beim Thema Volltext-Index sind:Sie können den FTI thread aus dem limitierten Domino update pool isolieren:
ftg_use_sys_memory=1Der FTI thread bekommt dann Memory vom OS pool
Gibt Domino System Memory frei
26
Database.Database.BufferPool.*
• Database.Database.BufferPool.PerCentReadsInBuffer = 78,96
• SCHLECHT < 90% < PercentReadsInBuffer < 98% < PERFEKT
• 99.9% ist schlecht ...– Führt meist dazu, dass zuviele Anfragen auf Disk rausgeschrieben werden
– Der Server benötigt einen größeren BufferPool
• Lösung: notes.ini NSF_Buffer_Pool_Size_MB=n (in MB)─ Default: 512 MB
27
Database.DbCache.*
• Database.DbCache.CurrentEntries = 1647Database.DbCache.HighWaterMark = 1691Database.DbCache.MaxEntries = 1536Database.DbCache.OvercrowdingRejections = 0
• GUT = HighWaterMark < MaxEntriesGUT = 0 OvercrowdingRejections
• Lösung:– notes.ini NSF_DbCache_MaxEntries = n
• Default: NSF_BUFFER Pool size x 3
28
Replica.Cluster.*
• Replica.Cluster.FailedReplica.Cluster.SecondsOnQueueReplica.Cluster.WorkQueueDepth
• PERFEKT < 10 < SecondsOnQueue > 15 > SCHLECHTPERFEKT < 10 < WorkQueueDepth > 15 > SCHLECHT
• Lösung:– Weitere Cluster Replikatoren
hinzufügen
– Auslastung der Cluster-Serveroptimieren (z.B. aktive Userim Cluster aufteilen /Load Balancing)
29
Server.Trans.PerMinute
• Server.Trans.PerMinute=956Server.Users = 26 956/26=36,7
• HEAVY < 30 < Trans.PerMinute (per User) > 10 > LIGHT
• Lösung:– Last erzeugende User identifizieren (db usage-View!)
30
Database.NAMELookupCache*
• Database.NAMELookupCacheCacheSize = 2.513.328Database.NAMELookupCacheHits = 24.628.339Database.NAMELookupCacheMisses = 48.160.502
• WICHTIG: NoHitHits!
• Miss > Hits: PRÜFEN
• Cache zu klein oder zu groß(!)
ini: NLCache_Size=16000000
31
Server.ConcurrentTasks*
• Server.ConcurrentTasksServer.ConcurrentTasks.Waiting
• Waiting sollte NULL sein
• Lösung:─ Server_Pool_Tasks = n ( z.B. 80)─ Server_Max_Concurrent_Trans = m
(z.B. Server_Pool_Tasks * Anzahl Ports)
32
Platform.PagingFile.Total.*
Platform.PagingFile.Total.PctUtil = 0,28Platform.PagingFile.Total.PctUtil.Avg = 0,14Platform.PagingFile.Total.PctUtil.Peak = 0,8
OK < 0% < PctUtil.Avg > 10% > SCHLECHT
OS Level tuning, Check Memory
Hinweis: Wenn ‚sh sta’ keine Platform.*Statistiken ausgibt Admin-Hilfe
33
DAOS. Object.Attach_DAOSCreate The number of attachments created in DAOS.
DAOS. Object.Attach_DAOSOptimizedCreateLocal
The number of attachments that did not need to be copied between Notes® applications located on the same Domino server (for example, copied from MAIL.BOX to a recipient's mail file) because the objects already existed in the DAOS repository. This statistic shows intra-server savings from optimization of object copying.
DAOS. Object.Attach_DAOSOptimizedCreateRemote
The number of attachments on the server that did not need to be sent over the network from remote clients or servers because the objects already existed in the DAOS repository. This statistic shows inter-server savings from optimization of object copying.
DAOS. Object.Attach_NSFCreate The number of attachments created in the NSF because they did not qualify for storage in DAOS, typically because they were smaller than the DAOS minimum object size.
DAOS. Object.Attach_TotalCreated Total number of attachments listed by the Object.Attach_DAOSCreate, Object.Attach_NSFCreate, Object.Attach_DAOSOptimizedCreateLocal, and Object.Attach_DAOSOptimizedCreateRemote statistics.
DAOS.Object.CloneDeclined The number of times a DAOS network optimization request was denied
DAOS.Object.CloneRequests The number of times a DAOS network optimization request was attempted
DAOS.Object.Delete The number of attachment delete requests for attachments stored in DAOS