【问题标题】:First call to web service each day is slow每天第一次调用网络服务很慢
【发布时间】:2009-06-22 18:48:39
【问题描述】:

在构建此 Web 服务和调用它的应用程序时,我们注意到每天对 Web 服务的第一次调用非常慢。它甚至会在某些日子超时。然而,在那之后的每一个电话都很好。任何人都可以阐明为什么会这样以及我们如何摆脱这种痛苦吗?

提前致谢!

【问题讨论】:

  • 你知道什么时候事情会变慢吗?客户端是否打开了与服务的连接?服务获得数据库连接了吗?

标签: web-services timeout


【解决方案1】:

如果是 ASP.NET Web 服务,则可能是 CLR 第一次初始化、加载和验证程序集。你可以考虑pre-compilation

【讨论】:

  • 如果您缓存任何数据,您也必须等待该操作。
  • 我该如何测试这个?我怎样才能防止这成为一个问题?
  • 我添加了一个链接,指向有关预编译的信息。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    Configuring IIS7 idle-timeout

    即使它不是 ASP.NET Web 服务,其他 Web 服务器也将具有相同的配置设置,您必须对其进行调整才能让您的 Web 服务在一夜之间保持活跃。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

          优化的规则是:不要猜测。进行分析以准确找出慢的地方,然后努力使其更快。已经发布的所有内容都提供了关于从哪里开始寻找缓慢的绝佳提示。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2016-05-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-05-23
            • 2012-02-17
            • 1970-01-01
            相关资源
            最近更新 更多