gpt4 book ai didi

java - 不同机器上solr-8.9.0加载一个csv文件的对比

转载 作者:行者123 更新时间:2023-12-04 17:17:01 29 4
gpt4 key购买 nike

我有两台机器,在两台机器上我都安装了 solr-8.9.0。我已经更新了 solr 核心,相同的 csv 文件大小为 546MB。

机器1配置如下-

open file limit is 1024.
Max Processes Limit is 31168.

分配给 solr-8.9.0 的内存是 512MB。这可以使用以下命令“ps -ef | grep solr”进行检查

solr    4955  6959  1 Jul19 pts/0    00:54:51 /home/solr/installer/jdk/jdk1.8.0_66/bin/java -server -Xms512m -Xmx512m -XX:+UseG1GC -XX:+PerfDisableSharedMem -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=250 -XX:+UseLargePages -XX:+AlwaysPreTouch -XX:+ExplicitGCInvokesConcurrent -verbose:gc -XX:+PrintHeapAtGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -Xloggc:/home/solr/Lucene/solr/solr-8.9.0/server/logs/solr_gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=9 -XX:GCLogFileSize=20M -Dsolr.jetty.inetaccess.includes= -Dsolr.jetty.inetaccess.excludes= -Dsolr.log.dir=/home/solr/Lucene/solr/solr-8.9.0/server/logs -Djetty.port=8983 -DSTOP.PORT=7983 -DSTOP.KEY=solrrocks -Duser.timezone=UTC -XX:-OmitStackTraceInFastThrow -XX:OnOutOfMemoryError=/home/solr/Lucene/solr/solr-8.9.0/bin/oom_solr.sh 8983 /home/solr/Lucene/solr/solr-8.9.0/server/logs -Djetty.home=/home/solr/Lucene/solr/solr-8.9.0/server -Dsolr.solr.home=/home/solr/Lucene/solr/solr-8.9.0/server/solr -Dsolr.data.home= -Dsolr.install.dir=/home/solr/Lucene/solr/solr-8.9.0 -Dsolr.default.confdir=/home/solr/Lucene/solr/solr-8.9.0/server/solr/configsets/_default/conf -Xss256k -Dsolr.log.muteconsole -jar start.jar --module=http

使用以下命令加载 csv 文件。

curl 'http://localhost:8983/solr/comparison/update?commit=true&separator=|' --data-binary @/home/solr/data_546MB_7fields.csv -H 'Content-type:application/csv'

处理器型号名称:Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz

处理器数量 - 8

内存 - 8GB

加载 546M 的文件时,solr-8.9.0 需要 5 分 7 秒。

Machine-2配置如下-

open file limit is 4096.
Max Processes Limit is 9216.

分配给 solr-8.9.0 的内存是 32GB。这可以使用以下命令“ps -ef | grep solr”进行检查

solr    28821     1 62 11:44 pts/1    00:16:28 /home/solr/installer/jdk1.8.0_66/bin/java -server -Xms10240m -Xmx32768m -XX:+UseG1GC -XX:+PerfDisableSharedMem -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=250 -XX:+UseLargePages -XX:+AlwaysPreTouch -XX:+ExplicitGCInvokesConcurrent -verbose:gc -XX:+PrintHeapAtGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -Xloggc:/home/solr/installer/solr/solr-8.9.0/server/logs/solr_gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=9 -XX:GCLogFileSize=20M -Dsolr.jetty.inetaccess.includes= -Dsolr.jetty.inetaccess.excludes= -Dsolr.log.dir=/home/solr/installer/solr/solr-8.9.0/server/logs -Djetty.port=8983 -DSTOP.PORT=7983 -DSTOP.KEY=solrrocks -Duser.timezone=UTC -XX:-OmitStackTraceInFastThrow -XX:OnOutOfMemoryError=/home/solr/installer/solr/solr-8.9.0/bin/oom_solr.sh 8983 /home/solr/installer/solr/solr-8.9.0/server/logs -Djetty.home=/home/solr/installer/solr/solr-8.9.0/server -Dsolr.solr.home=/home/solr/installer/solr/solr-8.9.0/server/solr -Dsolr.data.home= -Dsolr.install.dir=/home/solr/installer/solr/solr-8.9.0 -Dsolr.default.confdir=/home/solr/installer/solr/solr-8.9.0/server/solr/configsets/_default/conf -Xss256k -Dsolr.log.muteconsole -jar start.jar --module=http

处理器型号名称:Intel(R) Xeon(R) CPU E5-2697 v2 @ 2.70GHz

处理器数量 - 48

内存 - 128GB

在加载大小为 546M 的文件时,solr-8.9.0 需要 9 分 28 秒。

为什么在 machine-2 上运行的 solr 加载 csv 文件需要 machine-1 的 1.65 倍,如果事实上我认为 machine-2 应该花费更少的时间,因为打开文件限制和分配给 solr 的内存高于 machine- 1.

这真的很糟糕。我对此很陌生,所以我尝试发布您需要了解我的问题的所有内容。非常感谢您的帮助。

最佳答案

是否有一个重要的理由留在旧的 Java 8(甚至比这个旧版本更新 66,基于目录名称?)你错过了以后版本的很多改进。

如果没有分析器的结果,例如:JDK Flight Recorder 或 Linux perf(使用例如火焰图作为可视化),我只能猜测您提供的哪些参数可能导致速度下降。

尝试并删除选项 -XX:+AlwaysPreTouch 具有这么大的堆大小:-Xmx32768m 因为在 Java 8 中这是 G1 收集器的单线程。

如果您不需要所有内存来进行压缩指针 (oops) 等优化,也可以考虑减小最大堆大小,您使用的内存越少,代码运行速度就越快(除非堆太满而您经常运行 Full-GC,或其他问题如 https://plumbr.io/handbook/gc-tuning-in-practice/premature-promotion )

如果你需要继续使用 Java 8,你至少应该确保你使用的是最新版本(而不是 5 年前的 66 更新)并且可能不在 G1GC 上,它在旧版本中仍然有些错误,而是使用默认版本,如果您不关心暂停时间,它应该是 -XX:+UseParallelGC。 (如果您确实有关心暂停时间的交互式用户,您可能想要比较其他选项,例如 CMS 或实验性的 Shenandoah)。

要了解您的应用程序需要多少堆内存,您可能需要使用以下工具分析您的 solr_gc.log:https://gceasy.io/

来源:

关于java - 不同机器上solr-8.9.0加载一个csv文件的对比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68481248/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com