亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

go語言服務端內存持續增長,求解惑!

go語言服務端內存持續增長,求解惑!

瀟瀟雨雨 2019-04-19 16:11:09
最近用golang開發了一個socket服務端,主要邏輯就是接收客戶端發來的數據解析后存入opentsdb中,但是跑一段時間后發現內存就會增長,而且不會被gc回收,初步判定是由于大量make[]byte導致內存不釋放,代碼如下,求高人解惑?funcStartTCP()error{tcp_addr,_:=net.ResolveTCPAddr("tcp4",tcp_listen)listener,err:=net.ListenTCP("tcp4",tcp_addr)iferr!=nil{returnerr}deferlistener.Close()log.Info("starttcplistenon%s",tcp_listen)for{conn,err:=listener.AcceptTCP()iferr!=nil{log.Error("accepterror%s",err.Error())continue}log.Info("newsessioncreate%s",conn.RemoteAddr().String())goHandlerConn(conn)}}funcReadPacket(conn*net.TCPConn)[]byte{head:=make([]byte,4)_,err:=io.ReadFull(conn,head)iferr!=nil{returnnil}size:=binary.BigEndian.Uint32(head)data:=make([]byte,size)_,err=io.ReadFull(conn,data)iferr!=nil{returnnil}returndata}funcHandlerConn(conn*net.TCPConn){addr:=conn.RemoteAddr().String()deferfunc(){iferr:=conn.Close();err!=nil{log.Error("closesessionerror%s",err.Error())}else{log.Info("sessionclosed%s",addr)}}()for{data:=ReadPacket(conn)iflen(data)==0{log.Warn("emptydata")return}goHandlerMsg(conn,data,t)}}附pprof信息(pprof)top9.92GBof9.93GBtotal(100%)Dropped359nodes(cum
查看完整描述

2 回答

?
守著星空守著你

TA貢獻1799條經驗 獲得超8個贊

后來opentsdb出過一次故障修復后就恢復正常了,內存使用維持在200M上下,pprofheap也穩定在2k左右,而且該現象也無法復現,只能判定是opentsdb的問題而導致內存不釋放了。
                            
查看完整回答
反對 回復 2019-04-19
  • 2 回答
  • 0 關注
  • 802 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號