docker 下的 .Net 应用程序:将日志写入与托管系统共享的文件时出现显着延迟
.Net app under docker: significant delay in writing logs to the file shared with hosting system
我们有 .net 应用程序,它在 Nlog 记录器的帮助下将日志写入文件源,日志一直在记录,每秒记录一次。如果你 运行 它在 Windows 上,没有 dockers,一切正常:日志记录立即出现在文件中,但部署在我们的 Linux [=19] 集群下=]s 将数据闪存到与我们的主机系统共享的文件中需要几分钟到几小时。我可以在数据库中看到数据,表明app 运行 成功,但是日志文件暂时没有改变。对 dockers 的经验很少,不确定它可能是由什么引起的,甚至不知道在哪里看。我找到了如下所示的 yaml 文件:
mount -v -t cifs //10.153.1.61/apps/configs/stage/testApp/logs
/logs/ -o credentials=/smb/smbcredentials;
因为它在没有 docker 的情况下工作正常,我相信我们创建图像和部署 dockers 的方式有问题。非常感谢任何关于将调查指向何处的想法。
我认为您看到速度缓慢是因为您试图通过 CIFS 网络共享写入日志,这会产生大量开销。您应该考虑使用其中一种常用的分布式日志处理解决方案,例如 gray log, ELK or Splunk(https://www.splunk.com/)
看起来 NLog 有一个 lot of integrations to choose from. There are very detailed step by step tutorials 可以用来详细解释这个过程。
使用集中式日志收集不仅可以加快速度,还可以让您查询/合并来自多个容器的日志,并构建图表/仪表板,让您更深入地了解系统的当前状态。
我们有 .net 应用程序,它在 Nlog 记录器的帮助下将日志写入文件源,日志一直在记录,每秒记录一次。如果你 运行 它在 Windows 上,没有 dockers,一切正常:日志记录立即出现在文件中,但部署在我们的 Linux [=19] 集群下=]s 将数据闪存到与我们的主机系统共享的文件中需要几分钟到几小时。我可以在数据库中看到数据,表明app 运行 成功,但是日志文件暂时没有改变。对 dockers 的经验很少,不确定它可能是由什么引起的,甚至不知道在哪里看。我找到了如下所示的 yaml 文件:
mount -v -t cifs //10.153.1.61/apps/configs/stage/testApp/logs
/logs/ -o credentials=/smb/smbcredentials;
因为它在没有 docker 的情况下工作正常,我相信我们创建图像和部署 dockers 的方式有问题。非常感谢任何关于将调查指向何处的想法。
我认为您看到速度缓慢是因为您试图通过 CIFS 网络共享写入日志,这会产生大量开销。您应该考虑使用其中一种常用的分布式日志处理解决方案,例如 gray log, ELK or Splunk(https://www.splunk.com/)
看起来 NLog 有一个 lot of integrations to choose from. There are very detailed step by step tutorials 可以用来详细解释这个过程。
使用集中式日志收集不仅可以加快速度,还可以让您查询/合并来自多个容器的日志,并构建图表/仪表板,让您更深入地了解系统的当前状态。