Golang tcp/http 发生 too many open files 解决方法
发布时间:2020-12-16 18:59:07 所属栏目:大数据 来源:网络整理
导读:这是系统资源限制,通常单进程不能超过 1024,我使用cgo来设置,代码如下: package main/*#include stdio.h#include sys/time.h#include sys/resource.hint rlimit_init() { printf("setting rlimitn"); struct rlimit limit; if (getrlimit(RLIMIT_NOFILE
这是系统资源限制,通常单进程不能超过 1024,我使用cgo来设置,代码如下: package main /* #include <stdio.h> #include <sys/time.h> #include <sys/resource.h> int rlimit_init() { printf("setting rlimitn"); struct rlimit limit; if (getrlimit(RLIMIT_NOFILE,&limit) == -1) { printf("getrlimit errorn"); return 1; } limit.rlim_cur = limit.rlim_max = 50000; if (setrlimit(RLIMIT_NOFILE,&limit) == -1) { printf("setrlimit errorn"); return 1; } printf("set limit okn"); return 0; } */ import "C" func main() { C.rlimit_init() } 或者使用 syscall 包
var rlim syscall.Rlimit err := syscall.Getrlimit(syscall.RLIMIT_NOFILE,&rlim) if err != nil { fmt.Println("get rlimit error: " + err.Error()) os.Exit(1) } rlim.Cur = 50000 rlim.Max = 50000 err = syscall.Setrlimit(syscall.RLIMIT_NOFILE,&rlim) if err != nil { fmt.Println("set rlimit error: " + err.Error()) os.Exit(1) } 使用 go build 编译后,需要以 root 权限运行。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |