分类:
2009-10-02 01:17:03
平时,当使用 sh stat database.dbcache.* 命令,可以看到如下所示的DB Cache的统计信息:
Database.DbCache.CurrentEntries = 132
Database.DbCache.DatabaseLinkEntries = 0
Database.DbCache.HighWaterMark = 132
Database.DbCache.Hits = 67
Database.DbCache.InitialDbOpens = 252
Database.DbCache.Lookups = 642
Database.DbCache.MaxBucketLength = 3
Database.DbCache.MaxEntries = 384
Database.DbCache.NumBuckets = 389
Database.DbCache.NumBucketsUsed = 109
Database.DbCache.OvercrowdingRejections = 0
Database.DbCache.Size = 1262
12 statistics found
其中Database.DbCache.MaxEntries = 384,显示了此服务器能够支持并发打开的数据库数量是 384个。通常在峰值状态,支持的并发DB数量可以达到此值的两倍。这个参数的配置存在两种方式:
1)在服务器端的Notes.INI文件中配置NSF_DbCache_Maxentries;
2)在服务器端配置NSF_BUFFER_POOL_SIZE_MB参数。一旦配置此参数,则Database.DbCache.MaxEntries = Database.DbCache.MaxEntries × 1024 /341。
适当的提高Database.DbCache.MaxEntries有助于提升服务器的性能,但囿于可使用的内存限制,过大的值将会导致系统处于不稳定状态。本人建议,在自己不确定的情况下,轻易不要去碰这个。因而,若实在存在修改此配置参数值的必要,还应该事先了解生产系统的DB Cache中数据库的活动状态。
关于Domino系统的DB Cache中DB活动情况,可以通过nsd日志文件的NSF DB Cache区段数据中获得。首先需要执行 nsd 命令获得nsd日志文件;其次,阅读分析其中的数据。
下面内容为一个客户实际生产环境中因服务器CRASH而生成的nsd日志文件,将其中NSF DB Cache区段内容截出,供参考。
*****************************************************************************************************
<@@ ------ Notes Data -> NSF Data -> NSF DB Cache (Time
DbCacheMaxEntries = 1536
YES 6 2 /XXXX007/mail01/wangdhd.nsf
YES 6 2 /XXXX007/mail02/zhaoman.nsf
YES 6 2 /XXXX007/mail01/wanghlb.nsf
YES 6 3 /XXXX007/mail01/wanglmd.nsf
YES 6 4 /XXXX007/mail01/wenle.nsf
YES 6 4 /XXXX007/mail01/maokai.nsf
YES 6 4 /XXXX007/mail01/wangyxa.nsf
YES 6 5 /XXXX007/mail01/qilei.nsf
YES 1 1 /XXXX007/mail02/wanghmb.nsf
YES 1 1 /XXXX007/mail02/zhouqiongb.nsf
YES 1 1 /XXXX007/smd/smvlog.nsf
YES 1 1 /XXXX007/mail02/zhanghtb.nsf
YES 1 2 /XXXX007/mail01/pengqiong.nsf
YES 1 2 /XXXX007/dbdirman.nsf
YES 1 2 /XXXX007/mail01/wangzzc.nsf
YES 1 3 /XXXX007/mail01/rangjuan.nsf
YES 1 3 /XXXX007/mail02/zhangxye.nsf
(余下内容略去)
…… …… …… ……
…… …… …… ……
*****************************************************************************************************
字段说明:
þ DBsOpenByAger —— 指示该数据库是否已经由数据库Cache Ager线程所打开;
þ State ——数据库当前所处的状态;
þ MinutesLeftInState —— 允许数据库保持当前状态的剩余持续时间;
þ Database – 包含完全路径的数据库名称
数据库状态描述:
状态类别 |
标志值 |
描述 |
DBSTATE_CLOSED |
0 |
数据库已关闭 (未缓冲) |
DBSTATE_OPENCLEAN |
1 |
数据库已打开,但是干净的(缓冲状态未知) |
DBSTATE_OPENDIRTY |
2 |
数据库已打开,且存在未写入DB的“脏”数据,即fixup标志位仍处于置位。缓冲状态未知 |
DBSTATE_FLUSHEDDIRTY |
3 |
Database is flushed, dirty and cached. |
DBSTATE_COMMITTEDDIRTY |
4 |
内存中数据已经写入DB物理文件,但fixup标志位仍置位 |
DBSTATE_FLUSHEDCLEAN |
5 |
内存中数据已经写入DB物理文件,且fixup标志位复位 |
DBSTATE_CACHEDUNIDCLOSED |
6 |
DB处于打开状态,但UNID索引已关闭 |
注:此文内容系本人自己胡思乱想的结果,引用时请慎重考虑!