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  }