Archive by Author

The Strategic Importance of Built-In Performance Toolset in Golang

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

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

Application Performance Tools Before and After DevOps

Traditional split of responsibilities between application development and its operation in production assumes application performance related efforts are a developers business. At the same time application availability and uptime are managed by operations teams. Different tools for application development and production operations This role split has also implicitly changed the way which profiling and monitoring […]

Read More Comments Off on Application Performance Tools Before and After DevOps

Continuous, Low-Overhead Production Profiling

The importance of performance profiling Profiling tools are critical part of application development and operations. Problems, such as memory leaks or high CPU load may make applications, which were developed during months, unusable in minutes. Such problems are very hard to localize and fix without special tools, such as profilers. The problem with on-demand profiling […]

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 not exception. To trace database call performance in Go, legacy tracing mechanisms should be added around each query or call, which will decrease readability of the code. This mechanism is also […]

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 CPU speed increase became noticeable as we’ve approached quantum sizes for transistors, where things behave differently, e.g. tunnelling effect kicks in. There is enough written on this topic already. While alternatives to a silicon chip are under active research, the uncertainty remains, at least for now. […]

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

Monitoring Errors and Panics in Go

Every error, exception or crash in production application can directly affect customer experience. To improve application quality errors and crashes should be continuously detected and eliminated. To efficiently do so, the following insights are necessary: The stack traces of the errors and crashes. Without this information localizing the root cause may be extremely difficult. Number […]

Read More Comments Off on Monitoring Errors and Panics in Go

Measure Go Code Segment Performance and Detect Bottlenecks

StackImpact automatically covers many aspects of application performance measurement. These include 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 […]

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 with 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, which results in performance issues or deadlocks. This is not different in Go. In some cases, e.g. some 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 […]

Read More Comments Off on Detecting Lock Contention in Go

Monitoring CPU Hot Spots in Production Go Applications

Identifying CPU hots spots with line-of-code precision is critical when it comes to troubleshooting performance issues, identifying performance bottlenecks or improving response for better customer experience. Go pprof toolset has powerful tools for CPU profiling and visualizing different aspects of profiles. It is very useful at development stage. However, profiling CPU usage on production environments […]

Read More Comments Off on Monitoring CPU Hot Spots in Production Go Applications