Here are some steps to troubleshoot and optimize your Joget platform:

  • Environment:
    • Check the JVM heap and permgen memory usage. Is the system out of memory? If so, it's likely there's a memory leak somewhere. You can use VisualVM to check on memory usage and do a heap dump if required. Tuning Tomcat Performance .
    • Perform a thread dump when the system is slow. This gives a snapshot of what is happening at a specific time so you can see what classes and methods are running. With this, you can identify what is hogging system resources. You can use VisualVM for this too.
    • Check on system resources e.g. CPU, RAM, swap usage. Are they taken up by Java, the DB, or other processes?
    • Narrow down the issue. Is it slow all the time for every request, or just for some specific requests? Is it slow immediately even after a restart, or over some time?
    • Upgrade the server hardware with additional DRAM and increase your heap space allocation.
    • Use the Performance Analyzer to identify which part in Userview taken a long time to process.
    • Use the Application Performance Management to analyze.
  • Programming & Database:
    • Review your custom plugins/BeanShells to ensure all resources are properly closed and released.
    • Are you running the database on a separate server from the Joget application server? Reference
    • Do check the database slow logs for a clue to slow queries.
    • Add an index to all your foreign keys in your database tables that are frequently accessed in datalist or JDBC. See https://dzone.com/articles/how-to-optimize-mysql-queries-for-speed-and-perfor
    • Upgrade to the latest database version, as it will come with new security fixes and faster performance.
  • App Design:
    • Do consider placing the "daily use" & "setup/administration" menus into two separate userviews to make the datalist compact and fast. Add a link in each userview to jump from userview1 to userview2 and vice versa.
    • Remove/hide all menu counts where possible. Menu counts in other datalist in the same userview affect performance as it needs to perform a count in other datalist too to populate the menus.
    • Use Sync LDAP User Directory Manager to improve performance retrieving user information in your app.
    • Use the free AJAX Select Box Plugin plugin from Joget Marketplace if you have options fields with large datasets
    • Use Performance Improvement with Userview Caching
    • Use Form Options Caching
    • In your development or staging servers, delete unneeded or unused old versions of the app (that are unpublished). Just maintain 2 copies of the app, the current published version, and one older version.
    • Read Datalist Performance Considerations
  • GIT:
    • Joget v7.0.6 and higher has an option in JAVA_OPT parameter to disable or turn off the Git. This reduces the processing overhead on Joget, by adding -Dgit.disabled=true to your Joget startup script.
    • We do not recommend turning off GIT as you will lose the ability to track changes to the app itself. The benefits of having GIT for app change auditing/traceability outweigh the potential performance gain.
  • Scale up or scale out
    • Consider implementing a Joget Server Clustering using the Joget Large Enterprise Edition (LEE) in a clustered environment for scalability and redundancy.
  • No labels