2013-03-05 126 views
4

我在我的WebAPI Self Hosted應用程序中拋出了一些負載測試,並發現Ninject的緩存修剪使應用程序停頓了幾秒鐘(剖析在截圖中加載)。Ninject WebAPI.SelfHost性能問題在負載下(每幾秒鐘幾秒)

如何避免發生緩存修剪失速請求?

我所做的是設置HttpSelfHostConfiguration.DependencyResolver =新NinjectDependencyResolver(新StandardKernel())(配置略)

有沒有辦法在請求結束刪除對象?

UPDATE:

從這裏,https://github.com/ninject/ninject/issues/37,似乎期待的對象在請求結束時刪除,只能預期Ninject.Web和Ninject.Web.MVC

UPDATE /注:

我一直在使用NuGet包Ninject.Web.WebApi-RC,與AttributeRouting.WebApi.Hosted一起。

enter image description here

UPDATE

我更新的範圍和分解的定義,現在我發現我有一個坑......我現在只是對返回一個字符串常量的操作測試。

enter image description here

回答

1

使用https://nuget.org/packages/Ninject.Web.WebApi.Selfhost

下面是一個例子,如何使用它: https://github.com/ninject/Ninject.Web.WebApi/tree/master/src/Ninject.Web.WebApi.Selfhost

它排除對象InRequestScope在請求結束。

+0

謝謝 - 這(https://github.com/remogloor/Ninject.Web.WebApi/tree/master/src/Ninject.Web.WebApi.Selfhost)是我真正在尋找的地方。這是WebApi特有的東西的主要動機,處理對象? – ccook 2013-03-05 23:27:47

+1

剛剛看到熱門路徑是激活緩存。所以這可能不會解決這個問題。給我一個更新如何與這個版本。沒有移除對象不是主要動機。主要動機是在MVC和WebAPI – 2013-03-05 23:37:49

+0

中使用Ninject同樣的方式切換包,並且遵循套件中的示例自主應用程序。但我目前'卡住'一個錯誤:未找到方法:'System.Web.Http.Services.DefaultServices System.Web.Http.HttpConfiguration.get_Services()'。仍在挖掘儘管... – ccook 2013-03-05 23:50:50