Oxalis-AS4 icon indicating copy to clipboard operation
Oxalis-AS4 copied to clipboard

Performance issue when sending a series of documents

Open mgu7 opened this issue 5 years ago • 8 comments

During tests of sending series of documents via the AS4 protocol, incomprehensible delays occurred. The first dozen or so documents were sent normally (time about 5 sec per 4kb document), but the next time oscillated to over 300 sec. The transmission of 100 files took 50 minutes in sequential mode and over 55 minutes in multi-threaded mode (maximum 5 threads). For comparison, I conducted a test using the AS2 protocol and the times were 5 minutes (1 thread) and 2.5 min in multi-threaded mode.

I attach files in the analysis of connection times at the TCP level for 4 and 38 seconds of transmission (I can attach a full dump from tcpdump).

Test environment: Debian Linux, Oxalis 4.1.3, AS4 4.1.9, Acceptacce environment (SMK)

as4-04sec.txt as4-38sec.txt

Regards Mieczyslaw Guja

mgu7 avatar Apr 03 '20 08:04 mgu7

Do you send to different APs and do know what software is running on each of these APs?

FrodeBjerkholt avatar Apr 03 '20 08:04 FrodeBjerkholt

The same software on each AP. Previously I have done the test on the same AP with the similar results, but to debug the sessions it was easier to do this on various AP.

mgu7 avatar Apr 03 '20 08:04 mgu7

How do you send the messages? Are you using an implementation based on the Transmitter interface or are you sending using multiple oxalis-standalone senders?

FrodeBjerkholt avatar Apr 03 '20 10:04 FrodeBjerkholt

I have used oxalis-standalone process.

mgu7 avatar Apr 03 '20 10:04 mgu7

To test mulitiple threads you can use a single oxalis-standalone sender using the -repeat argument.

To send 100 instances of the same file, add:

-repeat 100

Please note that the oxalis-standalone sender is not intended to be used in a production environment, because there are quite a lot of initialization being done each time you execute it.

In a production environment you should create a sender application based on the Transmitter interface, so that the initialization is done only at startup. This sender application can for instance have a message queue in a database or use JMS.

FrodeBjerkholt avatar Apr 03 '20 10:04 FrodeBjerkholt

I'm seeing similar issue as the OP using oxalis-standalone, and I have a question regarding transmission time. Our first files where sent with a time of 9sec, but then increased to 60-200 sec

From the debug output I see this returned

Average transmission time was 68934.0ms

Does that really mean transmission time across the wire, or does it involve other activities (initialization)? If it only include actual transmission across the wire, would not that point to a problem at the receiving end?

I would assume initialization time to be more or less the same on each run. We are sending all the files to same AP, so I'm trying to determine if the problem is on our or their side.

Would specifing the url to their AP improve performance by eliminating lookup?

ahaaje avatar Jan 25 '21 18:01 ahaaje

I see there is pull request where the issue #120 mention similar problem with increasing transmission times. Will that PR fix this issue?

ahaaje avatar Apr 22 '21 13:04 ahaaje

@ahaaje : Can you confirm whether you are still facing performance issue?

If you still experiencing performance issue then then in most of case, it may be because of front end infrastructure setup (load balancer, firewall etc), or because of custom plugin implementation for file/database persistence etc. Please measure time taken at each steps and with different AP (using different AP library per say) and try to find out culprit. Please share your finding if it is something related to Oxalis.

Note: This issue will automatically moved to discussion if No response received in week time.

aaron-kumar avatar Oct 21 '22 20:10 aaron-kumar