【发布时间】:2009-06-22 18:48:39
【问题描述】:
在构建此 Web 服务和调用它的应用程序时,我们注意到每天对 Web 服务的第一次调用非常慢。它甚至会在某些日子超时。然而,在那之后的每一个电话都很好。任何人都可以阐明为什么会这样以及我们如何摆脱这种痛苦吗?
提前致谢!
【问题讨论】:
-
你知道什么时候事情会变慢吗?客户端是否打开了与服务的连接?服务获得数据库连接了吗?
标签: web-services timeout
在构建此 Web 服务和调用它的应用程序时,我们注意到每天对 Web 服务的第一次调用非常慢。它甚至会在某些日子超时。然而,在那之后的每一个电话都很好。任何人都可以阐明为什么会这样以及我们如何摆脱这种痛苦吗?
提前致谢!
【问题讨论】:
标签: web-services timeout
如果是 ASP.NET Web 服务,则可能是 CLR 第一次初始化、加载和验证程序集。你可以考虑pre-compilation
【讨论】:
同意缓存、初始化等方面的其他答案。就解决方法而言,一种可能性可能是设置某种日常任务(SQL Server 作业、Windows 服务,还是其他?)来模拟命中每天提供服务,这样您的用户就不会遇到第一次缓慢的请求。
【讨论】:
如果它是 ASP.NET Web 服务,那么您可能需要检查运行 Web 服务的应用程序池的设置,尤其是在 IIS7 中默认为 20 分钟的空闲超时。
即使它不是 ASP.NET Web 服务,其他 Web 服务器也将具有相同的配置设置,您必须对其进行调整才能让您的 Web 服务在一夜之间保持活跃。
【讨论】:
你能在你的数据库上复制同样的行为吗?可能只是数据库需要优化第一次运行的查询(也许参数是今天的日期?)。
【讨论】:
Global.asax 类中有很多静态构造函数或设置代码吗?由于 IIS 会定期回收工作进程,因此启动代码可能会再次运行。
【讨论】:
优化的规则是:不要猜测。进行分析以准确找出慢的地方,然后努力使其更快。已经发布的所有内容都提供了关于从哪里开始寻找缓慢的绝佳提示。
【讨论】: