ユーザーがDBを開こうとしたりすると
「メモリが足りません。インデックスプールがいっぱいです」
といったメッセージが表示されるようになったのです。※表示されないユーザーもいました
IBMの情報(下のリンク)によると、当現象は Domino 6.5.3 の不具合とのこと。
定期的に「インデックスプールがいっぱいです」というメッセージが表示される
http://www-06.ibm.com/jp/domino04/lotus/support/faqs/faqs.nsf/all/729123
どうやら NIF Pool が制限値の128MBに達すると発生するようです。
確かに、2度目に発生した時の統計情報の値 (Database.NIFPool.Used) は8MB付近から一気に制限値へ増加していました...
そもそもこの不具合がどうして突然発生するようになったのか...??
最近作成したアプリケーションでどでかいビュー索引を作った覚えもないし...??
まずはサーバー上にある全てのビューのサイズをチェックしようと考え、次のようなスクリプトを作りました。
Sub Initialize Dim ss As New NotesSession Dim logdb As NotesDatabase Dim logdoc As NotesDocument, doc As NotesDocument Dim logdc As NotesDocumentCollection Dim item As NotesItem Dim views As Variant dlmCRLF = Chr( 13 ) & Chr( 10 ) Set logdb = New NotesDatabase( "hogehoge/org", "log.nsf" ) If logdb Is Nothing Then Exit Sub Set logdc = logdb.Search( |Form = "Activity"|, Nothing, 0 ) If logdc.Count = 0 Then Exit Sub Set logdoc = logdc.GetFirstDocument While Not ( logdoc Is Nothing ) If logdoc.HasItem( "AllViewInfo" ) Then Set item = logdoc.GetFirstItem( "AllViewInfo" ) views = Split( item.Values, dlmCRLF ) Forall o In views Set doc = New NotesDocument( ss.CurrentDatabase ) doc.Form = "view" doc.Title = logdoc.Title( 0 ) doc.PathName = logdoc.PathName( 0 ) doc.ViewName = Strleftback( o, " ", 1 ) doc.ViewSize = Strrightback( o, " ", 2 ) Call doc.Save( True, False ) Set doc = Nothing End Forall End If Set logdoc = logdc.GetNextDocument( logdoc ) Wend End Sub簡単に説明します。
log.nsf には毎朝5時に statlog タスクにて作成・更新される Activity というフォームの文書があり、ここに各アプリケーション内にあるすべてのビューやフォルダの名前とサイズが記録されています。
log.nsf にある全ての Activity 文書を参照して、改行で区切られた各ビューの情報を分解して書き出します。
こうして書き出した情報をビューで工夫するとビューの数が多いアプリケーションやサイズが大きいビューがわかります。
不具合に関しては現在のところ、アップデートするまでに再現した場合に何かの参考になるかと考え LOG_UPDATE=1 を設定して様子をみていますが、近い将来Domino を 6.5.6 へアップデートします。
0 件のコメント:
コメントを投稿