2022-03-19 12:17:28 +08:00
|
|
|
//go:build darwin
|
2020-07-22 22:18:47 +08:00
|
|
|
// +build darwin
|
|
|
|
|
|
|
|
|
|
package utils
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"syscall"
|
|
|
|
|
)
|
|
|
|
|
|
2022-03-19 12:17:28 +08:00
|
|
|
// SetRLimit set resource limit
|
2020-07-22 22:18:47 +08:00
|
|
|
func SetRLimit(limit uint64) error {
|
2022-03-19 12:17:28 +08:00
|
|
|
var rLimit = &syscall.Rlimit{}
|
2020-07-22 22:18:47 +08:00
|
|
|
err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, rLimit)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if rLimit.Cur < limit {
|
|
|
|
|
rLimit.Cur = limit
|
|
|
|
|
}
|
|
|
|
|
if rLimit.Max < limit {
|
|
|
|
|
rLimit.Max = limit
|
|
|
|
|
}
|
|
|
|
|
return syscall.Setrlimit(syscall.RLIMIT_NOFILE, rLimit)
|
|
|
|
|
}
|
|
|
|
|
|
2022-03-19 12:17:28 +08:00
|
|
|
// SetSuitableRLimit set best resource limit value
|
|
|
|
|
func SetSuitableRLimit() error {
|
|
|
|
|
return SetRLimit(4096 * 100) // 1M=100Files
|
2020-07-22 22:18:47 +08:00
|
|
|
}
|