Ron*_*dau 16 .net c# stream httplistener
删除了旧问题并完全重写,因为我已经在这方面做了很多工作来查明问题.我的问题是我正在编写一个带有自定义服务器的自定义CMS,以非常高的速度/吞吐量为目标,但是我注意到某些数据或数据模式会导致严重的减速(从0到55 + ms响应)时间).我真的需要一个比我更好的帮助,因为我对发生的事情一无所知,我怀疑.net框架中的一个错误,但我不知道它可能在哪里,一点点.net代码浏览我没有建议输出Stream做任何数据特定的事情
我测试过的东西肯定不是问题所在:
如何重现问题:
我的结果:
任何帮助都非常感谢,把我所有的代表放在Bounty上,因为我真的需要知道我是否沿着这条路走下去/得到更多信息来报告这个或者如果我走低层并做我自己的http.sys互操作(并且,大多数总之,如果bug只在.net端或更低级别上,那么更低级别将无法修复它!)
示例文件是一个gziped数组,我的内容预先缓存并在db中预压缩,因此这代表了我需要发送的数据.
https://www.dropbox.com/s/ao63d7din939new/StackOverFlowSlowServerBug.zip
编辑:如果我有小提琴打开,有问题的测试回到0毫秒,我不知道该怎么做它到目前为止这意味着我正在得到一个主要的减速,当发送一些数据,这是没有定义的数据类型,但实际数据,如果我之间有小提琴,这不会发生.我很丢失!
编辑2:用另一个浏览器测试只是为了确定,实际上它在IE上回到0ms所以我假设它可能实际上不是HttpListener错误而是Firefox错误,我将编辑我的问题和标签,如果没有一个建议不然.如果是这种情况,任何人都知道我应该在哪里查看FF的代码来理解这个问题?(它肯定是一个问题,即使在他们一边,因为我再次比较2个文件,一个比另一个大,相同的文件格式,最大的一个总是需要0ms,最小的一个总是55ms!)
两个请求问题:
铬合金:
火狐浏览器:
更多相关内容:
http://forums.mozillazine.org/viewtopic.php?t=341179
https://bugzilla.mozilla.org/show_bug.cgi?id=583351
IE:
如果您通过 fiddler 发送请求,则永远不会收到两个请求。
性能问题:
首先,您的演示应用程序中的计时器存在问题。每次异步请求处理程序触发时,它都会重新启动,这意味着为请求 A 启动的计时器将在收到请求 B 时(可能在请求 A 完成之前)重新启动,因此您将无法获得正确的值。相反,在ContinueWith回调中创建秒表。
其次,我看不出“magicnumber”会真正影响性能(除非它导致抛出异常,我猜)。导致性能下降的唯一方法是发出大量并发请求并导致等待锁不断被命中。
总结:我不认为 HttpListener 类有问题
| 归档时间: |
|
| 查看次数: |
961 次 |
| 最近记录: |