surging
surging copied to clipboard
首次请求接口性能较差
由于首次访问的时候需要生成动态代理,建立socket连接啥的,所有感觉都会比较慢,如果一个服务的实例部署了多个(比如100个,前100次都会比较慢),给用户的体验就不会很好,有什么办法解决这个问题吗
你可以在模块Initialize的时候做预热加载,如以下代码
public class CommonModule:SystemModule
{
public override void Initialize(CPlatformContainer serviceProvider)
{
//预加载
}
}
预热加载要怎么做?是将所有的接口做一次模拟请求吗?
如果服务需要动态代理远程调用,动态代理先可以预生成,有两种方法 1.第一种,在Packages配置ServiceProxyModule
"Packages": [
{
"TypeName": "EnginePartModule",
"Using": "${UseEngineParts}|DotNettyModule;NLogModule;MessagePackModule;ConsulModule;WSProtocolModule;MqttProtocolModule;EventBusRabbitMQModule;CachingModule;ServiceProxyModule;KestrelHttpModule;"
}
]
第二种,在ServiceHostBuilder构建添加UseProxy()
按群主说的这样,两种都加进去后,没看出有什么效果,第一次请求还是很慢,是否还需要配置其它地方? @fanliang11
预热访问一次接口把!这是.NET Core诟病
需要把ServiceProxyModule添加到Using中,具体代码如下:
"Packages": [
{
"TypeName": "EnginePartModule",
"Using": "${UseEngineParts}|DotNettyModule;NLogModule;MessagePackModule;ConsulModule;HttpProtocolModule;ServiceProxyModule;EventBusRabbitMQModule;"
}
]
CreateProxy也进行了优化,经过测试之前有几ms性能消耗。