RSS feed for this section

Archive | Performance profiling

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

Measuring HTTP Handlers in Go

StackImpact’s profiling agent automatically and continuously profiles Golang applications’ CPU usage, memory allocations, network wait and other hot spots without requiring any special tracing mechanisms. The profiles are regularly reported to the Dashboard for historical performance analysis. The agent only needs to be initialized once when the program starts. Automatic profiling also covers HTTP request […]

Read More Comments Off on Measuring HTTP Handlers in Go

The Strategic Importance of Built-In Performance Toolset in Golang

Go programming language Go is a relatively new open source programming language created by Google. Considering its recent growth, many developers and organizations have naturally become interested in it. With its main features, such as compiled-language performance, powerful and simple concurrency model and cross-compilation support, it can be considered as a true cloud language. A […]

Read More Comments Off on The Strategic Importance of Built-In Performance Toolset in Golang

Continuous, Low-Overhead Production Profiling

The importance of performance profiling Profiling tools are a critical part of application development and operations. Problems, such as memory leaks or high CPU load, may make applications, developed over the course of serval months, unusable in minutes. Problems like this are very hard to localize and fix without special tools, such as profilers. The […]

Read More Comments Off on Continuous, Low-Overhead Production Profiling

Automatic Database Call Tracing in Go Applications

Some of the most common root causes of performance bottlenecks in web applications are databases. This is true for any language, and Golang is no exception. To trace database call performance in Go, legacy tracing mechanisms should be added around each query or call, which will decrease the readability of the code. This mechanism is […]

Read More Comments Off on Automatic Database Call Tracing in Go Applications

It’s Time for Faster Languages And Optimized Applications

The Moore’s Law is in crisis. The slowdown in the rate at which CPU speed is increasing has became noticeable as we’ve approached quantum sizes for transistors, where things behave differently, e.g. when the tunneling effect kicks in. There is enough written on this topic already. While alternatives to silicon chips are being actively researched, […]

Read More Comments Off on It’s Time for Faster Languages And Optimized Applications

Measure Go Code Segment Performance and Detect Bottlenecks

StackImpact automatically covers many aspects of application performance measurement, including hot spots in CPU usage, memory allocations, I/O, channels and lock contention. It also provides a bottleneck view for HTTP handlers and calls as well as multiple runtime metrics. It is sometimes necessary to measure application specific code performance and trace bottlenecks. For these cases, […]

Read More Comments Off on Measure Go Code Segment Performance and Detect Bottlenecks

Why Monitoring Isn’t Enough for Modern Applications

Monitoring vs. profiling in production Any serious production application is accompanied by monitoring and alerting. If not, the downtime or performance issues will stay unnoticed for longer, which will obviously negatively impact any organization. However, knowing that there is a problem is just one step towards solving it. Solving performance and availability issues requires knowledge […]

Read More Comments Off on Why Monitoring Isn’t Enough for Modern 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