Skip to content

End To End Working

nitinka edited this page Apr 21, 2013 · 18 revisions

Here we will cover how loader-server orchestrates the complete performance run across various loader-agents and monitoring agents.

1. EnQueue Performance run Request : when client raises a peformance run request, loader-server/jobs http end point simply put the Performance Run request in an in-memory Queue Structure. Client is returned a Job ID = UUID.

2. DeQueue Performance Run Request - Job Dispatch : A Daemon thread constantly looks for "Queued Jobs**". When ever this daemon threads finds that there are enough free loader-agent available to run the job, it DeQueues the Performance Run request and start the following- subsequent steps.

3. Deploy Platform Libs on Loader Agents : In this step loader-server deploys core platform libraries to loader-agents. Server uses time stamp strategy to figure out if at all libraries need to be deployed on agent or not. Loader server can also be updated with latest platform libraries without restarting it self. In such cases also loader-agents get new core platform libs deployed on them.

4. Deploy User Defined Function (UDF) Libraries on Loader Agents : At a high level a performance workflow is a string of UDFs (java Classes). So it is essential that java libraries containing classes, which are part of performance workflow be deployed on all involved loader-agents before triggering the performance run. Strategy how and when to deploy is similar to what is stated in previous step "Deploy Platform Libs on Loader Agents".

5. Raise Server Side Monitoring Request : Before performance run begins, it is important that we initialize and start collecting server side monitoring stats. Example of stats : cpu, memory, mysql connections, jmx based metrics etc. In this step , loader-server raise requests to monitoring agent to start the monitoring and publish back collected stats to loader-server at fixed periodic interval.

6. Submit Performance Load Profile to Loader agent : loader-server submits the performance load profile/workflow to each loader-agent mentioned in the Performance Run/Schema one by one.

7. Loader Agent Starts Load Generating JVM - LGVM : As soon as loader-agent gets the request from loader-server, it created a JVM using core platform libraries and UDF libraries which essentially generates the load on Application Under Test (AUT).

8. Job Load Stats published to Loader Server : loader-agent publishes performance stats emitted by "Load Generating JVM" back to loader-server in near real time. Loader Agent continues to publish stats as long a LGVM is alive. Stats published back to server contain very simple data like : At what time, which UDF took how much time, how many UDFs failed, passed, skipped and errored

9. Loader Server Crunching Stats : Stats published by loader-agents are raw and not in form to derive much statistics. Loader-Server has daemon threads running which :

  • Computes the raw data coming from agents into interval-ed mean, overall mean, interval-ed throughput, overall throughput, percentiles, standard deviation etc
  • Combines data coming from all agents and generate above stats in combined form.


10. Performance Run Over : When LGVM finishes loader-agent notifies loader-server about it. when loader-server receives this notification from all loader-agents, it mark the Performance Job as "Completed". In addition it also notifies monitoring agent to stop publishing the stats.

Clone this wiki locally