【发布时间】: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