Golang 设置ulimit

ulimit 是一个计算机命令,用于shell启动进程所占用的资源。 常用指令

ulimit -a //查看ulimit 设置
ulimit -n //查看ulimit 限制 socket数量
ulimit -n 10000 //设置为10000 仅限当前shell有效

Linux下默认ulimit -n = 1024 MacOS下 = 256

Go携程会打开大量socket,有时会需要设置ulimit -n的值 可以用如下代码

func setUlimit(number uint64) {
  var rLimit syscall.Rlimit
  err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rLimit)
  if err != nil {
    fmt.Println("Error Getting Rlimit ", err)
  }
  // fmt.Println(rLimit)
  rLimit.Max = number * 10
  rLimit.Cur = number
  err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &rLimit)
  if err != nil {
    fmt.Println("Error Setting Rlimit ", err)
  }
  err = syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rLimit)
  if err != nil {
    fmt.Println("Error Getting Rlimit ", err)
  }
  // fmt.Println("Rlimit Final", rLimit)
}

Go 更新到1.19以后默认设置了 用unlimited 来运行当前go程序 已经不需要在单独设置了,低版本Go可以使用上面代码

 

赞 (0)

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址