视图在 Domino 环境中起着重要的作用,它将文档按照定义好的方式组织起来,作为展现给用户的数据或者查找数据的索引。而保持视图中的数据随时更新,是由一个重要的服务器任务:索引器(Indexer)完成的。

索引器任务由 Update、Updall(Update all)两个任务组成,它们通过调用 Notes Index Facility (NIF) 和 Full-Text services,保持各视图和全文索引内容为最新。本文仅讨论视图和索引器任务相关的部分,全文索引相关内容并未涉及。

Update 任务默认写在 Notes.ini 文件的 ServerTasks 参数中,所以它是随服务器一起启动的,持续不断地运行,检查其工作队列以查找需要更新的视图和文件夹。Update 保持两个工作队列:一个即时队列,一个延迟队列。其他服务器组件,例如路由器(Router)和复制器(Replicator),在数据库发生修改时将请求投递给 Update 任务。有些请求投递为延迟,有些请求投递为即时。此请求只包含数据库的完整路径,不包含视图名。延迟队列请求在被处理之前会保持 15 秒,以便在此时间内更新同一数据库的请求作为重复请求而被忽略,通过统一处理来提高性能。这个 15 秒的延迟时间可以通过 Update_Suppression_Time 参数修改。

工作队列中记录了哪些数据库需要更新索引,那么数据库中的具体哪个视图需要更新呢?在数据库的头信息里面,记录了数据库的修改时间;同时在视图的索引信息里面也记录了上次更新索引的时间。通过比较两个时间就可以判断哪些视图需要更新。

Updall 与 Update 类似,但它不是持续不断地运行,也不使用队列;而是根据需要运行。默认情况下,Updall 包括在 NOTES.INI 设置 ServerTasksAt2 中,因此它在每天凌晨 2 点运行。在运行 Updall 时您可以指定选项,但是如果不指定这些选项,则 Updall 会更新服务器上所有数据库中,需要更新的任何视图索引或全文搜索索引。为节省磁盘空间,Updall 还从数据库中清除删除存根(deletion stubs ),并删除符合条件视图的视图索引。

在视图属性的高级页签中,有两个和索引相关的选项:刷新、废弃。先看看刷新选项:

  • 第一次使用后自动刷新
    新建视图时的默认选项,也是一个功能和性能比较均衡的选项,无特殊情况下推荐使用。在用户第一次访问之前,索引器不会更新它,减小了无用视图对性能的影响。用户第一次访问时建立视图索引,所以这次访问会比较慢。不过一旦索引建立起来,索引器就会负责更新它,从而保证用户访问时无需等待。
  • 自动刷新
    与上一个类似,只是不管用户是否使用过它。这个选项对于用户的体验是最好的,因为打开视图时一般来说无需等待就能查看最新的数据;但对服务器来说压力是最大的,因为即使视图从没有人使用过,依然需要更新它的索引。情谨慎使用。
  • 手工刷新
    索引器不更新视图索引,完全依赖用户手工操作,对于服务器来说压力最小。用户打开视图时没有任何延迟,但是看到的数据可能不是最新的。此情况下视图左侧会显示刷新图标,提示用户数据并非最新的,用户点击图标或者按 F9 刷新数据。但对于浏览器应用来说,没有任何方式可以触发索引更新,所以无法使用。
  • 间隔 n 小时自动刷新
    手工刷新和自动刷新的混合体。如果距上次更新索引的时间超过了 n 小时,与自动刷新类似;反之与手工刷新类似。用于可预知更新频率的视图,比如每天晚上定时任务会创建文档,则可以设定为 24 小时刷新一次。

废弃选项:

  • 如果闲置 45 天
    45 天内没有任何用户访问此视图,则删除其索引。可以通过 Default_Index_Lifetime_Days 参数修改。
  • 每次使用后
    用了就删,下次用再重新创建。此方式对服务器压力会很大,一般很少用到,除非真的几乎是一次性使用。
  • 如果闲置 n 天
    与第一个选项类似。

请参考:The Indexer and Its FunctionalityThe basics of Notes view index refreshingUpdall switches, Update and NIF – Notes indexing basicsIndexer tasks: Update and Updall

  • POP3MarkRead=2
    缺省地,通过 POP3 接收的邮件在 Notes 仍然是未读,添加此参数可以将 POP3 接收的邮件标记为已读。
  • POP3_READ_ALL=1
    缺省地,一个 POP3 的客户端是不能接收在这个邮件库中已经被 Notes 客户端读过了的邮件。添加此参数可以让 POP3 的客户端 忽略邮件的已读或未读状态,以使得它能接收所有的邮件。需要重启 Domino 服务器生效。

用户有时会将带有很大附件的用户发给一些群组,例如将一个 50M 的邮件发给 100 个人,那么最终就会在服务器上产生 5G 的文档。这种情形会给 Domino 带来很严重的性能问题。6.5.5/7.0.1 以上版本,服务器添加了 Notes.ini 参数控制大规模超大邮件:

限制(收件人数)*(邮件大小)的总量
RouterMaxEffectiveSize=xxx (KB)

上述参数计算时,邮件大小不包括附件。推荐此参数与上面的配合使用
RouterMaxEffectiveSizeIncAttach=1

参考文档: Mass mailing causes Router to run out of memory and enter a hang state

如果 Domino 服务器上一个附件的文件名中包含百分号,那么从 web 端则无法下载。错误信息如下:

Http request contains a malformed escape sequence

解决方法是在服务器的 Notes.ini 中加入如下参数(好像要求 Domino 6.0.3 以上,不确定),然后重启服务器即可:

HTTPAllowDecodedUrlPercent=1

参考链接: DWA: Unable to download file attachment with percent (%) sign in file name

前些天有个项目的服务器,用代理发邮件的时候报如下错误:

You do not have a mail file/server specified. Use File Mobile Edit Current Location… to set them

最后查明问题原因是服务器 Notes.ini 的 MailServer 参数自动消失了。这是 Domino 的一个 Bug,在 6.5.5 和 7.0 中得到了修正。

参考链接: MailServer parameter disappears from the server’s Notes.ini

最近购入了22寸的宽屏液晶,屏幕大了看起来很爽没错,但是相对以前字体小了不少,时间长了眼睛有些难受。通过调节 windows 外观里面的各种字体大小,大部分程序都好了很多,但是 Notes 里面的字体还是以前的大小,尤其是帮助里面的字又多又小,看起来那叫一个晕。

还好我们有办法,在 notes.ini 里面加入如下一行就可以了:

Display_font_adjustment=1

数字越大字体就越大,我这边用 1 基本上就可以了。好好享受大屏幕吧!

参考资料:Can you increase the display font size in the Notes client?

在配置了网域搜索后,我们的 Domino 服务器 控制台上经常会报如下错误消息:

FT Summarize error – Summarizer: Locale [zh] not supported by summarizer

经查明,原来网域索引器会处理每篇文档的摘要信息,但是这个工作仅仅支持非常少的语言(当然我们的中文也不在支持之列),所以每次处理摘要信息的时候就会报这个错误。解决方法是添加以下两条 Notes.ini 配置之一就可以了(第一条是不处理摘要信息,第二条是将处理的语言设置为英语):

FTG_No_Summary=1

FT_Summ_Default_Language=english

请参考:IBM技术支持网站

在 Domino 7 服务器上,我们发现紧接着 HTTP 任务加载之后,会有一个叫做 DOMWS Convert AddIn 的任务加载。实际上这个任务和 Common PIM Portlets 以及 Web Service有关,一般情况我们是不需要它的。想要禁止这个任务运行,7.0.1及以上版本只需要将 “服务器文档->Internet 协议->Domino Web 引擎->XML 服务”禁用即可;7.0则需要添加如下Notes.ini 参数:

HTTPNoDomWSAppSpace=1

请参考:IBM技术支持网站

我们发现通过Domino服务器发送邮件给群组时,虽然发件人是群组的成员,但是却收不到邮件(web端如此,通过Foxmail等没有这个现象)。这是Domino在R4/R5左右引入的新功能,但是这却让有些用户很困惑。还好6.5.4引入新的Notes.ini参数可以来设定为不过滤发件人:

RouterDisableSenderElim=1
RouterDisableSenderElimForNDRs=1

请参考:Sender is not included in Recipients field for memo to group