Open haodiao opened 2 months ago
我运行时候也发现了这个问题,运行一段时间莫名其妙有概率出现一个错误然后终止了,然后我放弃了。
可能应该在Accept里捕捉panic,防止一个连接错误就把服务器搞崩
问题可能出在这里,但是可能不完全是。
都 io.EOF
了还不结束这个Accept程序,写这个程序的也是神人了。
这个错误正常情况下不会出现在TCP连接,一般是TCP连接出问题了(例如连接已关闭、连接已重置)之后,被bufio识别为未知错误,返回 io.EOF
,而这个神人写的程序居然跳过这个错误继续运行,这可能导致了后面的指针溢出,导致产生一个这样的panic,然后整个程序意外终止了。
b, err := peekConn.Peek(3)
if err != nil {
peekConn.Close()
if err != io.EOF {
return nil, err
}
}
另外这个程序这样写,Aceept后续的Conn操作直接全堆到Accept里,理论上这会导致下一个连接迟迟没被Accept,此外每次都会从系统读取证书再解析再返回。
可是用 fasthttp
的应该都是追求极致握手与处理速度的,这导致了严重的性能问题。
我是刚学 go ,但又想弄一个 http + https 同一端口的文件服务器,主要用于内网访问。 但这以下这种写法,运行得起来,刷一下 http 和 https 的访问,就无法切访问了, 报 panic: runtime error: index out of range [0] with length 0 错误,不知道怎么弄了,能帮忙看下吗,非常感谢!