Comments (11)
This is great! Tons of things to analyse.
- Can you upload the test script to gist.github.com?
- Let's fix on
1000 concurrent users @ 100 users/second
for now. - We need to ensure that each test begins with a clean and consistent state. For example, by removing the database, and populating it fresh every time. Can you write a script for the test? It should roughly do the following:
rm << captcha database files >>
sbt runMain << classNameForPopulatingDB >>
run locust
- Before we analyse the performance, we need to address the failures. For the most common failure, can you raise a separate issue in this repo, with the stack trace and other details included?
from lc-core.
Will be using locust for load testing.
from lc-core.
Looks good. You could simulate a swarm of users that:
- Get a captcha challenge
- Submit a solution for it after 5 to 10 seconds
Let's see how many concurrent uses can do that.
from lc-core.
Load test data for 1000 concurrent users spawning at a rate of 10 users/second.
from lc-core.
Load test data for 1000 concurrent users spawning at a rate of 100 users/second.
from lc-core.
Load test data for 2000 concurrent users spawning at a rate of 10 users/second.
from lc-core.
I also observed this unusual spike in failures for a few Milliseconds when the test starts.
From 17:34:15 to 17:34:30
from lc-core.
Load test data for 1000 concurrent users spawning at a rate of 10 users/second after DB upgrade and DB sync
from lc-core.
Load test data for 1000 concurrent users spawning at a rate of 100 users/second after DB upgrade and DB sync
Note: The majority of failures on /captcha
endpoint are because of the rate limiter. It gives back a 400 error when the limit is reached, as seen in failures.
from lc-core.
Performance results for CRUD app
Config
- OpenJDK 11
- locust 100 users (each user contributes about 31 requests per second)
- Each locust user calls
create
thenincrement
:read
is in the ratio 1 : 8 - Xodus 1.3.232
- h2-1.4.200.jar
- Locust and CRUD server running on the same DO droplet
- application compiled and assembled, then run standalone
ulimit
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 3832
max locked memory (kbytes, -l) 65536
max memory size (kbytes, -m) unlimited
open files (-n) 40000
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 3832
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
RPS
For Xodus, peak RPS is 2150
For H2, peak RPS is 2400
Response times were sub 1ms for both
from lc-core.
After multiple tests, we decided to retain H2 as the database, and added some tweaks to the schema.
from lc-core.
Related Issues (20)
- Config parameters that have defaults should be optional HOT 6
- Consider using jsoniter instead of json4s
- RainDropsCaptcha may return the same code multiple times HOT 15
- Same captcha image returned ten times consecutively under circumstances HOT 8
- `maxAttempts` should be a fraction instead of an absolute number HOT 1
- Dockerfile is broken, does not build
- Update h2
- playgroundEnabled not working in configuration (Docker setup) HOT 3
- Plugin system for captcha providers
- Config option to specify H2 database URL
- Config option to specify maxAttempts for a CAPTCHA HOT 4
- Ability to specify config file HOT 1
- Background thread always generates captchas of a single type
- Set DPI on PNG images
- Output of GifCaptcha is confusing HOT 1
- Crumpled text Captcha
- Hello world style example? HOT 2
- Update H2 DB to 2.0.202 HOT 1
- Passing size in the captcha request doesn't make any difference HOT 9
- captchaExpiryTimeLimit in secs?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from lc-core.