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可以使用上面代码
最新评论