slow server startup in configure.sh when building app image with Open Liberty and Java 17
Build daytrader10 container image on a Ubuntu 2204 Fyre VM. It takes about 5 minutes to complete the RUN time configure.sh step. It stays at Starting server defaultServer for a long time
FROM icr.io/appcafe/open-liberty:full-java17-openj9-ubi
....
RUN time configure.sh
Features in server.xml
<featureManager>
<feature>enterpriseBeans-4.0</feature>
<feature>servlet-6.0</feature>
<feature>faces-4.0</feature>
<feature>pages-3.1</feature>
<feature>persistence-3.1</feature>
<feature>mdb-4.0</feature>
<feature>cdi-4.0</feature>
<feature>websocket-2.1</feature>
<feature>concurrent-3.0</feature>
<feature>connectors-2.1</feature>
<feature>jsonp-2.1</feature>
<feature>jsonb-3.0</feature>
<feature>beanValidation-3.0</feature>
<feature>restfulWS-3.1</feature>
<feature>ssl-1.0</feature>
<feature>messaging-3.1</feature>
<feature>mpHealth-4.0</feature>
</featureManager>
Output time at the end of configure.sh
STEP 7/7: RUN time configure.sh
+ main
+ WLP_INSTALL_DIR=/opt/ol/wlp
............
...............................
openjdk version "17.0.10" 2024-01-16
IBM Semeru Runtime Open Edition 17.0.10.0 (build 17.0.10+7)
Eclipse OpenJ9 VM 17.0.10.0 (build openj9-0.43.0, JRE 17 Linux amd64-64-Bit Compressed References 20240116_670 (JIT enabled, AOT enabled)
OpenJ9 - 2c3d78b48
OMR - ea8124dbc
JCL - 2aad089841f based on jdk-17.0.10+7)
.........................
....................................
+ echo 'SCC layer is 80% full.'
SCC layer is 80% full.
real 5m2.882s
user 1m54.328s
sys 0m9.691s
It seems to build faster in travis. Below is the time from travis build log
#10 [6/6] RUN configure.sh
#10 0.222 + main
#10 0.222 + WLP_INSTALL_DIR=/opt/ol/wlp
...........
#10 0.914 Starting server defaultServer.
#10 32.69 Server defaultServer started with process ID 62.
...........
#10 56.94 SCC layer is 81% full.
#10 DONE 57.1s
I only see this problem when building with icr.io/appcafe/open-liberty:full-java17-openj9-ubi. It is much faster when building with icr.io/appcafe/open-liberty:full-java11-openj9-ubi or icr.io/appcafe/open-liberty:full-java21-openj9-ubi-minimal
- Here is the time when building with icr.io/appcafe/open-liberty:full-java11-openj9-ubi
STEP 7/7: RUN time configure.sh
........................
openjdk version "11.0.22" 2024-01-16
IBM Semeru Runtime Open Edition 11.0.22.0 (build 11.0.22+7)
Eclipse OpenJ9 VM 11.0.22.0 (build openj9-0.43.0, JRE 11 Linux amd64-64-Bit Compressed References 20240131_966 (JIT enabled, AOT enabled)
OpenJ9 - 2c3d78b48
OMR - ea8124dbc
JCL - 7876cac747 based on jdk-11.0.22+7)
........................
+ echo 'SCC layer is 82% full.'
real 0m36.723s
user 1m37.164s
sys 0m8.095s
COMMIT dt10:ol-full-java11
--> d1b55543bc6
- Here is time when building with icr.io/appcafe/open-liberty:full-java21-openj9-ubi-minimal
STEP 7/7: RUN time configure.sh
............
openjdk version "21.0.2" 2024-01-16 LTS
IBM Semeru Runtime Open Edition 21.0.2.0 (build 21.0.2+13-LTS)
Eclipse OpenJ9 VM 21.0.2.0 (build openj9-0.43.0, JRE 21 Linux amd64-64-Bit Compressed References 20240116_94 (JIT enabled, AOT enabled)
OpenJ9 - 2c3d78b48
OMR - ea8124dbc
JCL - 78c4500a434 based on jdk-21.0.2+13)
.......................
SCC layer is 81% full.
real 0m41.052s
user 1m44.250s
sys 0m10.282s
I do not see this problem anymore on Open Liberty 24.0.0.7 or 24.0.0.8
# podman build -t dt10:olf-j17-testdefect --cap-add=CHECKPOINT_RESTORE --cap-add=SYS_PTRACE --cap-add=SETPCAP --security-opt seccomp=unconfined -f Containerfile --no-cache --volume /root/libertyrepo:/opt/libertyrepo --build-arg BASE_IMAGE="icr.io/appcafe/open-liberty:full-java17-openj9-ubi" .
.............
STEP 12/13: RUN time configure.sh
+ main
+ WLP_INSTALL_DIR=/opt/ol/wlp
................
openjdk version "17.0.11" 2024-04-16
IBM Semeru Runtime Open Edition 17.0.11.0 (build 17.0.11+9)
Eclipse OpenJ9 VM 17.0.11.0 (build openj9-0.44.0, JRE 17 Linux amd64-64-Bit Compressed References 20240416_760 (JIT enabled, AOT enabled)
OpenJ9 - b0699311c7
OMR - 254af5a04
JCL - 5d7d758b682 based on jdk-17.0.11+9)
..................
real 0m37.721s
user 1m41.004s
sys 0m8.128s
--> c29c4dc4072
STEP 13/13: RUN checkpoint.sh afterAppStart
Performing checkpoint --at=afterAppStart
Launching defaultServer (Open Liberty 24.0.0.7/wlp-1.0.91.cl240720240701-1102) on Eclipse OpenJ9 VM, version 17.0.11+9 (en_US)
podman build -t daytrader10:ol-full-java17-x86 --cap-add=CHECKPOINT_RESTORE --cap-add=SYS_PTRACE --cap-add=SETPCAP --security-opt seccomp=unconfined -f Containerfile --no-cache --volume /root/libertyrepo:/opt/libertyrepo --build-arg BASE_IMAGE="stg.icr.io/cp/olc/open-liberty-daily:full-java17-openj9-ubi" .
...............
STEP 12/13: RUN time configure.sh
+ main
+ WLP_INSTALL_DIR=/opt/ol/wlp
……….
openjdk version "17.0.11" 2024-04-16
IBM Semeru Runtime Open Edition 17.0.11.0 (build 17.0.11+9)
Eclipse OpenJ9 VM 17.0.11.0 (build openj9-0.44.0, JRE 17 Linux amd64-64-Bit Compressed References 20240416_760 (JIT enabled, AOT enabled)
OpenJ9 - b0699311c7
OMR - 254af5a04
JCL - 5d7d758b682 based on jdk-17.0.11+9)
………….
real 0m37.190s
user 1m38.574s
sys 0m7.954s
--> 56f9efbedb8
STEP 13/13: RUN checkpoint.sh afterAppStart
Performing checkpoint --at=afterAppStart
Launching defaultServer (Open Liberty 24.0.0.8/wlp-1.0.92.cl240820240725-1102) on Eclipse OpenJ9 VM, version 17.0.11+9 (en_US)
......