gpt4 book ai didi

c# - System.Web.HttpRequest.FillInFormCollection() 和 System.Web.HttpRequest.GetEntireRawContent() 非常慢

转载 作者:可可西里 更新时间:2023-11-01 07:45:58 28 4
gpt4 key购买 nike

我一直在关注我网站的性能,在所有执行缓慢的代码 (>1s) 中,超过 90% 是因为 System.Web.HttpRequest.GetEntireRawContent()(由 System.Web.HttpRequest 调用。 FillInFormCollection())

这对于 ASP.NET 站点是否正常...有时在 FillInFormCollection 方法中花费超过 10 秒(显然它是从 System.Web.UI.Page.PerformPreInit() 调用的)?

或者有办法解决这个问题?

我正在为 .NET Framework 3.5 编译。

页面 我遇到的主要问题是登录页面,尽管它没有任何异常 - 两个文本框、RememberLogin 复选框和登录按钮。 Request.ContentLength 大约为 5KB(我已经记录了 Request.Form.ToString() - 没有发现异常)。我已经执行了大量的跟踪(期待大量的 POST)和调试,但找不到任何合理的理由让 FillInFormCollection 花费超过 10 秒(我曾经有过 250 秒的极端例子)。我什至尝试放慢与 Fiddler 的连接速度,但无法重现该问题。

编辑:感谢大家的评论。我一直在继续研究这个问题……如果它得到解决,至少它会为其他人节省很多时间;)。以下是部分问题的答案。

  1. 它是纯 HTTP(不是 HTTPS),日志中有 0 个错误(有趣的是请求实际上已完成;)
  2. 当用户点击 Login.aspx 时,网站未加载。网站实际上在 99% 的时间里都运行良好(每周处理大约 4000 万个 HTTP 请求,平均 CPU 使用率低于 10%)
  3. 绝对是 application/x-www-form-urlencoded - ASP.NET 表单 (runat=server) 以这种方式提交。我唯一不明白的是为什么 .NET 需要 >10 秒来读取小于 6KB 的 POST。
  4. (到目前为止)我得出的唯一合理结论是 -> 客户访问网站的速度非常慢(remember GPRS?)。但我真的很想探索所有其他选项,而不是仅仅求助于“它是用户连接”。如果是这样的话 - 我希望我会在每个页面上看到用户发生类似的事情。
  5. 只是希望它不是这样的:IIS 6.0 Server Too Busy HTTP 503 Connection_Dropped DefaultAppPool
  6. 被引用到此页面:Identifying Slow HTTP Attack Vulnerabilities on Web Applications这可能正在发生。

最佳答案

这是我发现的问题,或者我应该说是我的应用程序在该方法上表现不佳的原因:System.Web.HttpRequest.FillInFormCollection()

System.Web.HttpRequest.FillInFormCollection() 似乎在开始向表单提交数据时启动,并在收到最后一位数据后完成。如果我的用户连接状况不佳,则可能需要很长时间才能完整提交此信息。因此这种方法需要很长时间。

我在本地机器上使用了带宽限制器,并且能够重现与我测试的不同速度一致的一致结果,连接速度越慢 System.Web.HttpRequest.FillInFormCollection( ) 开始运行。

除非您收到关于您的网站无法正常运行的投诉,否则您可能只是在查看由糟糕连接的用户运行的代码。

关于c# - System.Web.HttpRequest.FillInFormCollection() 和 System.Web.HttpRequest.GetEntireRawContent() 非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8222336/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com