Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Overview

While profiling a FOLIO instance running Juniper release, we found out that it is using Mark and Sweep Garbage Collection phases but were not sure which Garbage Collection algorithm it was using. We created

Jira Legacy
serverSystem Jira
columnIdsissuekey,summary,issuetype,created,updated,duedate,assignee,reporter,priority,status,resolution
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId01505d01-b853-3c2e-90f1-ee9b165564fc
keyPERF-201
 - POC to investigate Garbage Collection in FOLIO modules

Requirements

  • Improve JMeter scripts creation process
  • Automate manual steps

Approach & Design

There are 2 approaches:

(A) Record HTTP(S) requests using Apache JMeter HTTP(S) Test Script Recorder as documented

https://jmeter.apache.org/usermanual/jmeter_proxy_step_by_step.html

 Pros:

  • Easy to follow as it is already documented
  • Works fine for HTTP websites as it does not require SSL Certificate

Cons:

  • There are multiple steps to follow and could get lost if you miss anything
  • Manually open up a port for JMeter and update network proxy in browser settings/preferences - once you update network proxy settings, requests to outside network will stop working unless you revert to default proxy settings
  • For HTTPS websites, have to manually install SSL Certificate in browser
  • We have to manual set URL Patterns to exclude being captured by JMeter script
  • It captures a lot of redundant files such as HTML, gif, banners, images, config files
  • Need FOLIO UI modules installed 

(B) Use open-source Blazemeter Chrome plugin

The plugin can be downloaded from https://chrome.google.com/webstore/detail/blazemeter-the-continuous/mbopgmdnpcbohhpnfglgohlbhfongabi/related

You will have to sign up to start using it. Sign-up is free.

...


Investigations

Use -Xlog:gc flag to enable logging when a module loads up. For example, we used mod-data-export to experiment. It was using openjdk-11. 

Observations:

  1. Running mod-data-export locally on my laptop
java -jar -Xlog:gc=debug:file=gc.log target/mod-data-export-fat.jar

Image Added

JVM automatically selected G1 Garbage Collector. G1 (Garbage First) Garbage Collector is designed for applications running on multi-processor machines with large memory space. 


     2. Running mod-data-export in AWS ECS

Image Added

JVM automatically selected Serial Garbage Collection. The Serial algorithm uses a single thread to do Garbage Collection. When JVM runs Garbage Collection, Java applications pause for few milliseconds.

Start recording: execute the workflow

...