{"id":1125,"date":"2023-09-01T18:01:14","date_gmt":"2023-09-01T12:31:14","guid":{"rendered":"https:\/\/www.techandtrain.com\/blog\/?p=1125"},"modified":"2025-10-22T14:53:05","modified_gmt":"2025-10-22T09:23:05","slug":"performance-tuning-in-liferay-part-1","status":"publish","type":"post","link":"https:\/\/www.techandtrain.com\/blog\/2023\/09\/performance-tuning-in-liferay-part-1\/","title":{"rendered":"Performance tuning in Liferay &#8211; Part 1"},"content":{"rendered":"\n<p>Expanding on my post here on performance tuning:&nbsp;<a href=\"https:\/\/www.linkedin.com\/feed\/update\/urn:li:activity:7103063932063428608\/\">Post | Feed | LinkedIn<\/a><\/p>\n\n\n\n<p>Below are the main points to work on for a performance tuning engagement in Liferay &#8211; Part 1.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Firstly, we need to find out what is slow: Database, service calls, elastic search, memory is an issue, threads are blocked \/ waiting, how much memory is a module taking, logs are printing what, etc.<\/li>\n\n\n\n<li>Check your configurations as per this post:&nbsp;<a href=\"https:\/\/www.linkedin.com\/pulse\/how-debug-liferay-some-pointers-part-1-neil-harwani\/\">How to debug Liferay? &#8211; Some pointers &#8211; Part 1 | LinkedIn<\/a><\/li>\n\n\n\n<li>Install Glowroot if possible, in central pattern and check following sections in it: slow traces, errors, service calls, threads, heap, instrumentation, configurations and so on for the problem timeframe.<\/li>\n\n\n\n<li>You can enable tracing in logs &amp; Glowroot instrumentation on targets. You can also use plugins by&nbsp;<a href=\"https:\/\/www.linkedin.com\/in\/fabian-bouch%C3%A9-1915161?miniProfileUrn=urn%3Ali%3Afs_miniProfile%3AACoAAABBBn0BIZQbuCbVd6CpLuUdkdFTYprQo1s\">Fabian Bouch\u00e9<\/a>&nbsp;like for fragment analysis or follow his blogs on&nbsp;<a href=\"http:\/\/www.liferay.dev\/blogs\">www.liferay.dev\/blogs<\/a>&nbsp;for using Glowroot in upgrades.<\/li>\n\n\n\n<li>The above will give you hints on what is slow. Especially open the FLAME graphs and threads along with heap dumps to analyze which threads are blocked or waiting, how much memory is allocated to what in slow traces of modules and so on.<\/li>\n\n\n\n<li>Then run a load test in simulated environment after checking compatibility matrix to get latest statistics for various scenarios like web content on portlet or in fragment, API calls, integrations, heavy load on Elasticsearch and so on with experimentation on themes.<\/li>\n\n\n\n<li>After getting the slow threads and details in flame graphs plus slow traces, if it&#8217;s custom code or configuration or DB call or ES which is slow, optimize it like Hikari pool connections or if it&#8217;s source code of Liferay, open the GITHUB repo for Liferay portal, check the source code and reach out of Customer Success \/ Global Services \/ Support with inferences depending on your engagement in account. Your Customer Success Manager or Sales can guide you on this.<\/li>\n\n\n\n<li>GS \/ CS will work internally in Liferay to get you the best options and \/ or patches in case they already exist. Many a times this could also have been fixed in a Hot fix or Fix Pack already. Alternatively, configurations could also solve such problems many a times. To check these go to Liferay customer portal and check the changelog for fix packs. You can also refer to Liferay Learn and Help Center for help articles and tutorials.<\/li>\n\n\n\n<li>Various areas of performance tuning: Database, HTTP calls, App server, ElasticSearch, Threads, Heap optimization, Caching and more.&nbsp;<strong>We will follow up this post with more pointers on performance tuning in Part &#8211; 2.&nbsp;<\/strong>A good list of areas is to check in the deployment guide for your version.<\/li>\n\n\n\n<li>Thanks to&nbsp;<a href=\"https:\/\/www.linkedin.com\/in\/fabian-bouch%C3%A9-1915161?miniProfileUrn=urn%3Ali%3Afs_miniProfile%3AACoAAABBBn0BIZQbuCbVd6CpLuUdkdFTYprQo1s\">Fabian Bouch\u00e9<\/a>&nbsp;<a href=\"https:\/\/www.linkedin.com\/in\/david-nebinger-5b778315?miniProfileUrn=urn%3Ali%3Afs_miniProfile%3AACoAAAMjw5sBvOlR1x_Qf6OD2a1OxSmYCJDq46o\">David Nebinger<\/a>&nbsp;and many more at Liferay Global Services \/ Support \/ Customer Success and Customer Support \/ Engineering due to which I am able to compile the above. Above is a compilation of work from many sources internally in Liferay via work with customers &amp; externally which hopefully should help many of Liferay customers and partners. This also serves as a case study on performance tuning.<\/li>\n\n\n\n<li>Email me:&nbsp;<a href=\"mailto:Neil@HarwaniSystems.in\">Neil@HarwaniSystems.in<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Expanding on my post here on performance tuning:&nbsp;Post | Feed | LinkedIn Below are the main points to work on [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":1126,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"nf_dc_page":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[192],"tags":[237,200,308,307],"class_list":["post-1125","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-liferay","tag-dxp","tag-liferay","tag-liferay-performance-tuning","tag-performance-tuning"],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/09\/Ferrari.jpg?fit=1280%2C876&ssl=1","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p7do02-i9","jetpack-related-posts":[{"id":1130,"url":"https:\/\/www.techandtrain.com\/blog\/2023\/09\/performance-tuning-in-liferay-part-2\/","url_meta":{"origin":1125,"position":0},"title":"Performance tuning in Liferay &#8211; Part 2","author":"Neil Harwani","date":"September 25, 2023","format":false,"excerpt":"Following up on the\u00a0Performance tuning in Liferay - Part 1 post\u00a0- here are some additional points for performance tuning: The blue circle in Glowroot slow traces indicates that the transaction is still ongoing whereas yellow indicates it's completed. Red indicates there is an error. You can change the JVM gauges\u2026","rel":"","context":"In &quot;Liferay&quot;","block_context":{"text":"Liferay","link":"https:\/\/www.techandtrain.com\/blog\/category\/liferay\/"},"img":{"alt_text":"Credits: www.Pixabay.com","src":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/09\/Ferrari.jpg?fit=1200%2C821&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/09\/Ferrari.jpg?fit=1200%2C821&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/09\/Ferrari.jpg?fit=1200%2C821&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/09\/Ferrari.jpg?fit=1200%2C821&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/09\/Ferrari.jpg?fit=1200%2C821&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":1175,"url":"https:\/\/www.techandtrain.com\/blog\/2023\/11\/liferay-best-practices-part-2\/","url_meta":{"origin":1125,"position":1},"title":"Liferay best practices &#8211; Part 2","author":"Neil Harwani","date":"November 24, 2023","format":false,"excerpt":"Following up with Part 1 of the series here:\u00a0Liferay best practices - Part 1 | LinkedIn -\u00a0Here is part 2 of Liferay best practices: Look out for settings of ORA-1795 error and it's required settings from Liferay Help Center articles if you are using Oracle If you have heavy usage\u2026","rel":"","context":"In &quot;Liferay&quot;","block_context":{"text":"Liferay","link":"https:\/\/www.techandtrain.com\/blog\/category\/liferay\/"},"img":{"alt_text":"Credits: www.Pixabay.com","src":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/11\/Best-Practice.jpg?fit=1200%2C900&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/11\/Best-Practice.jpg?fit=1200%2C900&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/11\/Best-Practice.jpg?fit=1200%2C900&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/11\/Best-Practice.jpg?fit=1200%2C900&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/11\/Best-Practice.jpg?fit=1200%2C900&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":1159,"url":"https:\/\/www.techandtrain.com\/blog\/2023\/11\/performance-tuning-in-liferay-part-3\/","url_meta":{"origin":1125,"position":2},"title":"Performance Tuning in Liferay &#8211; Part 3","author":"Neil Harwani","date":"November 7, 2023","format":false,"excerpt":"You will find the part 1 & 2 of this series on Performance Tuning in Liferay here: Performance tuning in Liferay - Part 1 | LinkedIn Performance tuning in Liferay - Part 2 | LinkedIn Further to above, find below some tips on Performance Tuning as part 3 of the\u2026","rel":"","context":"In &quot;Liferay&quot;","block_context":{"text":"Liferay","link":"https:\/\/www.techandtrain.com\/blog\/category\/liferay\/"},"img":{"alt_text":"Credits: www.Pixabay.com","src":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/09\/Ferrari.jpg?fit=1200%2C821&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/09\/Ferrari.jpg?fit=1200%2C821&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/09\/Ferrari.jpg?fit=1200%2C821&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/09\/Ferrari.jpg?fit=1200%2C821&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/09\/Ferrari.jpg?fit=1200%2C821&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":1296,"url":"https:\/\/www.techandtrain.com\/blog\/2024\/08\/how-to-tame-the-seo-beast-with-liferay-part-1\/","url_meta":{"origin":1125,"position":3},"title":"How to tame the SEO beast with Liferay? Part 1.","author":"Neil Harwani","date":"August 28, 2024","format":false,"excerpt":"Here are some keywords and concepts to explore: 1. Performance tuning - https:\/\/www.linkedin.com\/pulse\/performance-tuning-liferay-part-3-neil-harwani-nsoof\/ 2. Performance options for pages & search in built in Liferay - -> https:\/\/learn.liferay.com\/w\/dxp\/using-search\/search-pages-and-widgets\/search-insights --> https:\/\/learn.liferay.com\/w\/dxp\/content-authoring-and-management\/page-performance-and-accessibility\/analyze-seo-and-accessibility-on-pages --> https:\/\/learn.liferay.com\/w\/dxp\/content-authoring-and-management\/page-performance-and-accessibility\/about-the-page-audit-tool 3. SEO features in Liferay --> https:\/\/learn.liferay.com\/w\/dxp\/site-building\/optimizing-sites --> https:\/\/learn.liferay.com\/w\/dxp\/site-building\/displaying-content\/using-display-page-templates\/configuring-seo-and-open-graph 4. Set up your own monitoring (simple JMeter is a\u2026","rel":"","context":"In &quot;Liferay&quot;","block_context":{"text":"Liferay","link":"https:\/\/www.techandtrain.com\/blog\/category\/liferay\/"},"img":{"alt_text":"Credit: www.Pixabay.com","src":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2024\/08\/Ocean.jpg?fit=1200%2C800&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2024\/08\/Ocean.jpg?fit=1200%2C800&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2024\/08\/Ocean.jpg?fit=1200%2C800&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2024\/08\/Ocean.jpg?fit=1200%2C800&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2024\/08\/Ocean.jpg?fit=1200%2C800&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":1370,"url":"https:\/\/www.techandtrain.com\/blog\/2024\/11\/performance-tuning-in-liferay-part-4\/","url_meta":{"origin":1125,"position":4},"title":"Performance Tuning in Liferay &#8211; Part 4","author":"Neil Harwani","date":"November 11, 2024","format":false,"excerpt":"In addition to 3-part series on performance tuning given here below are additional points to explore for performance tuning in Liferay. Java 17\/21 Network and subnet between Application server, Web server, Elastic search, Database Difference between JMeter and JVM\/Glowroot load times for pages Lighthouse reports Elastic search response times and\u2026","rel":"","context":"In &quot;Liferay&quot;","block_context":{"text":"Liferay","link":"https:\/\/www.techandtrain.com\/blog\/category\/liferay\/"},"img":{"alt_text":"Credits: www.Pixabay.com","src":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2024\/11\/Ferrari.jpeg?fit=1052%2C720&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2024\/11\/Ferrari.jpeg?fit=1052%2C720&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2024\/11\/Ferrari.jpeg?fit=1052%2C720&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2024\/11\/Ferrari.jpeg?fit=1052%2C720&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2024\/11\/Ferrari.jpeg?fit=1052%2C720&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":1084,"url":"https:\/\/www.techandtrain.com\/blog\/2023\/07\/liferay-clustering-part-1\/","url_meta":{"origin":1125,"position":5},"title":"Liferay clustering &#8211; Part 1","author":"Neil Harwani","date":"July 2, 2023","format":false,"excerpt":"Notes on Liferay clustering: Clustering for High Availability - Liferay Learn\u00a0- Main page for clustering Here is what\u2019s required to create an effectively functional DXP cluster: 1. Liferay DXP\u00a0installed\u00a0on separate application server nodes. 2. A\u00a0database or database cluster\u00a0that\u2019s accessible to all nodes 3. A\u00a0File Store\u00a0that\u2019s accessible to all nodes 4.\u2026","rel":"","context":"In &quot;Liferay&quot;","block_context":{"text":"Liferay","link":"https:\/\/www.techandtrain.com\/blog\/category\/liferay\/"},"img":{"alt_text":"Credit: www.Pixabay.com","src":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/07\/laptop-1478822_1280.jpg?fit=1200%2C800&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/07\/laptop-1478822_1280.jpg?fit=1200%2C800&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/07\/laptop-1478822_1280.jpg?fit=1200%2C800&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/07\/laptop-1478822_1280.jpg?fit=1200%2C800&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.techandtrain.com\/blog\/wp-content\/uploads\/2023\/07\/laptop-1478822_1280.jpg?fit=1200%2C800&ssl=1&resize=1050%2C600 3x"},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.techandtrain.com\/blog\/wp-json\/wp\/v2\/posts\/1125","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.techandtrain.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.techandtrain.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.techandtrain.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.techandtrain.com\/blog\/wp-json\/wp\/v2\/comments?post=1125"}],"version-history":[{"count":1,"href":"https:\/\/www.techandtrain.com\/blog\/wp-json\/wp\/v2\/posts\/1125\/revisions"}],"predecessor-version":[{"id":1127,"href":"https:\/\/www.techandtrain.com\/blog\/wp-json\/wp\/v2\/posts\/1125\/revisions\/1127"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.techandtrain.com\/blog\/wp-json\/wp\/v2\/media\/1126"}],"wp:attachment":[{"href":"https:\/\/www.techandtrain.com\/blog\/wp-json\/wp\/v2\/media?parent=1125"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.techandtrain.com\/blog\/wp-json\/wp\/v2\/categories?post=1125"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.techandtrain.com\/blog\/wp-json\/wp\/v2\/tags?post=1125"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}