我在从套接字读取时遇到问题。有星号实例运行大量呼叫(一分钟 10-60 次),我正在尝试读取和处理与这些呼叫(连接到 AMI)相关的 CDR 事件。这是我正在使用的库(不是我的,但由于错误而被推到 fork)https://github.com/warik/gami它非常简单,主要操作在 gami.go - readDispatcher 中。buf := make([]byte, _READ_BUF) // read buffer for { rc, err := (*a.conn).Read(buf)所以,有 TCPConn (a.conn) 和大小为 1024 的缓冲区,我正在从套接字读取消息。到目前为止一切顺利,但最终,有时(此时间可能会从 10 分钟到 5 小时不等,与通过套接字传入的数据量无关)读取操作失败并出现 io.EOF 错误。我试图立即重新连接并重新登录,但这也是不可能的 - 连接超时,所以我被迫等待大约 40-60 秒,这次对我来说非常重要,我因为延迟丢失了很多数据. 我在谷歌上搜索、阅读资料并尝试了很多东西——什么都没有。最奇怪的是,在python或php中打开的那个简单的socket并没有失败。由于缺少文件描述符来表示我的机器或星号服务器上的套接字,是否可能出现问题?星号配置中是否有可能出现这个问题(因为我有另一个星号,这个问题不会重现,而且,我对最后一个的调用时间减少了)?在我处理套接字连接或一般情况下,是否有可能出现这个问题?转到版本 go1.2.1 linux/amd64
2 回答
- 2 回答
- 0 关注
- 997 浏览
添加回答
举报
0/150
提交
取消