我有一个使用Visual Studio 2010在C#.NET 3.5中编写的Web应用程序,它使用Websphere for z / OS公开的Web服务。 Web应用程序托管在Windows Server 2008 64位/ IIS 7上。对WS的第一次调用需要155000 ms才能执行,但服务响应时间不到一秒(在服务器上验证)。随后对WS的调用大约需要45毫秒。在长时间运行期间,工作进程占用所有cpu并分配超过2Gb的内存。当它变得响应时,分配的内存下降到250 Mb,随后的调用,如我所说,大约45 ms。在我的工作站(Windows 7 64位)和Windows Server 2003 32位和IIS 6的服务器上不会发生此问题。我还尝试生成序列化器/反序列化器,但不起作用。有什么想法吗?
答案 0 :(得分:1)
经过很长一段时间,我发现这是一个与64位环境有关的问题,微软知道这个问题。我没有回复微软的解决方案。经过长时间的搜索后,我发现这篇文章XmlSerializer startup HUGE performance loss on 64bit systems说要将此参数添加到web.config:
<configuration>
<system.diagnostics>
<switches>
<add name="XmlSerialization.Compilation" value="4"/>
</switches>
</system.diagnostics>
</configuration>
我测试了这个解决方案,并且将皂流反序列化的时间减少到2秒。还不错。缺点是临时文件被临时文件淹没。 现在的问题是:为什么启用此开关的时间会下降? 还有一些其他开关我可以试试而不保留临时文件吗?