我有一个新的ASP.NET 4 Web API服务套件,分为几个单独的Web应用程序。其中一个Web API服务(“中介”)处理请求并将其传递给其他服务,并传回其响应(使用JSON)。有时它需要响应并将其与一个或多个其他服务的响应合并,将合并的结果发送回客户端。我有一个这样的服务,在分期中,它完美地工作。在生产中,没有那么多。在这种情况下,中介接受客户端请求,将其传递给另一个服务,并且应该只是将响应传递回客户端。如果我直接调用第二个服务,我对测试请求没有任何问题。但是,如果我通过调解员调用它,它就会爆炸,但例外情况是:
"The wait operation timed out", "ExceptionType": "System.ComponentModel.Win32Exception"
响应的大小似乎并不重要--60字节或60 KB。另一部分是一些请求是成功的。差异似乎只是在请求中。如果我将主参数设置为一个值的请求发送,它会恢复正常。如果我将它设置为另一个值,它会超时。它始终如一地执行此操作,但仅适用于调解器服务。辅助服务为每个参数值返回正确的结果集。触发超时的参数值的结果集小于成功的结果集。
所以我真的不明白。例如,HttpClient类中是否存在某些事情,或者在某些其他ASP.NET库中可能会出现这种情况,可能会对我不知道的字符进行验证?我甚至不确定如何进行测试以确保响应“良好”,因为一个服务使用明显扼杀中介服务的相同数据。
答案 0 :(得分:0)
通过向相关生产数据库表添加索引解决了此问题。我们仍然不确定“为什么?”但事实证明,对于特定列名称的查询在生产中花费的时间比在分段中长4倍,表中的数据集非常相似。