2009-06-22 63 views
3

在构建这个web服务和调用它的应用程序时,我们注意到每天第一次调用web服务的速度非常慢。它甚至会在某些日子里超时。但是,之后的每次通话都很好。任何人都可以阐明为什么会这样,以及我们如何摆脱这种痛苦?每天首次给web服务打电话很慢

在此先感谢!

+0

你知道事情正在放缓吗?客户是否打开了与服务的连接?该服务是否获得了数据库连接? – skaffman 2009-06-22 18:54:51

回答

8

如果它是一个ASP.NET Web服务,它可能是CLR初始化并首次加载和验证程序集。你可能要考虑pre-compilation

+0

如果您缓存任何数据,您也必须等待该操作。 – rie819 2009-06-22 18:52:18

1

你可以在你的数据库上复制相同的行为吗?它可能只是数据库需要优化第一次运行的查询(也许参数是今天的日期?)。

0

在Global.asax类中是否有很多静态构造函数或设置代码?由于IIS定期回收工作进程,启动代码可能会再次运行。

3

同意缓存,初始化等方面的其他答案就解决方法而言,一种可能性可能是设置某种日常任务(SQL Server作业,Windows服务,其他的东西?)来模拟一个命中每天提供服务,这样您的用户就不会遇到这个第一个缓慢的请求。

0

优化的规则是:不要猜测。通过分析找出究竟什么是缓慢的,然后努力做到这一点。已发布的所有内容都提供了有关从哪里开始寻找缓慢的极好技巧。

2

如果它是一个ASP.NET Web服务,那么您可能需要检查Web服务正在运行的应用程序池的设置,特别是IIS7中默认为20分钟的空闲超时。

Configuring IIS7 idle-timeout

即使它不是一个ASP.NET Web服务,其他Web服务器会有那么你就需要相当的配置设置,让您的网络服务还活着过夜。