Orchestration performance
The following test is done in a somewhat uncontrolled environment and can not be seen as a benchmark test. It might contain errors.
I've done some testing with BizTalk performance the last two days. We had some good and some bad results, but the general feeling that we had in the project was that the performance was less than expected.
So I decided to do some performance testing tonight on my BizTalk Server which is hosted by VirtualPC which is hosted by my 3.2 GHz Pentium 4 with 2GB Memory home computer. The results were odd and unexpected. Here are the results.
Scenario 1: Receive 1 message and send out 1000 messages in a loop
Scenario 2: Receive 1 message and send out 1000 messages in a loop. Mark the orchestration as long-running
Scenario 3: Receive 1 message and call 1000 orchestrations in a loop. Send out 1 message in every called orchestration (so send out 1000 message).
Scenario 4: Receive 1 message and start 1000 orchestration in a loop. Send out 1 message in every started orchestration (so send out 1000 message) and initialize a correlationset. Wait for 1 message to receive (but do not actually receive the message).
Scenario 5: Receive 1 message and start 1000 orchestration in a loop. Send out 1 message in every started orchestration (so send out 1000 message).
Scenario 6: Receive 1 message and send out 1000 messages in a loop. Receive those 1000 messages in separate orchestration (1000 instances) and send out 1000 messages.
Scenario 7: Repeat Scenario 2
Scenario 8: Reboot the virtual machine and repeat Scenario 2
I've cleaned up folders between every run and restarted the BizTalkApplication Host
Here are the numbers:
1) 97 seconds -> 10 messages per second
2) 90 seconds -> 11 messages per second
3) 94 seconds -> 11 messages per second
4) 409 seconds -> 2.5 messages per second
5) 516 seconds -> 1.9 messages per second
6) 1248 seconds -> 0.8 messages per second
7) 379 seconds !! -> 2.6 messages per second
8) 369 seconds !! -> 2.7 messages per second
I didn't expect to see the drop in throughput between scenario 3 and 4, but the figures in 7 and 8 are more frightning if you ask me. All of a sudden the same orchestration takes almost 4 times as long to complete.
The figures at the project are more complex with more orchestrations and messagetypes involved, but I do recognize the same pattern to some extend. It tends to slow down when more message have been processed. It makes me curious into where this curve will go over a longer period of time. Will my BizTalk processes come to a slow stop?
It's 0:30 AM here, when I write this so I won't investigate further now ;-), but I'm very interested in performance figures from others and any clue to what could cause this behaviour.