prosgarz35 commented on PR #3194:
URL: https://github.com/apache/james-project/pull/3194#issuecomment-5787998237

   ### ActiveMQ Artemis Performance Tuning & Latency Profiling Report
   
   ### 1. Comparison: Before vs After Artemis Tuning (5,000 Messages, 16 
Threads)
   
   | Metric | Before Tuning (Default Artemis) | After Tuning (Group Commit & 
Non-Blocking Send) | Improvement |
   |:---|:---:|:---:|:---:|
   | **Throughput (msgs/sec)** | **339.0 msgs/sec** | **1,267.4 msgs/sec** | 
**+273.8% (3.7x faster)** |
   | **Average End-to-End Latency** | **46.80 ms** | **12.16 ms** | **-74.0% 
(3.8x lower)** |
   | **Spool Enqueue Latency (Stage 7)** | **44.75 ms** | **5.79 ms** | 
**-87.1% (7.7x lower)** |
   | **Delivery Success Rate** | 100% (0 errors) | 100% (0 errors) | **100% 
(Zero loss)** |
   | **Data Durability Guarantee** | Fully Persistent | Fully Persistent 
(`syncTx=true`) | **ACID compliant** |
   
   ---
   
   ### 2. Stage-by-Stage Latency Profiling After Tuning
   
   | Pipeline Stage | Subsystem / Description | Avg Latency (ms) | Min (ms) | 
Max (ms) | Share (%) |
   |:---|:---|:---:|:---:|:---:|:---:|
   | **1. Connect & Banner** | TCP 3-way handshake + wait for `220` Greeting 
banner | 0.909 | 0.783 | 257.617 | 7.48% |
   | **2. EHLO Handshake** | Protocol negotiation & capability exchange 
(`EHLO`) | 0.063 | 0.093 | 14.812 | 0.52% |
   | **3. MAIL FROM** | Envelope sender validation & Fast-Fail checks | 0.688 | 
0.051 | 184.351 | 5.66% |
   | **4. RCPT TO** | Recipient existence verification (`ValidRcptHandler` / DB 
lookup) | 4.057 | 0.500 | 273.974 | 33.38% |
   | **5. DATA Initial (354)** | DATA command initiation & buffer setup (wait 
for `354` prompt) | 0.616 | 0.061 | 27.087 | 5.07% |
   | **6. Body Streaming** | Socket stream write (MIME headers + body payload) 
| 0.028 | 0.005 | 4.853 | 0.23% |
   | **7. Spool Enqueue (250 OK)** | **Persistent spool commit with Group 
Commit batching** | **5.795** | **0.679** | **118.096** | **47.67%** |
   | **TOTAL INGRESS TRANSACTION** | **End-to-end SMTP delivery latency (Client 
confirmation)** | **12.155** | — | — | **100.00%** |
   
   ---
   
   ### 3. Key Metric Ranges & Tuning Implementation:
   
   - **Artemis Journal Group Commit / Micro-Batching 
(`conf/activemq.properties`):**
     - `artemis.journal.sync.transactional=true`: Preserves full ACID 
persistence. No messages are acknowledged to the client without disk guarantee.
     - `artemis.journal.buffer.timeout.nio=1500000`: 1.5 ms smart group commit 
window allows parallel threads to coalesce journal syncs into a single combined 
disk operation.
     - `artemis.journal.buffer.size.nio=1048576`: 1 MB NIO journal write buffer.
     - `artemis.client.block.on.durable.send=false`: Non-blocking client send 
transfers synchronization directly to the optimized journal engine.
   - **Latency & Throughput Gains:**
     - `Spool Enqueue` dropped from **44.75 ms** down to **5.79 ms** (minimum 
reached **0.67 ms**).
     - Throughput scaled from **339 msgs/sec** to **1,267.4 msgs/sec** on the 
identical testbed.
   - **Reliability & Queue Draining:**
     - Zero dropped messages across 11,000+ test messages.
     - The background spooler systematically drained all 11,000 messages 
through PostgreSQL metadata and Silo S3 object storage down to a queue size of 
**0**.
     - System `/healthcheck` status remains **`healthy`** across all components.
   
   Not even async - batch mode /group commit.
   Crazy dont it?
   Yeah more feedback i used it well :)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to