9.3.indexer程序配置选项
9.3.1.mem_limit
索引过程内存使用限制。可选选项,默认32M。
这是indexer
不会超越的强制内存限制。可以以字节、千字节(以K为后缀)或兆字节(以M为后缀)为单位。参见示例。当过小的值导致I/O缓冲低于8KB时该限制会自动提高,此值的最低限度依赖于待索引数据的大小。如果缓冲低于256KB,会产生警告。
最大可能的限制是2047M。太低的值会影响索引速度,但256M到1024M对绝大多数数据集(如果不是全部)来说应该足够了。这个值设得太高可 能导致SQL服务器连接超时。在文档收集阶段,有时内存缓冲的一部分会被排序,而与数据库的通信会暂停,于是数据库服务器可能超时。这可以通过提高SQL 服务器端的超时时间或降低mem_limit
来解决。在Coreseek的分发版本中,如果使用python
数据源,则在Python部分的处理不会受mem_limit
的限制。
示例:
mem_limit = 256M # mem_limit = 262144K # same, but in KB # mem_limit = 268435456 # same, but in bytes
9.3.2.max_iops
每秒最大I/O操作次数,用于限制I/O操作。可选选项,默认为0(无限制)。
与I/O节流有关的选项。它限制了每秒钟最大的I/O操作(读或写)的次数。值0意思是不加限制。
indexer
在索引时可能导致突发的密集磁盘I/O,因此需要限制它磁盘活动(给同一台机器上运行的其他程序留出一些资源,比如searchd
)。 I/O节流就是用来实现上述功能的。它的工作原理是,在indexer
的连续磁盘I/O操作之间强制增加一个保证的延迟。现代SATA硬盘每秒钟可以执行多达70-100以上次的I/O操作(主要受磁头寻道时间的限制)。将索引I/O限制为上述数值的几分之一可以减轻由索引带来的搜索性能下降。
示例:
max_iops = 40
9.3.3.max_iosize
最大允许的I/O操作大小,以字节为单位,用于I/O节流。可选选项,默认为0(不限制)。
与I/O节流有关的选项。它限制indexer
文件I/O操作的单次最大大小。值0代表不加限制。超过限制的读写操作会被分成几个小的操作,并被max_iops计为多次。在本文写作时,全部I/O操作都被限制在256KB以下(默认的内部缓冲大小),因此大于256KB的max_iosize
值没有任何作用。
示例:
max_iosize = 1048576
9.3.4.max_xmlpipe2_field
对于XMLLpipe2数据源允许的最大的域大小,以字节为单位。可选选项,默认值为2MB。
示例:
max_xmlpipe2_field = 8M
9.3.5.write_buffer
写缓冲区的大小,单位是字节。可选选项,默认值是1MB。
在建立索引过程中,写缓冲用于写入临时行而最终的索引文件。写缓冲区越大则所需的磁盘写入次数越少。缓冲区使用的内存不计入mem_limit选项的值。注意对于不同的文件,会分配多个缓冲区(目前最多4个),这会引起内存占用增加。
示例:
write_buffer = 4M