2016-09-01 59 views
1

我們有一個用C#編寫的用於在AWS中運行的.Net 4.0的WebApi json rest服務。該服務具有一個/ log端點,它接收日誌並通過tcp將日誌轉發到logstash進行存儲。ASP.Net WebApi Rest服務 - 使用Task.Factory.StartNew

/log端點使用Task.Factory.StartNew將日誌發送到logstash async並立即返回StatusCode.OK。這是因爲我們不希望客戶端等待將日誌發送到logstash。

觀察並處理了所有異常,我們也不關心由於服務關閉或不時重複使用而導致日誌丟失,因爲它們並不重要。

起初,原木流量非常低,在峯值時間可能是20或30個小時。然而,我們最近開始發送大量的日誌,可以超過每小時一千次。所以現在的問題是,通過使用Task.Factoring.StartNew,我們是否會生成大量線程,即對/ log端點的每個請求有1個線程,或者線程池以某種方式進行管理?

我們使用nLog進行內部日誌記錄,但是想知道我們是否可以將日誌從/ log端點傳遞給nlog以利用其異步批處理功能並讓它將日誌發送到logstash?我們有一個自定義的目標將發送日誌到一個TCP端口。

在此先感謝。

回答

0

.NET中的任務不等於一個線程。創建儘可能多的(幾乎)你需要的是安全的。 .NET將管理創建多少個線程。 .NET不會啓動比硬件更多的任務。