We have a SignalR push server using Mono/Owin on a Linux Debian server.
We perform a load test and we get a different behaviour according to how the push is started on systemd
Working: ExecStart=/bin/su root -c '/usr/bin/mono --server mydaemon.exe -l:/var/run/mydaemon.pid'
Hanging after around 1k connections: ExecStart=/usr/bin/mono --server mydaemon.exe -l:/var/run/mydaemon.pid
We may reproduce the different behaviour anytime: in the second case, the test client stay in SignalR negotiate call, without receiving any answer. We actvated as well the export of the environment varables "max thread" for Mono for both case.
So the question is, what could be the difference in resource system usage/avaliability in these 2 cases?
plimit
to see what resource limits are being applied in each case - it's most likely that there are limits in place for the ordinary user that aren't there for root. – Petesh