<div dir="ltr">I'm gonna close this issue. I mainly opened it to ask about whether that would help a lot but I can see from you said it won't since you're already pooling. The evhttp-sharp implementation does use native calls though it uses evhttp from libevent but the author says the main bottleneck at this point is that its single threaded in case you want something to compare against.<div>

<br></div><div>Regards</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Apr 8, 2014 at 12:03 PM, xplicit <span dir="ltr"><<a href="mailto:svg@ngs.ru" target="_blank">svg@ngs.ru</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">From my point of view the bollteneck currently is not in the socket library,<br>
but in the System.Web implementation. For example, when I did benchmarks for<br>
HyperFastCgi server, I've got such results:<br>
Get static file from nginx - 10K rps<br>
Get hardcoded html-response from HyperFastCgi server (without passing http<br>
request to mono web.server) - ~5K rps.<br>
Yes, it's double-time drop in performance, but I think that's mostly because<br>
static file is cached inside nginx, while using fastcgi requires additional<br>
layer of communication throught sockets.<br>
<br>
Then when I added mono web server to the nginx-fastcgi chain performance<br>
dropped to 1.5-2K rps depending on the requests were served. I'm pretty<br>
sure, if you remove all sockets references from web server and will emulate<br>
HTTP requests directly to System.Web you won't get incredible improvement of<br>
performance, it will still be slow. However, I might be wrong, all<br>
performance assumptions must be measured, because sometimes you'll get<br>
results is not what you expect.<br>
<br>
But what I saw:<br>
System.Web uses very slow implementation of System.Configuration. For every<br>
request path not in cache it tries to find web.config and read some basic<br>
stuff (globalization, authentication, etc). šSimple making globalization<br>
<<a href="https://github.com/xplicit/mono/commit/081596b827cfcd8f8eed212c58f8869d600ac3e6" target="_blank">https://github.com/xplicit/mono/commit/081596b827cfcd8f8eed212c58f8869d600ac3e6</a>><br>
to be read only once now gives me 20-30% performance boost. (NB: I don't<br>
know what's changed with mono or my system, but when I did this several<br>
month ago, it was only about 5% addition in performance). That's why<br>
HttpListener will be faster it does not need to handle all of these<br>
settings.<br>
<br>
Some terrible using of sessions cache in System.Web. I wrote a little about<br>
issues with caching here<br>
<a href="http://forcedtoadmin.blogspot.ru/2013/12/unexpected-unloading-of-mono-web.html" target="_blank">http://forcedtoadmin.blogspot.ru/2013/12/unexpected-unloading-of-mono-web.html</a><br>
<<a href="http://forcedtoadmin.blogspot.ru/2013/12/unexpected-unloading-of-mono-web.html" target="_blank">http://forcedtoadmin.blogspot.ru/2013/12/unexpected-unloading-of-mono-web.html</a>><br>
. When mono web tries to reload itself and recompile <a href="http://ASP.NET" target="_blank">ASP.NET</a> the pages it<br>
again drops the performance.<br>
<br>
Some performance issues due to no-caching http handlers.<br>
Using of slow hashcodes for headers dictionary after security patch.<br>
<br>
And so on. Every thing of these produce a little drop which become an<br>
avalanche and wash away good performance from the web.<br>
<br>
Finally. To be sure, what is most slow part, it should be created few<br>
benchmarks.<br>
1. Sockets benchmarks. Pure multi-threaded application, which returns some<br>
test data. One application must be written on c#, other must be native.<br>
Difference in measurement will show is C# socket implementation slow or not.<br>
2. System.Web benchmarks. Create two apps: one is a simulator of web<br>
requests to System.Web, other - pure application, which also simulates<br>
requests to some pretty simple HTTP responder.<br>
<br>
<br>
<br>
--<br>
View this message in context: <a href="http://mono.1490590.n4.nabble.com/FastCGI-Performance-tp4662454p4662480.html" target="_blank">http://mono.1490590.n4.nabble.com/FastCGI-Performance-tp4662454p4662480.html</a><br>
Sent from the Mono - Dev mailing list archive at Nabble.com.<br>
_______________________________________________<br>
Mono-devel-list mailing list<br>
<a href="mailto:Mono-devel-list@lists.ximian.com">Mono-devel-list@lists.ximian.com</a><br>
<a href="http://lists.ximian.com/mailman/listinfo/mono-devel-list" target="_blank">http://lists.ximian.com/mailman/listinfo/mono-devel-list</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>Giuliano Barberi
</div>