I started implementing a GO application using qpid electron. There is one connection used to receive messages (at-least-once). It works nicely with low memory consumption, multiple links and multiple go routines, 50 bytes payload, up to 3000 msg/s
But as soon as the application starts sending messages (to reply over the same connection) memory consumption is continuously growing up to 2GB where I stopped.
Even if electron does not leave many options for wrong usage there might be an issue in the application.
So I tried the qpid electron example "https://github.com/apache/qpid-proton/blob/master/go/examples/electron/send.go", the same issue.
To reproduce it:
- use the sample program, I just added connection options for SASL PLAIN
- let it send 100000 messages or more to one destination
- windows 10 pro
- go1.10.2 windows/amd64
- qpid 0.24.0-rc1
- go files and lib build from same git repository clone and branch
- visual studio 2015, release build, no errors
- Broker: Solace VMR 22.214.171.1249 with different durable queues as source and target
I tried also qpid proton 0.23.0 earlier, but saw the same problem.
I tried SendAsync and SendSync, both in 10-50 go routines in parallel.Finally, with SendForget my worker routines were soon blocked and did not come back.
- relates to
PROTON-1907 [electron/go] Memory leak seen when AtLeastOnce is used