EDIFACT Order Export workflow report 3 [Morning Glory]
Infrastructure
PTF -environment
- 10 m6i.2xlarge EC2 instances
- 2 instances of db.r6.xlarge database instances, one reader and one writer
- MSK
- 4 m5.2xlarge brokers in 2 zones
- auto.create-topics.enable = true
- log.retention.minutes=120
- Kafka topics
- .data-export.job.command - 50 partitions
- data-export.job.update - 50 partitions
# | Modules | Version | Task Definition Revision | Running Tasks | CPU | Memory (Hard Limit) | MemoryReservation (Soft Limit) | maxMetaspaceSize | Xmx |
---|---|---|---|---|---|---|---|---|---|
1 | mod-inventory-storage | 24.1.0 | 10 | 2 | 1024 | 2208 | 1952 | 512m | 1440m |
2 | okapi | 4.14.2 | 3 | 3 | 1024 | 1684 | 1440 | 512m | 922m |
3 | mod-invoice-storage | 3 | 2 | 1024 | 1872 | 1536 | 512m | 1024m | |
4 | mod-orders | 12.4.3 | 5 | 2 | 1024 | 2048 | 1440 | 512m | 896m |
5 | mod-agreements | 5.2.2 | 5 | 2 | 128 | 1592 | 1488 | 512m | 968m |
6 | mod-data-export-worker | 1.4.10 | 22 | 2 | 1024 | 3072 | 2800 | 612m | 2128m |
7 | mod-data-export-spring | 1.4.5 | 6 | 1 | 256 | 2048 | 1844 | 512m | 1292m |
8 | mod-notes | 3.1.2 | 3 | 2 | 128 | 1024 | 896 | 128m | 768m |
9 | mod-orders-storage | 13.3.3 | 4 | 2 | 128 | 1024 | 896 | 128m | 768m |
10 | mod-inventory | 18.2.2 | 4 | 2 | 1024 | 2880 | 2592 | 512m | 1814m |
11 | mod-users | 18.3.0 | 7 | 2 | 258 | 1024 | 896 | 128m | 768m |
Summary
- The safe limit is 8-10 jobs with 1000 orders per organization
- A few jobs failed with FTP error: Connection refused. However it doesn’t looks like it's the matter of FTP server. We did observe same behavior previously with 3-4 parallel job, and it was fixed by giving mod-data-export-worker more memory from -XX:MetaspaceSize=384m -XX:MaxMetaspaceSize=512m -Xmx1536m to XX:MetaspaceSize=384m -XX:MaxMetaspaceSize=612m -Xmx1836m
. At the same moment we can't see significant resource usage on FTP server side either. - The percentage of success is highly depended on the number of orders. The more orders there are the higher chance of completing all jobs successfully.
- The upper safe limit for EDIFACT is 10 jobs with 1000 - 4000 orders per job.
- Most of the tests were run one after another and no memory leak was found.
Test Results
Test # | Concurrent Jobs | Orders Per Job | Success rate | Time | |
---|---|---|---|---|---|
1 | 10 | 100 | 6/10 | ±10 sec | Failed login to FTP (FtpException) Socket closed (SocketException) |
2 | 10 | 500 | 8/10 | 55-57 sec | |
3 | 10 | 1000 | 7/10 | 3 min | Failed login to FTP (FtpException) Socket closed (SocketException) |
4 | 10 | 1000 | 9/10 | 2 min 17 s | Connection refused (Connection refused) (ConnectException) |
5 | 10 | 1000 | 8/10 | 2 min 48 s | Connection refused (Connection refused) (ConnectException) File upload failed. 450 PASV: data transfer in progress (FtpException) |
6 | 10 | 2000 | 10/10 | ±5 min | |
7 | 10 | 4000 | 10/10 | 9-10 min | |
8 | 10 | 6000 | 8/10 | 16 min | Connection closed without indication. (FTPConnectionClosedException) Connection is not open (IOException) |
Resources usage
Most used modules (CPU)
- mod-configurations - Up to 430% CPU usage on big amount of orders
- nod-orders-storage - Up to 300% CPU usage on big amount of orders
- All the rest like mod-data-export-worker, mod-data-export-spring, mod-orders, mod-organisations, mod-organisations storage has CPU usage less than 70%
FTP server CPU usage
t2.micro
Here you can see that CPU usage on FTP server usually below 5%. To track RAM usage we'll need to establish additional monitoring.