【问题标题】:ASP.Net WebApi Rest Service - using Task.Factory.StartNewASP.Net WebApi Rest Service - 使用 Task.Factory.StartNew
【发布时间】:2016-09-01 09:42:50
【问题描述】:

我们有一个用 C# 编写的 WebApi json rest 服务,用于在 AWS 中运行的 .Net 4.0。该服务有一个 /log 端点,它接收日志并通过 tcp 将日志转发到 logstash 进行存储。

/log 端点使用 Task.Factory.StartNew 将日志发送到 logstash 异步并立即返回 StatusCode.OK。这是因为我们不想让客户端等待日志发送到logstash。

所有异常都会被观察和处理,我们也不关心日志是否丢失,因为服务不时关闭或回收,因为它们并不重要。

起初,日志的流量非常低,在 peek 时间可能每小时 20 或 30 条。然而,我们最近开始发送大量日志,每小时可能超过一千。所以现在的问题是,通过使用 Task.Factoring.StartNew,我们是在生成大量线程,即每个对 /log 端点的请求 1 个线程,还是由线程池以某种方式管理?

我们使用 nLog 进行内部日志记录,但想知道是否可以将日志从 /log 端点传递到 nlog 以利用其异步批处理功能并将日志发送到 logstash?我们有一个自定义目标,可以将日志发送到 tcp 端口。

提前致谢。

【问题讨论】:

    标签: c# asynchronous asp.net-web-api service


    【解决方案1】:

    .NET 中的任务不等于一个线程。根据需要(几乎)创建任意数量是安全的。 .NET 将管理创建的线程数。 .NET 不会启动超过硬件可以处理的任务。

    【讨论】:

      猜你喜欢
      • 2011-09-30
      • 1970-01-01
      • 2020-09-26
      • 1970-01-01
      • 1970-01-01
      • 2016-10-27
      • 1970-01-01
      • 2012-01-24
      • 1970-01-01
      相关资源
      最近更新 更多