【问题标题】:Amazon SimpleDB high latency on first request首次请求时的 Amazon SimpleDB 高延迟
【发布时间】:2011-02-17 18:32:45
【问题描述】:

我在桌面应用程序(C#、.NET 2.0)中使用 SimpleDB,但遇到了高延迟问题。
我第一次向数据库发出请求(查询、插入值 - 没关系)我只在大约 10-20 秒后得到响应。这只是第一次发生,其余的响应非常快(尚未测量,但肯定在 300 毫秒以下)。
这在我创建数据库客户端时不会发生,只有在我执行第一个请求时才会发生。认证这么慢是正常的吗? (我假设在第一次请求身份验证完成)。

提前致谢。

编辑

当我第一次运行类似

SelectResponse response = dbService_.Select(request);

在输出面板中我得到:

'PhotoExchange.vshost.exe' (Managed (v2.0.50727)): Loaded'C:\Windows\assembly\GAC_MSIL\System.Data.SqlXml\2.0.0.0__b77a5c561934e089\System.Data.SqlXml.dll'
'PhotoExchange.vshost.exe' (Managed (v2.0.50727)): Loaded 'System.Xml.Xsl.CompiledQuery.1'
'PhotoExchange.vshost.exe' (Managed (v2.0.50727)): Loaded 'System.Xml.Xsl.CompiledQuery'
 A first chance exception of type 'System.IO.FileNotFoundException' occurred in mscorlib.dll
'PhotoExchange.vshost.exe' (Managed (v2.0.50727)): Loaded 'rg1d4wjc'  

正常吗? FileNotFoundException 看起来很奇怪。

【问题讨论】:

  • 身份验证发生在每个请求上。
  • 你是对的,它可能是基于 REST 的。那为什么只在第一个请求时这么慢?实在看不懂。
  • @Rangoric:我不确定你的意思......涉及数据库的测试之间要经过多长时间?
  • 您可以标记以中断所有异常 (Ctrl+Alt+E),以便查看 FileNotFound 异常的来源。不过,它可能在框架内,因此您可能需要启用单步执行功能。最后一个是什么,顺便说一句 - 它是从什么生成的?如果您观看输出窗口,是否需要 10-15 秒才能出现?
  • @Rup:它似乎正在尝试寻找一个可以加速 XML 序列化的预编译 DLL。例外是用于检查此 DLL 是否可用的机制。如果不是,那么它会创建一个。它搜索“AWSSDK.XmlSerializers.DLL”,但奇怪的是它也没有创建它。

标签: c# .net amazon-web-services amazon-simpledb


【解决方案1】:

听起来有些事情正在超时,然后默默地故障转移到成功的第二个通道,然后缓存该通道以供后续调用。第一个怀疑? DNS,可能。我会检查您工作站的 TCP/IP 设置,看看您的主 DNS 服务器是否已启动,或者将它们替换为 8.8.8.8 和 8.8.4.4 的 Google's Public DNS

【讨论】:

    【解决方案2】:

    可能是 WebProxy 检测(我假设您使用的 .NET 客户端只是 Web 服务的包装器)。

    查看您是否可以禁用/取消服务包装器正在使用的 WebClient 上的 WebProxy 属性。

    【讨论】:

      【解决方案3】:

      您猜测,您是在运行时从 WSDL 动态构建服务客户端 - 尽管我不确定它应该花费那么多长时间。

      相反,您可以通过在 Visual Studio 中添加 Web 服务引用或使用 svcutil.exe(等效的命令行实用程序)提前将其构建到您的项目中。

      【讨论】:

      【解决方案4】:

      .NET 进行Just in time (JIT) 编译(在第一次运行时编译代码),第一次迭代总是有速度损失(10-20 秒似乎很大)。

      我从来没有使用过它们,但是有像 ngen 这样的工具可以让你预先编译代码。

      在我不能让第一次迭代变慢的应用程序中,我通常通过让“虚拟”数据在我的关键路径中运行来初始化应用程序。

      问题可能还有其他原因,但我会对此进行调查。

      希望对你有帮助

      【讨论】:

        【解决方案5】:

        我的 Windows/.NET 安装可能有问题。 我从 SDK 中提取了一个样本,对其进行了编译(甚至使用了 NGEN),并在第一次请求时得到了大约 30 秒的延迟。我将相同的可执行文件复制到虚拟机,延迟为 5 秒。还是挺大的,不过可以接受。

        【讨论】:

          猜你喜欢
          • 2013-06-23
          • 1970-01-01
          • 1970-01-01
          • 2023-03-31
          • 2017-10-28
          • 1970-01-01
          • 2013-01-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多