[Mono-dev] HttpListener stops accepting requests
Greg Young
gregoryyoung1 at gmail.com
Wed Mar 2 15:05:07 UTC 2016
I have to research a bit more and get a local build of mono building
but there are definitely some places here:
https://github.com/mono/mono/blob/master/mcs/class/System/System.Net/EndPointListener.cs#L85
That can break the async loop causing the entire lsitener to stop
accepting requests until its restarted.
Cheers,
Greg
On Wed, Mar 2, 2016 at 4:58 PM, Greg Young <gregoryyoung1 at gmail.com> wrote:
> We have found a situation where HttpListener on mono (reproduced in
> linux/OSX) will permanently stop accepting requests.
>
> The issue involves ulimit. Basically if you get a connection flood
> greater than ulimit the server will stop accepting all requests until
> it is restarted.
>
> After the connection flood you can see the connections were all
> properly killed (I won't put all the ones that were there during the
> flood!):
>
> greg at clown:~$ lsof -p 16651
> lsof: WARNING: can't stat() tracefs file system /sys/kernel/debug/tracing
> Output information may be incomplete.
> COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
> eventstor 16651 greg cwd DIR 8,2 4096 2105316
> /home/greg/Downloads/EventStore-OSS-Ubuntu-14.04-v3.5.0
> eventstor 16651 greg rtd DIR 8,2 4096 2 /
> eventstor 16651 greg txt REG 8,2 37443029 2105361
> /home/greg/Downloads/EventStore-OSS-Ubuntu-14.04-v3.5.0/eventstored
> eventstor 16651 greg mem REG 8,2 92504 12849525
> /lib/x86_64-linux-gnu/libgcc_s.so.1
> eventstor 16651 greg mem REG 8,2 51736 12845148
> /lib/x86_64-linux-gnu/libnss_files-2.21.so
> eventstor 16651 greg mem REG 8,2 47616 12845159
> /lib/x86_64-linux-gnu/libnss_nis-2.21.so
> eventstor 16651 greg mem REG 8,2 97224 12845153
> /lib/x86_64-linux-gnu/libnsl-2.21.so
> eventstor 16651 greg mem REG 8,2 35688 12845149
> /lib/x86_64-linux-gnu/libnss_compat-2.21.so
> eventstor 16651 greg mem REG 8,2 8464208 9444549
> /usr/lib/locale/locale-archive
> eventstor 16651 greg mem REG 8,2 1869392 12845162
> /lib/x86_64-linux-gnu/libc-2.21.so
> eventstor 16651 greg mem REG 8,2 142080 12845083
> /lib/x86_64-linux-gnu/libpthread-2.21.so
> eventstor 16651 greg mem REG 8,2 14592 12845158
> /lib/x86_64-linux-gnu/libdl-2.21.so
> eventstor 16651 greg mem REG 8,2 31680 12845075
> /lib/x86_64-linux-gnu/librt-2.21.so
> eventstor 16651 greg mem REG 8,2 1084840 12845161
> /lib/x86_64-linux-gnu/libm-2.21.so
> eventstor 16651 greg mem REG 8,2 154376 12845156
> /lib/x86_64-linux-gnu/ld-2.21.so
> eventstor 16651 greg mem REG 0,21 4096 88 /dev/shm/mono.16651
> eventstor 16651 greg 0u CHR 136,1 0t0 4 /dev/pts/1
> eventstor 16651 greg 1u CHR 136,1 0t0 4 /dev/pts/1
> eventstor 16651 greg 2u CHR 136,1 0t0 4 /dev/pts/1
> eventstor 16651 greg 3r 0000 0,11 0 7966 anon_inode
> eventstor 16651 greg 4u REG 8,2 8 2624038
> /home/greg/Downloads/EventStore-OSS-Ubuntu-14.04-v3.5.0/data/writer.chk
> eventstor 16651 greg 5u REG 8,2 8 2624039
> /home/greg/Downloads/EventStore-OSS-Ubuntu-14.04-v3.5.0/data/chaser.chk
> eventstor 16651 greg 6u REG 8,2 8 2624040
> /home/greg/Downloads/EventStore-OSS-Ubuntu-14.04-v3.5.0/data/epoch.chk
> eventstor 16651 greg 7u REG 8,2 8 2624041
> /home/greg/Downloads/EventStore-OSS-Ubuntu-14.04-v3.5.0/data/truncate.chk
> eventstor 16651 greg 8r CHR 1,9 0t0 11 /dev/urandom
> eventstor 16651 greg 9u REG 8,2 268435712 2624042
> /home/greg/Downloads/EventStore-OSS-Ubuntu-14.04-v3.5.0/data/chunk-000000.000000
> eventstor 16651 greg 10r REG 8,2 268435712 2624042
> /home/greg/Downloads/EventStore-OSS-Ubuntu-14.04-v3.5.0/data/chunk-000000.000000
> eventstor 16651 greg 11r REG 8,2 268435712 2624042
> /home/greg/Downloads/EventStore-OSS-Ubuntu-14.04-v3.5.0/data/chunk-000000.000000
> eventstor 16651 greg 12r REG 8,2 268435712 2624042
> /home/greg/Downloads/EventStore-OSS-Ubuntu-14.04-v3.5.0/data/chunk-000000.000000
> eventstor 16651 greg 13r REG 8,2 268435712 2624042
> /home/greg/Downloads/EventStore-OSS-Ubuntu-14.04-v3.5.0/data/chunk-000000.000000
> eventstor 16651 greg 14r REG 8,2 268435712 2624042
> /home/greg/Downloads/EventStore-OSS-Ubuntu-14.04-v3.5.0/data/chunk-000000.000000
> eventstor 16651 greg 15u IPv4 279150 0t0 TCP
> localhost:1113 (LISTEN)
> eventstor 16651 greg 16u 0000 0,11 0 7966 anon_inode
> eventstor 16651 greg 17u IPv4 278173 0t0 TCP
> localhost:2113 (LISTEN)
>
>
> My guess is that the too many files kills the asynchronous loop around
> the accept in the httplistener code and will take a look there.
> Perhaps someone else has some ideas.
>
> Cheers,
>
> Greg
>
> --
> Studying for the Turing test
--
Studying for the Turing test
More information about the Mono-devel-list
mailing list