hyperledger-archives / aries-cloudagent-loadgenerator Goto Github PK
View Code? Open in Web Editor NEWaries-cloudagent-loadgenerator
Home Page: https://wiki.hyperledger.org/display/aries
License: Apache License 2.0
aries-cloudagent-loadgenerator
Home Page: https://wiki.hyperledger.org/display/aries
License: Apache License 2.0
To further improve the performance of the Issuer/Verifier set up a Postgres cluster.
In order to facilitate performance comparisons and testing of new changes, multiple aca-py versions should be supported, handled by the implementation and selectable by the user (see also #12 ).
Configuration file should allow to define:
To ensure that the load generator does not become a bottleneck, monitor the utilization of the Tomcat threads.
Log the size of the issuer/verifier wallet database to the console.
The generation of a default set of data visualizations via the automated processing of logs data and test results should be implemented and documented
The first Load Generator enforces a maximum rate of parallel iterations. Thereby, the load is automatically reduced if the agent slows down over time. Next, we also want a load generator that schedules iterations at a fixed rate per minute.
OOB Proof Requests do not require a connection to be established beforehand.
Currently, communication between containers from the agent/loadgenerator networks to containers of the dashboard/logging network takes place via localhost
of the host. To avoid this, all docker-compose files should use the same network and reference each other using the container names.
Setup
Iteration
To scale the holder side we switched from one holder to many holders where each holder has its own wallet.
The load is distributed across the holder by the load generator. The initialization procedure for the following test flows still needs to be updated to support multiple holders. Each holder needs to be provisioned individually before starting the load generation.
Scheduled = iterations scheduled by the Periodic Schedular
Started = iterations actually initiated by placing a HTTP Call to an AcaPy
FInished = all the iterations that have been finished
Scheduled and Started differs in case the thread pool responsible for executing the scheduled tasks to start iterations is exhausted as all the threads are currently busy trying to start new iterations.
OOB Credential Issuances do not require a connection to be established beforehand.
Indy, Askar etc.
Implement a test-runner that simulates the tasks of an issuer.
One Iteration:
Log how long the HTTP calls to AcaPy take.
Currently, it looks like the actual bottleneck is the Holder AcaPy instead of the Issuer/Verifier AcaPy. As the Holder is not the one that is being load-tested we need to define a way to scale the Holder side to be able to push the Issuer/Verifier to his limits.
For debugging purposes having a horizontally scaled Isssuer/Verifier setup makes it harder to debug the AcaPy. Therefore, we want a single instance setup that can easily be started via the .env
configuration file
To avoid connection exhaustion:
Currently, we receive many errors via AcaPy Webhook calls. Maybe, just retrying them would allow us to still process them and therefore make the system more reliable and resiliant.
Use either Redis or Kafka to persist the inbound and outbound message queues.
Further, monitor the queue size in Grafana.
Implement three test-runners that only focus on one task each
Using an nginx as a load balancer allows us to scale Holder and Issuer/Verifier AcaPys horizontally. Unfortunately, the current setup is very inflexible as the nginx.conf
lists all the available Holder and Issuer/Verifier AcaPys.
In the future, it should be possible to specify the number of Holder and Issuer/Verifier dynamically via the .env
.
Currently, we do not retry failed HTTP requests to AcaPy. Maybe, retrying them would make the system more resilient and reliable.
Monitor the Issuer/Verifier and Holder Postgres to see if it becomes a bottleneck during the test runs.
Leveraging IzakMarais/reporter the Grafana Dashboard can now be exported as a PDF: f6eba8b
Log the Status Codes of each HTTP request to AcaPy.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.