asp.net WCF 服务缓慢...禁用 asp.net 应用程序回收有帮助吗?
-
11-09-2019 - |
题
我有一个 WCF 服务,需要一定的响应时间(1 分钟以内)。
我的问题是,服务经常需要很长时间才能响应(有时超过 2 分钟),最常见的是在早上。
我认为这是因为应用程序已回收并且第一次运行必须重新编译。
还有其他原因可能会发生这种情况吗?
是否可以关闭应用程序回收?如果是的话,会导致任何副作用或不稳定吗?我假设 ASP.NET 应用程序设置为回收肯定有一个原因。
是否还可以采取其他措施来提高首次运行性能?
解决方案
基本上,以下规则规定了应用程序何时被回收或卸载:
- 达到应用程序池回收时间后 - 我认为默认情况下是每 29 小时一次。
- 最后一次请求应用程序后的设定时间。
使用保持活动状态来 ping 服务可以解决 2,然后您只需处理 1。
根据您的 IIS 版本,配置方法略有不同。
我认为空闲超时通常默认为“infinte”,但可以通过配置 processModel 元素(idleTimeout 属性) 您的配置文件。
至于首次运行性能 - 在不查看您的应用程序的情况下很难说,您是否运行过类似的东西 点追踪 或者另一个分析器?
您是否在第一次加载时进行了大量的密集查找和缓存数据?这些可以推迟吗?
其他提示
是可以防止程序池,从回收。另一种选择是创建一个保活工作不断ping该服务,以保持工作进程进入睡眠状态。
性能问题都可以通过你还没有排除任何第一次引起。既然你没有任何排除,它可以被任何东西cauased。
也许一个愚蠢的想法:你可以安排一个控制台应用程序在例如打你服务上午5:30在早上,所以该请求将需要很长的时间来运行,而你的普通用户进来以后不会再有这样的问题?
当然 - 它不处理的根本原因,但就目前而言,这可能是一个有用的解决办法 - 没有
马克
不隶属于 StackOverflow