MavoCz / smscsim

SMPP SMSC simulator which uses cloudhopper SMPP library.
Other
41 stars 27 forks source link

Deliver Receipts do not scale #2

Open krasa opened 9 years ago

krasa commented 9 years ago

While I was able to send +10000 MT/s via 40 transmitters, only ~1500 DR/s was coming back through 40 receivers. A lot of time was spent waiting on java.util.concurrent.DelayQueue

imho every SmscSmppSessionHandler should have its own DelayedRequestSenderImpl

I will provide a pull request if you want.

MavoCz commented 9 years ago

I never did any performance testing as I was sending low amounts of messages. The delayed request sender is shared among all sessions because in real scenario the delivery receipt could be sent using different connection (not sure if this is valid point in this scenario). I will have a look at this and will let you know.

krasa commented 9 years ago

So I tried to implement it https://github.com/MavoCz/smscsim/compare/master...krasa:dr

Benchmark using 100 receivers and 100 transmitters: old: 23 000 MT/s, 750 DR/s new: 12 000 MT/s, 12 000 DR/s - the throughput is probably limited by my CPU now

MavoCz commented 9 years ago

Thanks for that Vojta! That is a lot of code. I will try to get to it during weekend. What did you use to benchmark the simulator?

krasa commented 9 years ago

a lot of it is just code formatting :)

I used a little bit extended com.cloudhopper.smpp.demo.PerformanceClientMain, I will try to push it during weekend :)

krasa commented 9 years ago

https://github.com/krasa/cloudhopper-smpp/blob/perftest-netty4/src/test/java/com/cloudhopper/smpp/demo/perftest/PerformanceClientMain2.java