[Mono-dev] NancyFX self hosting (HttpListener) locking up on linux

Nikita Tsukanov keks9n at gmail.com
Wed Aug 7 12:00:59 UTC 2013


Ehm. Tried to run NancyFx with HttpListener on mono 2.10.8.1 (from ubuntu
repos) on my desktop machine. No lockups.


2013/8/7 Nikita Tsukanov <keks9n at gmail.com>

> I've rewritten my SCGI server to work with TPL directly instead of using
> async/await to make it run on mono 2.10. Then I've tried to run it with
> mono 2.10.8.1 and mono 3.2 with System.Net.Sockets backend and to hammer it
> with jmeter. 500K requests without any lockups on Mono 2.10, lockup at
> 22164th request on mono 3.2.
>
> Server source code is still on GitHub -
> https://github.com/kekekeks/scgi-sharp
>
>
> 2013/8/7 Greg Young <gregoryyoung1 at gmail.com>
>
>> I believe attaching a debugger changes things like optimizations from
>> occurring (not positive but it does in clr)
>>
>>
>> On Wednesday, August 7, 2013, Nikita Tsukanov wrote:
>>
>>> Huh, it doesn't require debugger to be _attched_, just debugging
>>> subsystem initialized i. e. if I launch this program as a "debugger" it
>>> doesn't lock up.
>>>
>>> public static void Main (string[] args)
>>> {
>>>   int port = 27042;
>>>   if (args.Length != 0)
>>>     port = int.Parse (args [0]);
>>>   while (true)
>>>   {
>>>     var vm = Mono.Debugger.Soft.VirtualMachineManager.Listen (new
>>> IPEndPoint (IPAddress.Loopback, port));
>>>     vm.Resume ();
>>>     vm.Detach ();
>>>   }
>>> }
>>>
>>> I'll use running with --debugger-agent=transport=dt_socket,address=
>>> 127.0.0.1:27042 as a temporary workaround since performance doesn't
>>> degrade a lot.
>>>
>>>
>>> 2013/8/7 Nikita Tsukanov <keks9n at gmail.com>
>>>
>>> I suspect that the problem is actually with thread pool itself. I've
>>> created socket layer implementation using libevent (wrapped with Oars) and
>>> send/recv that utilizes thread pool for cases when it's unable to complete
>>> operation synchronously. It survives longer, but still locks up after a
>>> while. Same behavior with debugger - I'm unable to reproduce the issue when
>>> running under it. I also unable to grab thread stack traces, it prints
>>> "Full thread dump: " and nothing else.
>>>
>>>
>>> 2013/8/7 Greg Young <gregoryyoung1 at gmail.com>
>>>
>>> We will see your test then as it will probably affect us as well
>>>
>>>
>>> On Tuesday, August 6, 2013, Nikita Tsukanov wrote:
>>>
>>> Greg, I've tried running my server with mono compiled from master (with
>>> pull request #703 merged in), still freezes after a while.
>>>
>>>
>>> 2013/8/7 Greg Young <gregoryyoung1 at gmail.com>
>>>
>>> Do you have our pull req? We are stable after (and seriously read
>>> history of this list)
>>>
>>>
>>> On Tuesday, August 6, 2013, Nikita Tsukanov wrote:
>>>
>>> https://github.com/kekekeks/scgi-sharp - here is my SCGI server with
>>> host for NancyFx. If you run Sandbox.exe with --echo-server it will not use
>>> nancy infrastructure and will respond directly. It locks up after several
>>> thousands of requests under jmeter.
>>>
>>> Simple nginx configuration:
>>>
>>> location /
>>> {
>>>    include /etc/nginx/scgi_params;
>>>    scgi_pass 127.0.0.1:10081;
>>> }
>>>
>>> Now I'm looking for alternative socket library to use it as a
>>> replacement for System.Net.Sockets.
>>>
>>>
>>> 2013/8/6 Greg Young <gregoryyoung1 at gmail.com>
>>>
>>> Actually not that surprised we also found out file stream.flush(true)
>>> only works sometimes and ms never back supported it to actually work :)
>>>
>>>
>>> On Tuesday, August 6, 2013, Alfred Hall wrote:
>>>
>>> **
>>> Yeah you're having exactly the same issues as I am. I'm surprised others
>>> haven't had this problem before. Not sure who works on this area of the
>>> mono codebase these days. If you got a minimal test case it may be worth us
>>> raising a Xamarin bug in bugzilla.
>>>
>>> -----Original message-----
>>> *From:* Nikita Tsukanov <keks9n at gmail.com>
>>> *Sent:* Tuesday 6th August 2013 20:18
>>> *To:* mono-devel-list at lists.ximian.com
>>> *Subject:* Re: [Mono-dev] NancyFX self hosting (HttpListener) locking
>>> up on linux
>>>
>>> Running with mono from master haven't helped.
>>>
>>> And I'm not sure what the hell is going on, but I cann't reproduce the
>>> issue when running under... Monodevelop's debugger. It runs perfectly under
>>> it, but when I try to run the same binary from console (even with --debug
>>> option) it locks up or segfaults. Does anyone know what does it mean?
>>>
>>>
>>> 2013/8/6 Nikita Tsukanov <keks9n at gmail.com>
>>>
>>> Great. It locked up with my more complex logic.
>>> Funny fact: NancyFx increases request processing time from 2ms to 70ms
>>> with the same echo response.
>>> Another funny fact: with MONO_DISABLE_AIO I've got segfault.
>>>
>>> Now I'll try to use build patched mono. Not sure that it's the same
>>> issue, because in my case it never tries to read and write simultane
>>>
>>>
>>
>> --
>> Le doute n'est pas une condition agréable, mais la certitude est absurde.
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ximian.com/pipermail/mono-devel-list/attachments/20130807/5c5e2dfb/attachment.html>


More information about the Mono-devel-list mailing list