|
|
(4 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
| '''Tunning'''
| | Moved to [[Lotus Domino: Tuning English]] |
| | |
| This wiki will be creating a series of articles outlining best practices for Lotus Domino environment.
| |
| | |
| I ask you to always return to this article will be updating as usual.
| |
| | |
| Steps
| |
| | |
| # Have an implementation plan
| |
| # Know your infrastructure
| |
| # Divide the compounds
| |
| ## Platform
| |
| ## Notes Mail Statistics
| |
| ## Network report
| |
| ## Server Load Statistics
| |
| # Have a baseline reference
| |
| | |
| | |
| == '''GENERAL:''' Disabling the Collection of Statistics Platform ==
| |
| | |
| Domino statistics collection platform to display the Administrator. The collection does not consume much resources, but we're talking about tuning.
| |
| | |
| To disable the collection utize the following parameter in NOTES.INI.
| |
| | |
| '''Platform_Statistics_Disabled = 1'''
| |
| | |
| Reasons:
| |
| | |
| * You do not want to collect statistics
| |
| * On partitioned servers (DPAR), each server collects the same statistics. You can enable only in one partition and disable the others.
| |
| | |
| | |
| == '''GENERAL:''' Disabling Full Text for Attachments Types ==
| |
| | |
| Tells the indexer not to index attachments with the XXX extension
| |
| | |
| | |
| '''FT_Index_Ignore_Attachment_Types'''=*.nsf,*.ntf,*.tif,*.sys,*.pag,*.img,*.wav,*.gif,*.jpg,*.dll,*.tar,*.exe,*.zip,*.au,*.mpg,*.mov,*.mp3,*.cca,*.dbd,*.p7m,*.p7s,*.wpl,*.bmp
| |
| | |
| Since version 5.0.5, Domino disable by default to following Attachment types:
| |
| .NSF, .NTF , .SYS, .PAG, .IMG , .WAV , .GIF, .JPG, .DLL, .TAR, .EXE , .ZIP, .AU , .MPG, .MOV, .MP3 .
| |
| | |
| | |
| | |
| == '''HTTP:''' Cache Design Elements ==
| |
| | |
| To optimize the response time keeps Domino design elements in memory.
| |
| | |
| {| border="1"
| |
| |
| |
| '''Tune'''
| |
| |
| |
| To change the parameters of Web Cache, Open the server document and go
| |
| | |
| '''Internet Protocols → Domino Web Engine → Memory Caches.'''
| |
| | |
| and change the field value
| |
| | |
| {| border="1"
| |
| |
| |
| '''Field'''
| |
| |
| |
| '''Description'''
| |
| |-
| |
| |
| |
| '''Maximum cached designs'''
| |
| |
| |
| Enter the number of database design elements to
| |
| cache for users. The default is 128.
| |
| When a user opens a database, Domino maps
| |
| each design element name to an identification
| |
| number. This mapping procedure takes time. Use
| |
| this field to Specify how many elements you want
| |
| to store in memory so the next time the user
| |
| accesses That element, it is Immediately
| |
| available.
| |
| |}
| |
| | |
| | |
| | |
| |-
| |
| |
| |
| '''Statistics'''
| |
| |
| |
| * Domino.Cache.Design.Count
| |
| * Domino.Cache.Design.DisplaceRate
| |
| * Domino.Cache.Design.HitRate
| |
| * Domino.Cache.Design.MaxSize
| |
| |-
| |
| |
| |
| '''Interpretation'''
| |
| |
| |
| * Good = HitRate >= 97%
| |
| * Good = DisplaceRate = 0
| |
| |-
| |
| |
| |
| '''Reference'''
| |
| |
| |
| http://www-01.ibm.com/support/docview.wss?rs=899&uid=swg21286171
| |
| |}
| |
| | |
| | |
| '''Example'''
| |
| To find out if you need to change this parameter, run the following command
| |
| | |
| > Show stat domino.cache.design .*
| |
| Domino.Cache.Design.Count = 128
| |
| Domino.Cache.Design.DisplaceRate = 18.0328294698918
| |
| Domino.Cache.Design.HitRate = 81.960226776015
| |
| Domino.Cache.Design.MaxSize = 128
| |
| | |
| Observing these numbers we can deduce that the value of elements ('''Count''') has reached the maximum ('''MaxSize'''), so elements in this cache are discarded (''' DisplaceRate''').
| |
| | |
| The optimal value for the'''Hitrate''' is near 100%, and'''DisplaceRate''' is 0%. Increasing the value of the field'''Maximum cached designs''' improves response-time.
| |
| | |
| | |
| | |
| == '''HTTP:''' Cache User Info ==
| |
| | |
| To optimize the response time keeps Domino design elements in memory.
| |
| | |
| {| border="1"
| |
| |
| |
| '''Tune'''
| |
| |
| |
| To change the parameters of Web Cache, Open the server document and go
| |
| | |
| '''Internet Protocols → Domino Web Engine → Memory Caches.'''
| |
| | |
| and change the field value
| |
| | |
| {| border="1"
| |
| |
| |
| '''Field'''
| |
| |
| |
| '''Description'''
| |
| |-
| |
| |
| |
| '''Maximum cached users'''
| |
| |
| |
| Enter the number of users to cache. The default is 64.
| |
| After a user successfully authenticates with a server, Domino stores in memory the user's name, password, and the list of groups to which the user belongs. Use this field to increase the number of users for whom Domino stores this information.
| |
| |}
| |
| | |
| | |
| |-
| |
| |
| |
| '''Statistics'''
| |
| |
| |
| * Domino.Cache.User Cache.Count
| |
| * Domino.Cache.User Cache.DisplaceRate
| |
| * Domino.Cache.User Cache.HitRate
| |
| * Domino.Cache.User Cache.MaxSize
| |
| |-
| |
| |
| |
| '''Interpretation'''
| |
| |
| |
| * Good = HitRate >= 97%
| |
| * Good = DisplaceRate = 0
| |
| |-
| |
| |
| |
| '''Reference'''
| |
| |
| |
| | |
| |}
| |
| | |
| '''Example'''
| |
| | |
| To find out if you need to change this parameter, run the following command
| |
| | |
| > Show stat domino.cache.user*
| |
| Domino.Cache.User Cache.Count = 68
| |
| Domino.Cache.User Cache.DisplaceRate = 0
| |
| Domino.Cache.User Cache.HitRate = 73.258795221749
| |
| Domino.Cache.User Cache.MaxSize = 64
| |
| | |
| | |
| Observing these numbers we can deduce that the value of elements ('''Count''') has reached the maximum ('''MaxSize'''), so elements in this cache are discarded (''' DisplaceRate''').
| |
| | |
| The optimal value for the'''Hitrate''' is near 100%, and'''DisplaceRate''' is 0%. Increasing the value of the field'''Maximum cached designs''' improves response-time.
| |
| | |
| | |
| == '''SERVER:''' NSF Buffer Pool ==
| |
| | |
| Buffering Database I/O
| |
| | |
| | |
| {| border="1"
| |
| |
| |
| '''Tune'''
| |
| |
| |
| NSF_Buffer_Pool_Size_MB=n
| |
| | |
| * Version 8.5 64 bits = Default value 1024
| |
| * Version 8 64 bits = Default value 1024
| |
| * Version 8 32 bits = Default value 512
| |
| |-
| |
| |
| |
| '''Statistics'''
| |
| |
| |
| * Database.Database.BufferPool.Maximum.Megabytes
| |
| * Database.Database.BufferPool.PerCentReadsInBuffer
| |
| |-
| |
| |
| |
| '''Interpretation'''
| |
| |
| |
| * 89% < Bad
| |
| * 90% = OK
| |
| * 91% < Good < 97%
| |
| * 98% <= Excellent
| |
| |-
| |
| |
| |
| '''Reference'''
| |
| |
| |
| [http://www-01.ibm.com/support/docview.wss?rs=899&uid=swg21286171 Recommendations for setting NSF_BUFFER_POOL_SIZE_MB] | |
| | |
| [http://www-01.ibm.com/support/docview.wss?rs=0&uid=swg21268988 New default limit on UBM size in Domino 8] | |
| | |
| |}
| |
| | |
| '''Example'''
| |
| | |
| To find out if you need to change this parameter, run the following command
| |
| | |
| > Show stat Database.Database.BufferPool.*
| |
| Database.Database.BufferPool.Maximum.Megabytes = 1024
| |
| Database.Database.BufferPool.MM.Reads = 24
| |
| Database.Database.BufferPool.MM.Writes = 7
| |
| Database.Database.BufferPool.Peak.Megabytes = 1023
| |
| '''Database.Database.BufferPool.PerCentReadsInBuffer''' = 98.21
| |
| | |
| If the Database statistics Database.Database.BufferPool.PerCentReadsInBuffer is lower than 97%,then you should consider tuning this parameter.
| |
| | |
| | |
| | |
| | |
| == '''SERVER:''' NSF Cache ==
| |
| | |
| To minimize the time lags involved with opening and closing databases on a server, each server uses a database cache.
| |
| | |
| The Notes.ini '''NSF_DbCache_Maxentries''' control how many databases can reside in the cache at a maximum.
| |
| | |
| This NSF database cache is limited to:
| |
| | |
| * 10000 entries = Domino 5.x and 6.x.
| |
| * 20000 entries = Domino 7.x and higher
| |
| | |
| | |
| {| border="1"
| |
| |
| |
| '''Tune'''
| |
| |
| |
| | |
| '''NSF_DbCache_Maxentries=X'''
| |
| | |
| |-
| |
| |
| |
| '''Statistics'''
| |
| |
| |
| | |
| * Database.Database.BufferPool.PerCentReadsInBuffer
| |
| * Database.DbCache.HighWaterMark
| |
| * Database.DbCache.CurrentEntries
| |
| * Database.DbCache.MaxEntries
| |
| * Database.DbCache.OvercrowdingRejections
| |
| |-
| |
| |
| |
| '''Interpretation'''
| |
| |
| |
| | |
| * Good = HighWaterMark < MaxEntries
| |
| * Good = 0 OvercrowdingRejections
| |
| | |
| |-
| |
| |
| |
| '''Reference'''
| |
| |
| |
| http://www-01.ibm.com/support/docview.wss?uid=swg21279893
| |
| |}
| |
| | |
| '''Example'''
| |
| To find out if you need to change this parameter, run the following command
| |
| | |
| > Show stat Database.Database.BufferPool.*
| |
| Database.Database.BufferPool.Maximum.Megabytes = 1024
| |
| Database.Database.BufferPool.MM.Reads = 24
| |
| Database.Database.BufferPool.MM.Writes = 7
| |
| Database.Database.BufferPool.Peak.Megabytes = 1023
| |
| '''Database.Database.BufferPool.PerCentReadsInBuffer''' = 98.21
| |
| | |
| If the Database statistics Database.Database.BufferPool.PerCentReadsInBuffer is lower than 97%,then you should consider tuning this parameter.
| |
| | |
| > Show statDatabase.DbCache.*
| |
| Database.DbCache.HighWaterMark = 2227
| |
| ...
| |
| Database.DbCache.MaxEntries = 3072
| |
| ...
| |
| '''Database.DbCache.OvercrowdingRejections''' = 0
| |
| Database.DbCache.Size = 10003
| |
| | |
| If the Database statistics DbCache.OvercrowdingRejections is high, then you should consider tuning this parameter.
| |
| | |
| == '''SERVER:''' Increase Name Lookup Cache ==
| |
| | |
| | |
| {| border="1"
| |
| |
| |
| '''Tune'''
| |
| |
| |
| * NLCACHE_SIZE
| |
| | |
| To implement, set the notes.ini parameter NLCACHE_SIZE equal to the number of bytes you want the maximum cache size to be.
| |
| |-
| |
| | |
| |
| |
| '''Statistics'''
| |
| |
| |
| * Database.NAMELookupCachePool.Used
| |
| | |
| * Database.NAMELookupCachePool.Peak
| |
| | |
| * Database.NAMELookupCacheMisses
| |
| | |
| * Database.NAMELookupCacheHits
| |
| | |
| * Database.NAMELookupCacheMaxSize
| |
| | |
| |-
| |
| |
| |
| '''Interpretation'''
| |
| |
| |
| | |
| * Database.NAMELookupCachePool.Used is close to the Database.NAMELookupCachePool.Peak value
| |
| | |
| * Database.NAMELookupCacheMisses remains above Database.NAMELookupCacheHits for hours
| |
| | |
| * Database.NAMELookupCacheMaxSize with Database.NAMELookupCachePool.Peak and Database.NAMELookupCachePool.Used
| |
| Neither value should have reached Database.NAMELookupCacheMaxSize. If the numbers are close, increase the cache size
| |
| | |
| |-
| |
| | |
| |
| |
| '''Example'''
| |
| |
| |
| NA
| |
| |-
| |
| |
| |
| '''Reference'''
| |
| |
| |
| | |
| [http://www.ibm.com/developerworks/lotus/library/ls-D6_Dir/index.html Domino 6 directory performance improvements]
| |
| | |
| |}
| |
| | |
| | |
| | |
| | |
| == '''SERVER:''' Concurrent Tasks ==
| |
| | |
| PUT INFO HERE
| |
| | |
| {| border="1"
| |
| |
| |
| '''Tune'''
| |
| |
| |
| | |
| * Server_Pool_Tasks = n
| |
| *Server_Max_Concurrent_Trans = m
| |
| | |
| |-
| |
| |
| |
| '''Statistics'''
| |
| |
| |
| | |
| * Server.ConcurrentTasks
| |
| * Server.ConcurrentTasks.Waiting
| |
| | |
| |-
| |
| |
| |
| '''Interpretation'''
| |
| |
| |
| | |
| * Good = 0 Waiting
| |
| | |
| |-
| |
| | |
| |
| |
| '''Example'''
| |
| |
| |
| NA
| |
| |-
| |
| |
| |
| '''Reference'''
| |
| |
| |
| http://www-01.ibm.com/support/docview.wss?uid=swg21207456
| |
| |}
| |
| | |
| | |
| | |
| == '''PLATAFORM:''' Platform Paging File ==
| |
| | |
| | |
| {| border="1"
| |
| |
| |
| '''Tune'''
| |
| |
| |
| * OS Level
| |
| |-
| |
| | |
| |
| |
| '''Statistics'''
| |
| |
| |
| * Platform.PagingFile.Total.PctUtil
| |
| | |
| |-
| |
| |
| |
| '''Interpretation'''
| |
| |
| |
| | |
| * OK < 0% < PctUtil.Avg > 10% > BAD
| |
| |-
| |
| | |
| |
| |
| '''Example'''
| |
| |
| |
| NA
| |
| |-
| |
| |
| |
| '''Reference'''
| |
| |
| |
| NA
| |
| |}
| |
| | |
| | |
| | |
| == '''PLATAFORM:''' Platform Disk ==
| |
| | |
| {| border="1"
| |
| |
| |
| '''Tune'''
| |
| |
| |
| By several parameters (bufferpool, cache, namelookup ...
| |
| | |
| |-
| |
| | |
| | |
| |
| |
| '''Statistics'''
| |
| |
| |
| * Platform.LogicalDisk.1.AvgQueueLen
| |
| * Platform.LogicalDisk.1.PctUtil
| |
| | |
| Platform.LogicalDisk.1.AssignedName=C points to the disk
| |
| |-
| |
| | |
| | |
| |
| |
| '''Interpretation'''
| |
| |
| |
| | |
| * Good < 2% < AvgQueueLen > 5% > BAD
| |
| * Good = PctUtil < 80%
| |
| | |
| |-
| |
| |
| |
| '''Reference'''
| |
| |
| |
| NA
| |
| |}
| |
| | |
| | |
| == '''ROUTER:''' How many Mailboxes? ==
| |
| | |
| | |
| How many Mailboxes is necessary for my Domino Server
| |
| | |
| {| border="1"
| |
| |
| |
| '''Tune'''
| |
| |
| |
| | |
| Configuration Document
| |
| |-
| |
| | |
| | |
| |
| |
| '''Statistics'''
| |
| |
| |
| *Mail.Mailbox.AccessConflicts =
| |
| | |
| |-
| |
| | |
| | |
| |
| |
| '''Interpretation'''
| |
| |
| |
| | |
| * Good = 0 Waiting
| |
| | |
| |-
| |
| |
| |
| '''Reference'''
| |
| |
| |
| NA
| |
| |}
| |
| | |
| == '''ROUTER:''' RouterDbCacheSize ==
| |
| | |
| | |
| Represents the number of entries allocated for the router database cache. If not used, the default is based on NSFBufferPoolSize (three per MB), i.e. three times bigger than NSFBufferPoolSize, and the maximum is capped to 20000 entries at startup, but reallocation may occur and the number of 20000 entries could exceed it. In brief: it represents a cache of opened mail database handles.
| |
| {| border="1"
| |
| |
| |
| '''Tune'''
| |
| |
| |
| | |
| RouterDbCacheSize
| |
| |-
| |
| | |
| | |
| |
| |
| '''Statistics'''
| |
| |
| |
| *Mail.DBCacheAged = ; the number of entries that had aged and been deleted
| |
| | |
| *Mail.DBCacheEntries = ; the current number of cache entries
| |
| | |
| *Mail.DBCacheForcedOut = ; the number of cached entries forced out due to lack of available cache
| |
| | |
| *Mail.DBCacheHighWaterMark = ; the highest number of entries that had been cached
| |
| | |
| *Mail.DBCacheHits = ; the number of times a requested db handle was already in cache
| |
| | |
| *Mail.DBCacheMaxEntries = ; the maximum number of entries (RouterDbCacheSize)
| |
| | |
| *Mail.DBCacheReads = ; the number of times cache was read
| |
| | |
| |-
| |
| | |
| | |
| |
| |
| '''Interpretation'''
| |
| |
| |
| | |
| | |
| | |
| |-
| |
| |
| |
| '''Reference'''
| |
| |
| |
| NA
| |
| |}
| |
| | |
| == '''CLUSTER:''' Cluster Replicator ==
| |
| | |
| To prevent the replicas of the cluster de-synchronized, increasing the amount of tasks '''clrepl''' through the Notes.ini variable
| |
| | |
| {| border="1"
| |
| |
| |
| '''Tune'''
| |
| |
| |
| | |
| '''CLUSTER_REPLICATORS=X'''
| |
| | |
| |-
| |
| |
| |
| '''Statistics'''
| |
| |
| |
| * Replica.Cluster.SecondsOnQueue
| |
| * Replica.Cluster.WorkQueueDepth
| |
| * Replica.Cluster.Failed
| |
| |-
| |
| |
| |
| '''Interpretation'''
| |
| |
| |
| | |
| * Perfect < 10 < SecondsOnQueue > 15 > Bad
| |
| * Perfect < 10 < WorkQueueDepth > 15 > Bad
| |
| | |
| |-
| |
| |
| |
| '''Reference'''
| |
| |
| |
| NA
| |
| |}
| |
| | |
| '''Example'''
| |
| | |
| Para saber se é necessário alterar este parâmetro, execute o seguinte comando
| |
| > show stat replica.cluster.*
| |
| ...
| |
| Replica.Cluster.SCR.QueueDepth.Avg = 0
| |
| Replica.Cluster.SCR.QueueDepth.Max = 155
| |
| ...
| |
| Replica.Cluster.SecondsOnQueue = 2
| |
| Replica.Cluster.SecondsOnQueue.Avg = 18
| |
| Replica.Cluster.SecondsOnQueue.Max = 2558
| |
| ...
| |
| Replica.Cluster.WorkQueueDepth = 0
| |
| Replica.Cluster.WorkQueueDepth.Avg = 13
| |
| Replica.Cluster.WorkQueueDepth.Max = 698
| |