diff --git a/common/utils/utils_linux.go b/common/utils/utils_linux.go new file mode 100644 index 0000000..2dcb784 --- /dev/null +++ b/common/utils/utils_linux.go @@ -0,0 +1,25 @@ +// +build linux + +package utils + +import ( + "syscall" + + "github.com/nadoo/glider/common/log" +) + +func InitRLimit() { + var rlim syscall.Rlimit + err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rlim) + if err != nil { + log.F("get rlimit error: " + err.Error()) + return + } + rlim.Cur = 1048576 + rlim.Max = 1048576 + err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &rlim) + if err != nil { + log.F("set rlimit error: " + err.Error()) + return + } +} diff --git a/common/utils/utils_linux_other.go b/common/utils/utils_linux_other.go new file mode 100644 index 0000000..105e9a8 --- /dev/null +++ b/common/utils/utils_linux_other.go @@ -0,0 +1,7 @@ +// +build !linux + +package utils + +func InitRLimit() { + +} diff --git a/main.go b/main.go index 5b1f4ad..06f5e7c 100644 --- a/main.go +++ b/main.go @@ -7,6 +7,7 @@ import ( "syscall" "github.com/nadoo/glider/common/log" + "github.com/nadoo/glider/common/utils" "github.com/nadoo/glider/dns" "github.com/nadoo/glider/ipset" "github.com/nadoo/glider/proxy" @@ -46,6 +47,8 @@ func main() { } } + utils.InitRLimit() + // global rule dialer dialer := rule.NewDialer(conf.rules, strategy.NewDialer(conf.Forward, &conf.StrategyConfig))