deal uncached prepare qps

This commit is contained in:
hebo
2019-09-24 22:40:17 +08:00
parent 92e592ed73
commit a9f0ee309e
6 changed files with 159 additions and 89 deletions

View File

@@ -1 +1,3 @@
package capture
package capture
const checkCount = 30

View File

@@ -106,20 +106,22 @@ func (nc *networkCard) Listen() (receiver chan model.QueryPiece) {
// Listen get a connection.
func (nc *networkCard) listenNormal() {
go func() {
aliveCounter := 0
handler := initEthernetHandlerFromPacpgo()
for {
var data []byte
data, ci, err := handler.ZeroCopyReadPacketData()
if err != nil {
log.Error(err.Error())
time.Sleep(time.Second*3)
continue
}
var ci gopacket.CaptureInfo
var err error
// capture packets according to a certain probability
capturePacketRate := communicator.GetTCPCapturePacketRate()
if capturePacketRate <= 0 {
time.Sleep(time.Second*3)
time.Sleep(time.Second*1)
aliveCounter += 1
if aliveCounter >= checkCount {
aliveCounter = 0
nc.receiver <- model.NewBaseQueryPiece(localIPAddr, nc.listenPort, capturePacketRate)
}
continue
} else if 0 < capturePacketRate && capturePacketRate < 1.0 {
@@ -130,6 +132,14 @@ func (nc *networkCard) listenNormal() {
}
}
aliveCounter = 0
data, ci, err = handler.ZeroCopyReadPacketData()
if err != nil {
log.Error(err.Error())
time.Sleep(time.Second*3)
continue
}
packet := gopacket.NewPacket(data, layers.LayerTypeEthernet, gopacket.NoCopy)
m := packet.Metadata()
m.CaptureInfo = ci