我正在从ii6(32位)将C#asp.net asmx web服务转移到Windows 2008和iis7(64位)。我有一个约160毫秒的近似网络方法性能时间。在iis7上,即使在将web方法减少到几乎没有代码执行之后,我现在大约需要320毫秒。我意识到第一次通话有一个编译时间。这个时间是在大约20次通话之后,时间似乎已经稳定下来。
我想将web方法的运行时间从320毫秒减少到200毫秒以下。这是为了帮助处理需要处理多个调用的情况。另一个问题是当我在1秒钟内增加20个呼叫时,其中一个呼叫将花费大约3秒钟。这也是不可取的。
我尝试在发布模式下进行编译,并从web.config中删除了调试编译。 .asmx文件只引用要加载到dll二进制文件中的类。
不同之处在于iis7配置为显示更详细的错误消息以帮助设置。但是,由于这只是在发生错误时,我看不出它如何减慢常规调用速度。
我已经尝试了集成管道模式和经典管道模式,但仍然有类似的时间。我也尝试将默认编译语言设置为C#。我已经尝试检查ping时间以验证它不是网络。从Web服务方法中存在代码的时候开始,IIS就有了一些数据库连接设置,但现在基本没什么,我认为这不应该是一个问题。
答案 0 :(得分:0)
fyi - 问题不在于asmx,iis7,iis6,调试模式或管道模式。新的IIS7 64位服务器以内部IP地址启动,然后逐渐变为公共IP地址。由于网络路由的差异,IP地址产生了不同。 IIS6测试用例基于公共IP。一旦我使用公共IP用于IIS7服务器,时间就相当相似。