我们的生产 Domino 服务器是 32 位 Windows 2003 服务器,其中操作系统、程序文件和 Domino 数据都位于不同的磁盘驱动器上。我不记得在那台服务器上看到过这个错误:
NotesException: Notes 错误: 此数据库的全文索引正在使用中
在我们切换到只有 C: 驱动器的 64 位 Windows 2008 虚拟服务器后,我们经常看到此错误。
今天我做了一个测试,我首先生成了 4000 个相当大的文档。然后我运行了这个 XPage SSJS 代码:
for (var i = 0; i < 300; i++) {
print("FT");
database.FTSearch("[Form]=Test");
java.lang.Thread.sleep(100);
}
当上面的代码运行时,我运行这个:
print("START indexing");
database.updateFTIndex(true);
print("END indexing");
我在两台服务器上都做了两次。在 32 位专用服务器上,我没有收到任何错误。编制索引耗时 4 秒,在编制索引期间进行了 32 次 FT 搜索。
在 64 位虚拟服务器上,在“开始索引”打印之后只有 1 次 FT 搜索,之后我得到了错误。所有这 3 件事都发生在同一秒(索引开始、一次 FT 搜索和错误)。
两台 Domino 服务器都是版本 9。在虚拟服务器上有超过 10GB 的可用空间(测试数据库中的 FT 索引大小为 10MB)。
我能想到的这种差异的唯一原因是 FT 索引器使用专用服务器上的其他驱动器进行索引,因此错误没有发生在那里。对吗?是否有相关文档?
我们没有使用FTBasePath
notes.ini 参数。
将操作系统、程序文件和 Domino 数据放在同一个磁盘上可能/将是性能问题,但不应导致您看到的问题。
由于生产服务器显然已迁移到新平台,
除此之外,请确认没有病毒扫描程序,... 正在访问 FT 文件,正如 Simon 评论的那样。
我将 FT 搜索之间的睡眠时间减少到 10 毫秒,并添加了异常处理,以便在异常后 10 毫秒再次尝试 FT 搜索。
结果是专用服务器上的 14 轮异常和虚拟服务器上的 12 轮异常。当我第一次测试时,虚拟服务器上可能有一些负载。100ms 的睡眠时间太长,导致专用服务器上的异常。
所以不幸的是,当全文索引开始时,这个异常似乎总是在短时间内发生。在其他虚拟服务器使用相同 RAID 系统的虚拟服务器上,磁盘操作有时会很慢,导致 FT 索引繁忙时间增加。