RSS feed for this section

Archive | pprof

Go Performance Playground

The Go Performance Playground is an online CPU profiler for Golang. It allows developers to quickly measure execution time of the code, profile it to find bottlenecks with line-of-code precision, iteratively optimize algorithms, and more. Underneath, it uses StackImpact’s pprof-based profiler. Go Performance Playground is written in Go and was inspired by the original Go […]

Read More Comments Off on Go Performance Playground

Automatic Performance Profiling in Go Applications

In the previous blog posts we wrote about the importance and problems with production profiling in Go: Continuous, Low-Overhead Production Profiling Profiling Go Applications in Production In this post we’ll explain how complete automation of production profiling is possible and why continuous visibility into production application performance is critical. Automating pprof When pprof is used […]

Read More Comments Off on Automatic Performance Profiling in Go Applications

Detecting Lock Contention in Go

Mutexes are often a source of contention, resulting in performance issues or deadlocks. This is no different in Go. In some cases, e.g. obvious deadlock situations where all goroutines are waiting, the runtime may be able to detect/predict mutex-related issues and panic. Generally, the problems will manifest themselves at the application logic level. Let’s look […]

Read More Comments Off on Detecting Lock Contention in Go

Memory Leak Detection in Production Go Applications

Memory leaks are very common in almost any language, including garbage collected languages. Go is not an exception. A reference to an object, if not properly managed, may be left assigned even if unused. This usually happens on an application logic level, but can also be an issue inside of an imported package. Unfortunately, it […]

Read More Comments Off on Memory Leak Detection in Production Go Applications

Profiling Go Applications in Production

Production environments are different from development and staging. Whether optimizing application performance or trying to find a problem root cause, it is often necessary to use Go’s profiling tools in production. Obviously, before doing anything in production, especially for performance optimizations, it makes sense to try to simulate production load and generate, for example, CPU […]

Read More Comments Off on Profiling Go Applications in Production