trace-demo

command
v0.0.0-...-a864060 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 29, 2018 License: Apache-2.0 Imports: 4 Imported by: 0

README

使用trace 观察系统go程序性能

参考文章:

https://mp.weixin.qq.com/s/nf_-AH_LeBN3913Pt6CzQQ

package main

import (
	"fmt"
	"os"
	"runtime/trace"
)

func main() {
	f, err := os.Create("trace.out")
	if err != nil {
		panic(err)
	}
	defer f.Close()

	err = trace.Start(f)
	if err != nil {
		panic(err)
	}
	defer trace.Stop()

	fmt.Println("=======以上为模版代码直接使用就好,下面随便写点东西作为测试使用========")

	count := 0
	for i := 0; i < 100; i++ {
		count += i
	}
	fmt.Println(count)
}

运行上面程序后会生成一个trace.out 文件然后使用 go tool trace trace.out就能生成自动打开浏览器查看信息了。

但是发现一个问题:启动GIN 作为web服务后 生成的trace.out 文件是空的。

代码如下:

package main

import (
	"fmt"
	"os"
	"runtime/trace"

	"github.com/gin-gonic/gin"
)

func main() {
	f, err := os.Create("trace.out")
	if err != nil {
		panic(err)
	}
	defer f.Close()

	err = trace.Start(f)
	if err != nil {
		panic(err)
	}
	defer trace.Stop()
	fmt.Println("go tool trace")

	count := 0
	for i := 0; i < 100; i++ {
		count = count + i
	}
	fmt.Println(count)

	r := gin.Default()
	r.GET("/", func(c *gin.Context) {
		c.JSON(200, "success")
	})
	r.Run(":8080")

}

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL