我有一个带有 2 个端点的 WCF 服务,使用在 Azure 中的一个实例上运行的 BasicHttpBinding。当第一次调用服务时,响应需要 13-16 秒(这是意料之中的),后续请求在 150 毫秒到 1000 毫秒之间就足够了,具体取决于请求类型(我正在使用 soapUI 进行测试)。
但是,如果我在几分钟内(少于 4 或 5分钟)没有发送任何请求,则服务实例似乎不会被重用,因为它需要 13 秒以上的第一个请求。
我在我的 ServiceBehavior(s) 中尝试了“InstanceContextMode = InstanceContextMode.Single”,但这并没有解决问题。
在跟踪中,我可以看到只要服务响应缓慢,线程 ID 就会发生变化。
我还记录了从 Application_BeginRequest 被击中到客户端调用方法开始的时间,这似乎是这些“慢”调用期间最大的延迟。我有一些相当大的类代表业务接口,并且正在将实体框架用于在 Azure VM 上运行的 MySQL 数据库。(尽管我认为这不一定是 Azure 问题)。
无论我是调用链接到 DB 操作的复杂消息类型还是只是简单的“Hello World”响应,缓慢的响应都是一样的。
即使需要一个新的服务实例,在IIS 重新启动或应用程序池回收后是否需要与初始加载一样长?
使用静态类的包装器做一些魔术有帮助吗?(我认为不是)。
使用 C# 4.0 / VS2010 Professional 构建