github.com/TeaOSLab/EdgeNode@v1.3.8/internal/utils/rlimit_linux.go (about) 1 //go:build linux 2 // +build linux 3 4 package utils 5 6 import ( 7 "syscall" 8 ) 9 10 // SetRLimit set resource limit 11 func SetRLimit(limit uint64) error { 12 var rLimit = &syscall.Rlimit{} 13 err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, rLimit) 14 if err != nil { 15 return err 16 } 17 18 if rLimit.Cur < limit { 19 rLimit.Cur = limit 20 } 21 if rLimit.Max < limit { 22 rLimit.Max = limit 23 } 24 return syscall.Setrlimit(syscall.RLIMIT_NOFILE, rLimit) 25 } 26 27 // SetSuitableRLimit set best resource limit value 28 func SetSuitableRLimit() error { 29 return SetRLimit(4096 * 100) // 1M=100Files 30 }