The Go language has already gained considerable popularity and is increasingly used to write network services or console utilities. From version to version, the compiler and the performance of the standard library are improved. However, sometimes there is a task to find and speed up the bottleneck, find a lock or explain the delays of the garbage collector. This is what my report is about. We will learn how to write the right benchmarks, use the pprof and execution tracer, look at the runtime debug information, and touch on the advanced debugging features on Linux. I will also talk about some of the existing optimizations of the Go compiler and how not to accidentally turn them off.