加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang program exceeds 10000-thread limit

发布时间:2020-12-16 18:08:08 所属栏目:大数据 来源:网络整理
导读:Go程序出现panic runtime: program exceeds 10000 -thread limitfatal error: thread exhaustion ... goroutine 1120575 [runnable]:syscall.Syscall( 0x1 , 0x3 , 0xc4600fe000 , 0x96 , 0x0 ) /usr/local/go/src/syscall/asm_linux_amd64.s: 18 + 0x5 sysc

Go程序出现panic

runtime: program exceeds 10000-thread limit
fatal error: thread exhaustion

...

goroutine 1120575 [runnable]:
syscall.Syscall(0x1,0x3,0xc4600fe000,0x96,0x0)
    /usr/local/go/src/syscall/asm_linux_amd64.s:18 +0x5
syscall.write(0x3,0x400,0x0,0xc46018da20,0x7)
    /usr/local/go/src/syscall/zsyscall_linux_amd64.go:1064 +0x55
syscall.Write(0x3,0x460422,0xedb6a0,0x1)
    /usr/local/go/src/syscall/syscall_unix.go:181 +0x49
os.(*File).write(0xc4200b4560,0xc46018dab0,0x42974e,0xc400000008)
    /usr/local/go/src/os/file_unix.go:186 +0x6c
os.(*File).Write(0xc4200b4560,0xb45cc6,0xf,0x96)
    /usr/local/go/src/os/file.go:142 +0x7c

...

这个问题是因为golang在执行syscall.Syscall的时候,会创建新的线程,当并发大的时候不断创建线程,导致线程数超过限制。

建议:

  1. 降低系统调用的并发
  2. 使用SetMaxThreads增加线程阀值,但是不建议这样使用

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读