RLIMIT参数
RLIMIT_CORE core文件的最大尺寸,如果为0说明不能创建core文件
RLIMIT_CPU CPU时间的最大值(单位:秒)
GOTRACEBACK配置
GOTRACEBACK=none 只输出panic异常信息
GOTRACEBACK=single 只输出被认为引发panic异常的那个goroutine的相关信息
GOTRACEBACK=all 输出所有goroutines的相关信息,除去与go runtime相关的stack frames.
GOTRACEBACK=system 输出所有goroutines的相关信息,包括与go runtime相关的stack frames,从而得知哪些goroutine是go runtime启动运行的
GOTRACEBACK=crash 与system的唯一区别是crash会生成coredump文件
RLIMIT代码实现
package main
import (
"fmt"
"syscall"
)
func main() {
var rlimit syscall.Rlimit
// 限制cpu个数
rlimit.Cur = 1
rlimit.Max = 2
syscall.Setrlimit(syscall.RLIMIT_CPU, &rlimit)
err := syscall.Getrlimit(syscall.RLIMIT_CPU, &rlimit)
if err != nil {
panic(err)
}
rlimit.Cur = 100 //以字节为单位
rlimit.Max = rlimit.Cur + 1024
err := syscall.Setrlimit(syscall.RLIMIT_CORE, &rlimit)
err := syscall.Getrlimit(syscall.RLIMIT_CORE, &rlimit)
if err != nil {
panic(err)
}
}