From d0562d66aa9a1b97630ff82a0d7aca5abd053036 Mon Sep 17 00:00:00 2001 From: hebo Date: Mon, 2 Dec 2019 17:16:35 +0800 Subject: [PATCH 1/2] change pcap handler --- capture/network.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/capture/network.go b/capture/network.go index a9b2424..dff3cb2 100644 --- a/capture/network.go +++ b/capture/network.go @@ -78,6 +78,7 @@ func initEthernetHandlerFromPacpgo() (handler *pcapgo.EthernetHandle) { return } +// in online use, we found a strange bug: pcap cost 100% core CPU and memory increase along func initEthernetHandlerFromPacp() (handler *pcap.Handle) { handler, err := pcap.OpenLive(DeviceName, 65536, false, pcap.BlockForever) if err != nil { @@ -101,7 +102,7 @@ func (nc *networkCard) Listen() (receiver chan model.QueryPiece) { func (nc *networkCard) listenNormal() { go func() { aliveCounter := 0 - handler := initEthernetHandlerFromPacp() + handler := initEthernetHandlerFromPacpgo() for { var data []byte From 3125c2f6d518feb61b07331b8b63912de5ae4b50 Mon Sep 17 00:00:00 2001 From: hebo Date: Mon, 2 Dec 2019 17:17:30 +0800 Subject: [PATCH 2/2] change pcap handler --- capture/network.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/capture/network.go b/capture/network.go index dff3cb2..d3521ec 100644 --- a/capture/network.go +++ b/capture/network.go @@ -128,8 +128,8 @@ func (nc *networkCard) listenNormal() { continue } - // packet := gopacket.NewPacket(data, layers.LayerTypeEthernet, gopacket.NoCopy) - packet := gopacket.NewPacket(data, handler.LinkType(), gopacket.NoCopy) + packet := gopacket.NewPacket(data, layers.LayerTypeEthernet, gopacket.NoCopy) + // packet := gopacket.NewPacket(data, handler.LinkType(), gopacket.NoCopy) m := packet.Metadata() m.CaptureInfo = ci