Solr 文件描述符计数
Solr File Descriptor Count
我有一个 Apache Solr 4.2.1 实例,它有 4 个内核,总大小 (625MB + 30MB + 20GB + 300MB) 21 GB。
它运行在 4 核 CPU、16GB 内存、120GB 硬盘、CentOS 专用机器上。
第一个核心每天完全导入一次。
第二个核心每两小时完全导入一次。
第 3 个核心每两小时增量导入一次。
4rth 核心每两小时完全导入一次。
服务器也有相当数量的查询(搜索和创建、更新和删除文档)。
每个核心都有 maxDocs:100 和 maxTime:15000 用于 autoCommint 和 maxTime:1000 用于 autoSoftCommit。
系统使用情况是:
14.96 GB 物理内存的大约 97%
0MB 交换 Space
4096 个文件描述符计数的大约 94%
1.21GB JVM 内存的 60% 到 90%。
当我重新启动机器时,文件描述符计数下降到接近 0,然后在一周左右的时间里稳定地达到上述值。
总而言之,我的问题是:
4096个文件描述符计数的94%正常吗?
如何增加文件描述符的最大数量?
如何计算最大和已用文件描述符计数的理论最优值。
文件描述符计数会达到 100 吗?如果是,服务器会崩溃吗?或者它会自行将其保持在 100% 以下并正常运行?
非常感谢!
- 当然可以。
ulimit -n <number>
。参见 Increasing ulimit on CentOS。
- 确实没有 - 需要多少取决于很多因素,例如您的 mergefactor(如果您有 许多 个文件,打开文件的数量将也很大 - 对于不是完整导入的索引尤其如此。检查数据目录中的文件数量,如果同一索引变得非常零散并且具有较大的合并因子,则发出优化),搜索者数量, 同一台服务器上的其他软件 运行 等
- 可以。是的(或者至少它不能正常运行,因为它不能打开任何新文件)。不会。在实践中,您会收到一条关于无法打开文件的消息 "Too many open files".
因此,文件描述符计数 (FDC) 的问题,更准确地说,随着 FDC 的不断增加,我在每次更新后都会提交!
我注意到 Solr 没有删除旧的事务日志。因此,在一周的时间后,FDC 已经用完了,我被迫重新启动。
每次更新后我都停止提交,现在我的 Solr 统计数据是:
- 14.96 GB 物理内存的大约 55%
- 0MB 交换 Space
- 4096 个文件描述符计数的大约 4%
- 1.21GB JVM 内存的 60% 到 80%。
另外,旧的事务日志被自动提交(软和硬)删除,Solr 不再有性能磨损!
所以,正如这篇文章中指出的那样:
Understanding Transaction Logs, Soft Commit and Commit in SolrCloud
"Be very careful committing from the client! In fact, don’t do it."
我有一个 Apache Solr 4.2.1 实例,它有 4 个内核,总大小 (625MB + 30MB + 20GB + 300MB) 21 GB。
它运行在 4 核 CPU、16GB 内存、120GB 硬盘、CentOS 专用机器上。
第一个核心每天完全导入一次。
第二个核心每两小时完全导入一次。
第 3 个核心每两小时增量导入一次。
4rth 核心每两小时完全导入一次。
服务器也有相当数量的查询(搜索和创建、更新和删除文档)。
每个核心都有 maxDocs:100 和 maxTime:15000 用于 autoCommint 和 maxTime:1000 用于 autoSoftCommit。
系统使用情况是:
14.96 GB 物理内存的大约 97%
0MB 交换 Space
4096 个文件描述符计数的大约 94%
1.21GB JVM 内存的 60% 到 90%。
当我重新启动机器时,文件描述符计数下降到接近 0,然后在一周左右的时间里稳定地达到上述值。
总而言之,我的问题是:
4096个文件描述符计数的94%正常吗?
如何增加文件描述符的最大数量?
如何计算最大和已用文件描述符计数的理论最优值。
文件描述符计数会达到 100 吗?如果是,服务器会崩溃吗?或者它会自行将其保持在 100% 以下并正常运行?
非常感谢!
- 当然可以。
ulimit -n <number>
。参见 Increasing ulimit on CentOS。- 确实没有 - 需要多少取决于很多因素,例如您的 mergefactor(如果您有 许多 个文件,打开文件的数量将也很大 - 对于不是完整导入的索引尤其如此。检查数据目录中的文件数量,如果同一索引变得非常零散并且具有较大的合并因子,则发出优化),搜索者数量, 同一台服务器上的其他软件 运行 等
- 可以。是的(或者至少它不能正常运行,因为它不能打开任何新文件)。不会。在实践中,您会收到一条关于无法打开文件的消息 "Too many open files".
因此,文件描述符计数 (FDC) 的问题,更准确地说,随着 FDC 的不断增加,我在每次更新后都会提交!
我注意到 Solr 没有删除旧的事务日志。因此,在一周的时间后,FDC 已经用完了,我被迫重新启动。
每次更新后我都停止提交,现在我的 Solr 统计数据是:
- 14.96 GB 物理内存的大约 55%
- 0MB 交换 Space
- 4096 个文件描述符计数的大约 4%
- 1.21GB JVM 内存的 60% 到 80%。
另外,旧的事务日志被自动提交(软和硬)删除,Solr 不再有性能磨损!
所以,正如这篇文章中指出的那样:
Understanding Transaction Logs, Soft Commit and Commit in SolrCloud
"Be very careful committing from the client! In fact, don’t do it."