微信公众号 - 获取最新文章

pyroscope: 一个简单易用的持续剖析平台

开发人员常常需要跟踪生产环境中的应用程序的性能瓶颈,并试图找出造成瓶颈的根本原因。要做到这一点,他们通常会通过日志来收集这些信息。不幸的是,这种方法可能会很耗时,而且无法提供有关潜在问题的足够详细的信息。

一种现代且更先进的方法是应用和使用profiling技术和工具,突出显示最慢的应用程序代码和消耗大部分资源(如CPU和内存)的方法。持续分析(Continuous profiling)是在生产环境中持续 收集应用程序性能数据,并将这些数据提供给开发人员进行深入分析的过程。

通过,我们通过采集程序的指标,生成一个概要文件(Profile)进行单次的分析。Go语言提供了pprof工具,可以很方便的生成profile文件。你可以通过程序调用runtime/pprof生成CPU、Heap等概要文件,也可以使用net/http/pprof集成到web应用程序中,通过go tool pprof工具在命令行或者web页面中进行分析。

有时候,我们不能及时的进行pprof分析,故障可能消失了或者程序已经crash了。另外我们可能需要不同时段的profile进行对比,进行比较才能发现问题,比如内存泄露的问题。这个时候持续分析(continuous profiling)就很重要了。很多云服务厂商都提供持续分析的功能,比如Go Continuous Profiler | DatadogCloud Profiler | Google CloudAmazon CodeGuru Profiler等。

阅读全文

编写可维护的Go代码

编写可维护的代码是最基本的要求。清晰度、可读性和简单性都是保持代码可维护性的各个方面。它应该使某人加入您的项目或在有人离开后维护代码的过程变得容易。可维护性的衡量指标是代码更改的容易程度以及与这些更改引起的风险性。为了有效地编写Go程序,了解Go语言的属性和地道写法,并使用与命名、程序构建、格式等相关既定约定是至关重要。

以下是一些有助于编写可维护的Go代码的良好实践。

原文: Writing maintainable Go code by Jogendra.

阅读全文

[译] go fuzzing

Go fuzzing(模糊测试)是Go 1.18发布的另一个非常重要的特性,因为Go泛型已经把大家的目光都吸引过去了,导致go fuzzing这个特性有些人还不是太了解。Go官方发布了一个文档,介绍了Go Fuzzing技术。
Go Fuzzing

阅读全文