V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
vczyh
V2EX  ›  Linux

如何让 TCP 出现 Accept()错误?

  •  
  •   vczyh · 2022-07-20 15:10:13 +08:00 · 2496 次点击
    这是一个创建于 891 天前的主题,其中的信息可能已经有所发展或是发生改变。
    	ctx := context.Background()
    
    	for {
    		conn, err := l.listener.Accept()
    		if err != nil {
    			// Close() was probably called.
            	// 想要走到这里,执行这行代码
    			connRefuse.Add(1)
    			return
    		}
    
    		acceptTime := time.Now()
    
    		connectionID := l.connectionID
    		l.connectionID++
    
    		connCount.Add(1)
    		connAccept.Add(1)
    
    		go func() {
    			if l.PreHandleFunc != nil {
    				conn, err = l.PreHandleFunc(ctx, conn, connectionID)
    				if err != nil {
    					log.Errorf("mysql_server pre hook: %s", err)
    					return
    				}
    			}
    
    			l.handle(conn, connectionID, acceptTime)
    		}()
    	}
    
    11 条回复    2022-07-25 09:39:36 +08:00
    MoYi123
        1
    MoYi123  
       2022-07-20 15:53:24 +08:00
    如果是需要单元测试, 那么就使用 gomock 等工具
    如果是需要学习, 那么可以看 accept 里的代码.
    pagxir
        2
    pagxir  
       2022-07-20 16:22:46 +08:00 via Android
    ctrl+c 就可以了
    pagxir
        3
    pagxir  
       2022-07-20 16:28:21 +08:00 via Android
    accept 比较容易触发的简单错误是 fd 消耗完,信号中断,连接异常,设置超时,这几个。
    DefoliationM
        4
    DefoliationM  
       2022-07-20 16:39:13 +08:00
    l.listener.Close()
    aladdinding
        5
    aladdinding  
       2022-07-20 16:44:13 +08:00
    too many fd
    danbai
        6
    danbai  
       2022-07-20 17:21:27 +08:00
    修改 tcp 最大连接数
    Crawping
        7
    Crawping  
       2022-07-20 17:54:28 +08:00
    fd 耗尽
    Misakas
        8
    Misakas  
       2022-07-21 11:41:07 +08:00
    歪个楼,有没有朋友能讲一下 fd 是哪两个单词的缩写
    yingqiuQAQ
        9
    yingqiuQAQ  
       2022-07-21 11:42:31 +08:00
    @Misakas 文件描述符 file descriptor
    zizon
        10
    zizon  
       2022-07-21 12:44:45 +08:00
    Accept 方法 override 一下不就完了...
    random return error
    vczyh
        11
    vczyh  
    OP
       2022-07-25 09:39:36 +08:00
    感谢大家的回复,大体意思我明白了,我设置一下最大 fd
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2721 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 12:21 · PVG 20:21 · LAX 04:21 · JFK 07:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.