运行我的 optaplanner 项目并得到以下输出。看来有两个问题。这些输出是什么意思?第一个是
Score calculation speed will be too low because move thread ({})'s destroy wasn't processed soon enough.
另一个是
ERROR 603112 --- [pool-1-thread-3] o.o.core.impl.solver.thread.ThreadUtils : Multithreaded Local Search's ExecutorService didn't terminate within timeout (1 seconds).
包含错误的输出是here.
application.properties是从某处复制的,不太了解。该文件是这样的:
spring.datasource.url=jdbc:h2:mem:fedb;DB_CLOSE_DELAY=-1
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
logging.level.root=INFO
logging.level.org.springframework=INFO
logging.level.org.drools=INFO
logging.level.org.optaplanner.core=INFO
optaplanner.solver.termination.spent-limit=2s
optaplanner.solver.move-thread-count=10
optaplanner.solver.environment-mode=NON_REPRODUCIBLE
spring.servlet.multipart.max-file-size=500MB
spring.servlet.multipart.max-request-size=500MB
server.port=8090
回答杰弗里的问题:
使用Java 1.8.0_241,OptaPlanner optaplanner-bom 7.59.0.Final。
终止时间设置为 2 秒,应用程序按时退出并提供有效的解决方案。昨天一直可以重现错误输出,但是今天完全没有错误,没有更改代码。真的很奇怪。今天的输出是here。我想我应该删除这个帖子。
除了杰弗里的回答之外,我想从您提供的日志中指出另一件事:
The resolvedMoveThreadCount (10) is higher than the availableProcessorCount (8), which is counter-efficient.
您似乎过度扩展了您的机器。所有的上下文切换可能会让你的求解器陷入瘫痪。
此外,我认为当前的最佳实践是不要超过 4 个移动线程,因为无论如何解算器可能都不会超过这个数量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)