Apache Solr 处理数十万个请求
Apache Solr handle hundreds of thousands requests
我们有一个小型的本地搜索应用程序。对于后台服务,我们使用 Apache Solr 6.6.2 进行数据索引和存储。前端在 PHP 中,带有 Apache2 网络服务器。
我们有一台 48 核和 96 GB RAM 的服务器,其中安装了这些服务。索引中文档的预期大小约为 2 亿,每个文档最多可以有 20 个字段。大多数字段都被索引和存储。
预期的并发请求一次可以达到数十万。那么处理它的 Apache Solr 的最佳配置是什么?我们已经使用 20 GB RAM 启动了 Solr 并进行了压力测试,但在接近 100 个用户时它开始降低性能。问题出在哪里?这个问题的最佳方法是什么。
我们也测试了SolrCloud模式下的Solr,但性能并没有太大提升。我们期望如果出现内存问题,它们将是 OOM 异常,但并没有发生类似的事情。我们刚刚根据我们的要求更改了架构,并通过命令行更改了内存。所有其他设置都是默认设置。
以下是我们已经查阅过的一些参考资料
如果您计划每秒处理数十万个请求,您将需要不止一台服务器 - 无论它有多大。即使它只是为了 HA / DR 目的。所以我建议使用 SolrCloud 并将索引分片到多台机器上并使用多个副本,这样就可以开始了。
除此之外,细节决定成败
- 您希望查询执行多快(中位数和 99%ile)。这将帮助您调整大小 CPU 和内存需求。
- 您的查询有多复杂?
- 你在使用过滤器吗? (需要更多堆内存)
- 您的磁盘访问速度有多快?
- 您是否会实时添加数据(影响您对自动提交和软提交的设置
但首先你需要摆脱 "one big box" 思考。
我们有一个小型的本地搜索应用程序。对于后台服务,我们使用 Apache Solr 6.6.2 进行数据索引和存储。前端在 PHP 中,带有 Apache2 网络服务器。
我们有一台 48 核和 96 GB RAM 的服务器,其中安装了这些服务。索引中文档的预期大小约为 2 亿,每个文档最多可以有 20 个字段。大多数字段都被索引和存储。
预期的并发请求一次可以达到数十万。那么处理它的 Apache Solr 的最佳配置是什么?我们已经使用 20 GB RAM 启动了 Solr 并进行了压力测试,但在接近 100 个用户时它开始降低性能。问题出在哪里?这个问题的最佳方法是什么。
我们也测试了SolrCloud模式下的Solr,但性能并没有太大提升。我们期望如果出现内存问题,它们将是 OOM 异常,但并没有发生类似的事情。我们刚刚根据我们的要求更改了架构,并通过命令行更改了内存。所有其他设置都是默认设置。
以下是我们已经查阅过的一些参考资料
如果您计划每秒处理数十万个请求,您将需要不止一台服务器 - 无论它有多大。即使它只是为了 HA / DR 目的。所以我建议使用 SolrCloud 并将索引分片到多台机器上并使用多个副本,这样就可以开始了。
除此之外,细节决定成败
- 您希望查询执行多快(中位数和 99%ile)。这将帮助您调整大小 CPU 和内存需求。
- 您的查询有多复杂?
- 你在使用过滤器吗? (需要更多堆内存)
- 您的磁盘访问速度有多快?
- 您是否会实时添加数据(影响您对自动提交和软提交的设置
但首先你需要摆脱 "one big box" 思考。