HttpListener:根据内容写入输出流速度慢?

 岳述穗__ 发布于 2023-02-13 16:34

删除了旧问题并完全重写,因为我已经在这方面做了很多工作来查明问题.我的问题是我正在编写一个带有自定义服务器的自定义CMS,以非常高的速度/吞吐量为目标,但是我注意到某些数据或数据模式会导致严重的减速(从0到55 + ms响应)时间).我真的需要一个比我更好的帮助,因为我对发生的事情一无所知,我怀疑.net框架中的一个错误,但我不知道它可能在哪里,一点点.net代码浏览我没有建议输出Stream做任何数据特定的事情

我测试过的东西肯定不是问题所在:

内容的大小(更大的内容更快)

内容的类型(相同内容类型之间的差异)

大多数周围的代码(做了一个简单的项目来重现bug,站在大约15行,找到帖子底部的链接,包括重现它的数据,运行它,用2个URL测试,自己看看).

不是网页/缓存等问题,在Firefox中使用单个图像和CTRL + F5重现问题,删除图像的最后几个字节会在100%的时间内修复它,将它们添加回来会再次导致问题

不是输出流之外存在的问题(用目标内存流替换它不会显示问题)

如何重现问题:

下载并运行该项目

使用您最喜欢的浏览器并转到localhost:8080/magicnumber

用你想要的东西替换那个url中的magicnumber,你将收到的图像减去那个字节数

我的结果:

该图像恒定50ms左右

将幻数提高到1000并不会对此产生任何影响

更进一步(我认为大概是1080 ish?)它突然下降到0MS

不知道发生了什么,但似乎每个请求至少有两个请求,至少在Firefox中使用CTRL + F5时,正确的情况下都是0ms,在错误的情况下,第一个仍然是0ms,但另一个变为50ms,我是假设第一个只是检查文件缓存是否正常我还在回答但是Firefox关闭连接还是什么?

任何帮助都非常感谢,把我所有的代表放在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!)

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有