Ninject WebAPI.SelfHost在负载下存在性能问题(每隔几秒钟出现几秒钟)

4
我正在对我的WebAPI自托管应用进行一些负载测试,并发现Ninject的缓存修剪会使应用程序停顿几秒钟(在截图下的负载分析中)。
如何避免Cache Pruning阻止请求?
我所做的全部工作就是设置HttpSelfHostConfiguration.DependencyResolver = new NinjectDependencyResolver(new StandardKernel())(省略配置)。
有没有办法在请求结束时删除对象?
更新:
从这里https://github.com/ninject/ninject/issues/37可以看出,只有对于Ninject.Web和Ninject.Web.MVC,才可以期望在请求结束时删除对象。
更新/注意:
我一直在使用Ninject.Web.WebApi-RC nuget包,以及AttributeRouting.WebApi.Hosted。

enter image description here

更新

我已更新作用域和解析器的定义,现在我发现出现了问题... 我现在只是测试一个返回字符串常量的操作。

enter image description here

1个回答

1

1
刚刚看到热路径是激活缓存。所以这可能不会解决问题。告诉我现在使用这个版本的进展如何。而且,删除对象并不是主要动机。主要动机是在MVC和WebAPI中使用Ninject的相同方式。 - Remo Gloor
我切换了包,并且正在按照您的示例自托管应用程序的步骤进行。但是我目前在一个错误上“卡住”了:Method not found: 'System.Web.Http.Services.DefaultServices System.Web.Http.HttpConfiguration.get_Services()'. 不过我仍在继续查找... - ccook
在构建StandardKernel()时,我遇到了上述问题,有什么想法吗?搜索结果指向陈旧的二进制文件? - ccook
在 Ninject.KernelBase..ctor(IComponentContainer components, INinjectSettings settings, INinjectModule[] modules) 中 在 Ninject.KernelBase..ctor(INinjectModule[] modules) 中 在 Ninject.StandardKernel..ctor(INinjectModule[] modules) 中 在 .Bootstrapper.Factory.CreateKernel(String assemblies, String plugins) 中创建内核。 - ccook
我想我必须回滚那个集成。虽然在lib中需要的略旧的二进制文件(4.0.20505 vs 4.0.20710)可以启动自托管,但它会破坏其他库的集成。特别是我们需要定义跨不同程序集的路由的属性路由。 - ccook
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接