kitlau
kitlau

kitlau's blog

Performance


为什么我的接口,慢得跟蜗牛一样啊?系列文章目录与导读

"为什么我的接口,慢得跟蜗牛一样啊?"是一个系列文章,旨在解决生产环境中经常遇到的问题。该系列文章将通过多篇文章,介绍如何分析和处理线上问题。第一部分已经完结,主要介绍了如何为应用配置完善的日志、计时、请求追踪和诊断信息,以及如何将日志记录到Seq这种日志中心,轻松进行日志分析。第二部分则着重介绍了OpenTelemetry,这是一个强大的工具,可以帮助我们更可靠、更高效地定位线上问题的根源,分析系统业务问题、性能瓶颈和优化点,以及监控系统运行状态和健康度。这个系列文章的目的是帮助读者提高软件的可靠性和效率,以及快速定位和解决线上问题。那么,你是否已经对如何提高接口速度有了一些新的想法和理解呢?--GPT 4

.NET Performance

为什么我的接口,慢得跟蜗牛一样啊?- 3. Seq 中心化结构化日志服务

本文是“为什么我的接口,慢得跟蜗牛一样啊?”系列文章的第三篇,主要介绍了如何使用 Seq 中心化结构化日志服务进行性能优化。文章首先介绍了 Seq 的特点和优势,包括其轻量级、易于安装和配置、专注于日志的实时记录和查询等。然后,文章详细介绍了如何使用 Docker 运行 Seq,包括如何设置初始密码、如何将主机机器上的数据挂载到容器中的目录等操作。接着,文章介绍了如何使用 Serilog 往 Seq 中记录日志,只需引入 `Serilog.Sinks.Seq` 这个 NuGet 包,然后修改配置文件即可。最后,文章介绍了如何在 Seq 中查看和分析日志,例如如何根据条件查询日志、如何过滤出耗时超过 1000ms 的日志等。通过这些日志,我们可以轻松查到接口慢在哪一步操作上,这样对老板对客户都至少有一个交代,遇到了问题也不用再全都靠猜了。这个系列还没有完结,打算再介绍一点 Tracing 相关的东西。你是否已经开始思考如何使用 Seq 来优化你的接口性能了?--GPT 4

.NET Performance

为什么我的接口,慢得跟蜗牛一样啊?- 2. Serilog 记录计时和诊断日志

这篇博客文章提供了详细的步骤和代码示例,帮助读者理解如何使用Serilog库来记录计时和诊断日志,以优化Web API的性能。文章首先解释了如何使用Serilog来记录和分析操作的耗时,然后介绍了如何记录HttpRequest日志以及如何自定义HttpRequest日志的消息模板。接下来,文章展示了如何记录诊断日志,以便追踪每个用户的请求。最后,文章总结了Serilog的主要功能,并预告了下一篇文章的主题——如何收集多个实例的日志并进行高效的日志分析和诊断。那么,你是否已经准备好优化你的Web API了呢?你会如何利用这些技术来提升你的软件服务水平呢?--GPT 4

.NET Performance

为什么我的接口,慢得跟蜗牛一样啊?- 1. 使用 Serilog 结构化日志

本文详细介绍了如何使用Serilog进行结构化日志记录。首先,我们在ASP.NET Core的Host上配置Serilog,接管默认的日志功能。然后,我们在WeatherForecastController中的接口输出一条日志。此外,我们还了解了如何在应用程序启动阶段或运行时记录日志,即在Program.cs文件中使用Serilog的全局静态Log类记录日志。文章还展示了如何查看结构化日志,我们可以在项目下的logs文件夹中发现记录的日志,日志是JSON格式的结构化日志,包含了用于追踪的必要数据,如ActionId、RequestId、RequestPath等。最后,我们还讨论了将结构化日志记录到文件、文档数据库、关系型数据库或云服务中的方法。那么,如何根据团队的情况和需求选择合适的日志记录方式呢?如何使用流行的服务器进行日志分析呢?这些问题将在后续文章中解答。--GPT 4

.NET Performance

.NET 性能技巧:为什么你应该避免使用终结器 Finalizer?

本篇博客的主题是.NET性能优化技巧,具体探讨了为何应避免使用终结器(Finalizer)。终结器在对象被垃圾回收器回收前执行的代码,用于释放非托管资源,但同时会延迟对象的回收,增加内存占用和垃圾回收时间。博客通过Benchmark测试终结器的性能,结果显示实现终结器的对象创建和释放所需的时间是没有实现终结器的对象的18.86倍,证明了终结器带来的巨大开销。此外,终结器的执行时间不可控,可能导致程序行为不稳定或不可预测,也可能引发内存泄漏。因此,建议尽量避免使用终结器,而选择更可控和更可预测的方式,如使用IDisposable接口或最新的异步资源释放API(IAsyncDisposable)来释放资源。那么,你是否已经意识到终结器可能带来的问题?你会选择哪种方式来释放资源?--GPT 4

.NET Performance

  • 1