HCL Digital Experience 9.5 Docker and Container initialization performance
Beginning with from HCL Digital Experience 9.5 Container Update CF192 release, container DX applications initialization performance is improved. Review the following guidance for information, defaults, and options to manage container applications initialization performance when deployed to Docker, Red Hat OpenShift, and Kubernetes platforms.
Introduction
When deployed on the supported Red Hat OpenShift and Kubernetes environments, the HCL
Digital Experience core platform "Pod" must be started before it can start serving requests.
Furthermore, once the Pod is started, HCL Digital Experience Portal and Web Content Manager
core must be initialized before the OpenShift or Kubernetes readiness
probes can
determine that the Pod is able to serve requests.
The OpenShift or Kubernetes readiness probe functions to execute an HTTP request to the "/wps/portal" or "/ibm/console" page and ensures that it responds. The HCL DX core must be initialized by execution of the "startServer.sh WebSphere_Portal" process before the readiness probes completes successfully. This starts the IBM WebSphere Application Server profile containing HCL DX Portal and Web Content Manager. This initialization process includes several IBM WebSphere and HCL DX applications including select portlets that must initialize before the HCL DX Core can respond to the readiness probe.
In DX 9.5 Container Update CF192 and higher, to support a faster initialization of DX core Portal and Web Content Manager in Docker, Red Hat OpenShift, and supported Kubernetes platforms, most DX portlets not required for initial operations will default to a "lazy load" initialization. Using this means of initialization, an HCL DX portlet application is not started by a user request, but by the first standard HTTP request that occurs and renders a DX portal page that contains the portlet application on the server. Direct access to the portlet, for example an Ajax request, does not start the portlet. In addition, some IBM WebSphere applications not required for initial operations will not be autostarted.
ConfigEngine Tasks
Three ConfigEngine tasks are deployed to support improvements to HCL DX Core initialization times. They are:
- stop-autostart-docker-applications
- default-autostart-docker-applications
- start-advanced-editor-applications
stop-autostart-docker-applications
- It will stop the Advanced Rich Text Editor.ear (Textbox.io) files from autostarting.
- It will
lazy load
all DX portlets that do not require the Portal and WCM functions to operate. - Portlets required for DX operations that will be loaded and initialized include for example, theme modules that are loaded from Portlets. These portlets must be started in order for the theme modules to load. The "Login" and "WCM Local Rendering" portlets are in also this list as they are required to present the Woodburn Studio demonstration site entry page, and therefore the Kubernetes readiness probe. Note that the readiness probe defaults to the WebSphere Application Console via probe functions that execute an HTTP request to the "/wps/portal" or "/ibm/console" page and ensures that it responds. SeeFigure: Configure Editor Options the list of portlets that are needed for DX operations and will automatically load.
default-autostart-docker-applications
The default-autostart-docker-applications task will restore the
autostart status of all applications to their out of the box
status (and not apply
Lazy load
initialization functions).
start-advanced-editor-applications
- Prerequisites:
- Portal Administrators should run the start-advanced-editor-applications task to start the Advanced Rich Text Editor.ear (Textbox.io)application, then proceed to select the Advanced Editor in the Web Content Manager interface.
Important Considerations and Limitations of the Container Initialization Improvements
As a result of not autostarting, these applications and portlets, initialization of DX Portal may be faster, but the initial access of most pages will initially be slower due to the fact that the application/portlet must now be initialized. Note this only affects the first access of that application/portlet (as initialization is a once per system activity). As new DX PODS are started, initialization of DX pages with non-required applications and portlets will be slower on first HTTP request.
Using Advanced Editors for WCM
As noted above, beginning with Container Update CF192, and default settings for ‘lazy load’ of non-required portlets and applications, the Advanced Rich Text Editor .ear Textbox.io for WCM is now NOT started. Since this is not a lazy load but rather a stop of the Advanced Rich Text Editor Textbox IO EAR containing the advanced editor, they must also start the Advanced Rich Text Editor EAR by running the "start-advanced-editor-applications" task, before configuring the Advanced Rich Text editor in the Web Content Manager configuration settings, to make the editor available for content authors. It is not necessary in addition to "commit” the new Docker images once this task completes, because these changes are in the profile which is persisted in an external volume and not in the Docker image.
Source File listing of HCL DX required portlets and applications that will autostart:
These configuration tasks use four files to obtain the list of HCL DX portlet/applications to autostart. All the files are located in the same directory:configuration root}/PortalServer/installer/wp.config/config/includes
/opt/HCL/PortalServer/installer/wp.config/config/includes
advancedEditorEAR - Enable the Advanced Editors
defaultListOfEnabledApps - The out of the box autostart parameters
listOfAppsDockerDisable - List of all portlets and applications who autostart is initially disabled
listOfAppsDockerEnable - List of portlets and applications to autostart after having disabled the one in listOfAppsDockerDisable
- List of portlets and applications that are automatically initialized by default
- (Container Update CF192 release and
later):
PA_Login_Portlet_App
PA_Site_Builder
PA_WCMLRingPortJSR286
PA_WCM_Authoring_UI
PA_Pingpageproperties
PA_Styles
PA_Wiring
PA_wp.pzn.ui.actions
PA_Orphaned
PA_VanityUrl
PA_New_Page
PA_Create_Content
PA_Applications
PA_Toolbar_Content
PA_Toolbar_SiteMap
PA_Impersonation
PA_WebScanner
PA_Theme_Creator
- List of portlets and applications initialized via
lazy load
- (Container Update CF192 release and later):
AJAX Proxy Configuration
Default_Theme_85
Dojo_Resources
EphoxEditLive
ibmasyncrsp
isclite
JavaContentRepository
jQuery_Resources
Live_Object_Framework
lwp.addtosametimelist_war
lwp_groupsViewer_war
lwp_peoplefinder_war
lwp_peoplePicker_war
MashupCommonComponent
Mobile_Preview
PA_Applications
PA_AtiveSiteAnalytics
PA_Banner_Ad
PA_Blurb_1
PA_CM_Picker
PA_ContactList
PA_Create_Content
PA_CredVaultDialog
PA_Dialog_Stack
PA_Dialog_State
PA_DynamicUIApp
PA_EitThemeProperties
PA_FedDocumentsPicker
PA_Feed_Service_Admin
PA_FS_Disambiguation
PA_Impersonation
PA_IWidget_Wrapper
PA_Login_Portlet_App
PA_MosoftExchange2010
PA_New_Page
PA_Orphaned
PA_Page_Picker
PA_Pingpageproperties
PA_Pmizationframework
PA_PortalWSRPProxy
PA_PTransformationApp
PA_Search_Center
PA_SearchSitemapPort
PA_Selfcare_Port_App
PA_Site_Builder
PA_spa
PA_Styles
PA_Tag_Cloud
PA_Theme_Creator
PA_Theme_Manager
PA_Toolbar_Content
PA_Toolbar_SiteMap
PA_VanityUrl
PA_WCM_Authoring_UI
PA_WCMLRingPortJSR286
PA_WCMSupportTools
PA_WebDockPortServlet
PA_WebScanner
PA_Wiring
PA_WPF
PA_wp.feedspace
PA_wp.pzn.ui.actions
PA_wp.vwat.manager
Personalization_Lists
Personalization_Workspace
Practitioner_Studio_Theme_95
PSESearchAdapter
pznpublish
pznscheduler
PZN_Utilities
Quickr_Document_Picker
RESTAPIDocs
Seedlist_Servlet
Simple_Theme
SpellChecker
StartupCheck
SwaggerUI
Theme_Dev_Assets
ThemeDevSite
Theme_Modules
TinyEditorsServices
TinyEditorsTextboxio
Toolbar_Modules
Toolbar_Theme_85
UserProfileRESTServlet
wci
wcm
WCM_EXTENSION
wcm-remote-admin-ejb
Woodburn_Studio_Theme_95
worklight_extension
wp.scriptportlet.editor
wp.scriptportlet.importexport
wps
wps_scheduler
wp.theme.ckeditor.ear
wp.theme.toolbar.xslt
wp.vwat.servlet.ear
WSPolicyManager