Postgresql 带有Jack Rabbit oak实现的SpringBoot应用程序启动时间过长

Postgresql 带有Jack Rabbit oak实现的SpringBoot应用程序启动时间过长,postgresql,spring-boot,amazon-s3,jackrabbit,jackrabbit-oak,Postgresql,Spring Boot,Amazon S3,Jackrabbit,Jackrabbit Oak,我正在开发Spring boot应用程序内容管理系统,该系统在jack rabbit oak节点结构实现和PostgreSQL 10.4 db中的所有节点元数据存储的帮助下,在amazon-s3存储库中存储多个文件。我们的应用程序部署在Cloud foundry上, 无论应用程序在推动某些更改后启动到哪里,启动都需要花费大约4小时的时间。通过分析,我可以看到启动日志中出现了大量以下日志: { "@timestamp":"2019-12-03T15:23:28.156+00:00", "@vers

我正在开发Spring boot应用程序内容管理系统,该系统在jack rabbit oak节点结构实现和PostgreSQL 10.4 db中的所有节点元数据存储的帮助下,在amazon-s3存储库中存储多个文件。我们的应用程序部署在Cloud foundry上, 无论应用程序在推动某些更改后启动到哪里,启动都需要花费大约4小时的时间。通过分析,我可以看到启动日志中出现了大量以下日志:

{
"@timestamp":"2019-12-03T15:23:28.156+00:00",
"@version":1,"message":"Slow Query Report SQL=select ID, MODIFIED, MODCOUNT, CMODCOUNT, 
HASBINARY, DELETEDONCE, VERSION, SDTYPE, SDMAXREVTIME, DATA, BDATA from table_NODES 
where ID > ? and ID < ? order by ID FETCH FIRST 1601 ROWS ONLY; time=23329 ms;",
"logger_name":"org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReport",
"thread_name":"main","level":"WARN","level_value":30000
}
Long running query on table_NODES with 1601 hits (limited to 1601),
 elapsed time 23335ms (configured QUERYTIMELIMIT 10000), 
params minid '1:/3d3ea681-xxxx-4ed7-b68d-7fgfj8ggkl' maxid '1:0' excludeKeyPatterns [] conditions [] limit 1601. 
Result range: '1:/3d3ea6fe-xxxx-ghjggb3-4ghvkklh'...'1:/3jsffsd8-810a-xxxx-b51a-XXXXXXXX'. 
Read 1323775 chars from DATA and 0 bytes from BDATA. Check calling method. 
由于我是Jack rabbit oak功能和PostgreSQL的新手,我不确定应用程序启动时内部发生了什么,以及为什么要花那么多时间。请帮助我理解这些,以及如何克服这个问题,以便应用程序能够快速启动。 您还可以找到以下数据库配置日志:

{
"@timestamp":"2019-12-03T15:23:25.338+00:00",
"@version":1,"message":"RDBDocumentStore (1.10.2) instantiated for database PostgreSQL 10.4 
(Ubuntu 10.4-2.pgdg16.04+1) (10.4), using driver: PostgreSQL JDBC Driver 42.2.2 (42.2), 
connecting to: jdbc:postgresql:<connection URL>, properties: {datcollate=C, 
pg_encoding_to_char(encoding)=UTF8}, transaction isolation level: TRANSACTION_READ_COMMITTED (2), 
.table_nodes: id varchar(512), modified int8, hasbinary int2, deletedonce int2, modcount int8, 
cmodcount int8, dsize int8, data varchar(16384), bdata bytea(2147483647), version int2, 
sdtype int2, sdmaxrevtime int8 /* {bytea=-2, int2=5, int8=-5, varchar=12
}

*/ /* index table_nodes_mod on public.table_nodes (modified ASC) other (#109582080, p623124), 
unique index table_nodes_pkey on public.table_nodes (id ASC) other (#109582080, p2389650), 
index table_nodes_sdm on public.table_nodes (sdmaxrevtime ASC) other (#109582080, p487463), 
index table_nodes_sdt on public.table_nodes (sdtype ASC) other (#109582080, p474156), 
index table_nodes_vsn on public.table_nodes (version ASC) other (#109582080, p473956) */",
"logger_name":"org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore",
"thread_name":"main","level":"INFO","level_value":20000}
Initialized DocumentNodeStore with clusterNodeId: 387, updateLimit: 100000 (id: 387, 
startTime: 1575386605462, machineId: mac:xxxxxxxxxxx, instanceId: /home/vcap/app, 
pid: 8, uuid: xxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxxxx, readWriteMode: null, leaseCheckMode: STRICT, 
state: ACTIVE, oakVersion: 1.10.2, formatVersion: 1.8.0)

第一条消息的完整堆栈跟踪将非常有用。您可能没有正确关闭系统,这将导致在下次启动时进行LastRevRecovery扫描


最好通过正确关闭系统来避免这种扫描。在Oak版本>=1.12.0中,扫描本身应该更快。请参阅。

一段时间后,应用程序会自动重新启动,因此如何确保正确关闭系统?是否对此进行了任何配置更改?为什么会自动重新启动?如何部署?我们的应用程序部署在Cloud Foundry平台上,无论何时在Cloud Foundry上进行任何升级,应用程序都会重新启动以反映系统升级的变化。