我在桌面应用程序(C#,.NET 2.0)中使用SimpleDB,并且存在高延迟问题 我第一次向DB发出请求(查询,插入值 - 无关紧要)我只在大约10-20秒后得到响应。这种情况仅在第一次发生时,其余的响应非常快(没有测量,但肯定在300ms以下) 当我创建数据库客户端时,只有在我执行第一个请求时才会发生这种情况。身份验证是否正常缓慢? (我认为在第一次请求身份验证完成时)。
提前致谢。
修改
当我第一次跑步时
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 看起来很奇怪。
答案 0 :(得分:4)
听起来有些东西超时,然后默默地转到成功的第二个频道,然后缓存后续呼叫。首先怀疑? DNS,可能。我检查你的工作站的TCP / IP设置,看看你的主DNS服务器是否启动,或者用Google's Public DNS替换为8.8.8.8和8.8.4.4
答案 1 :(得分:1)
可能是WebProxy检测(我假设您使用的.NET客户端只是Web服务的包装器。)
查看是否可以在服务包装器使用的WebClient上禁用/清空WebProxy属性。
答案 2 :(得分:0)
猜测,你是在运行时从WSDL动态构建服务客户端 - 虽然我不确定它应该那个长。
相反,您可以通过在Visual Studio中添加Web服务引用或使用svcutil.exe(等效的命令行实用程序)来提前将其构建到项目中。
答案 3 :(得分:0)
.NET执行Just in time (JIT)编译(在首次运行时编译代码),在第一次迭代时总是速度惩罚(尽管10-20秒似乎很大)。
我从未使用过它们,但是有像ngen这样的工具可以让你事先编译代码。
在我不能允许第一次迭代变慢的应用程序中,我通常通过在我的关键路径中运行“虚拟”数据来初始化应用程序。
问题可能还有其他原因,但我会对此进行调查。
希望有帮助
答案 4 :(得分:0)
我的Windows / .NET安装可能有问题。 我从SDK中取样,编译它(甚至使用NGEN)并在第一次请求时延迟约30秒。我将相同的可执行文件复制到虚拟机,延迟时间 5秒。还是很大,但这是可以接受的。