commit
3a555db2d1
|
@ -89,9 +89,9 @@ func outletSetConfig(resp http.ResponseWriter, req *http.Request) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetTCPCapturePacketRate() float64 {
|
func GetTCPCapturePacketRate() float64 {
|
||||||
return catpurePacketRate.tcpTPR
|
return catpurePacketRate.tcpCPR
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetMysqlCapturePacketRate() float64 {
|
func GetMysqlCapturePacketRate() float64 {
|
||||||
return catpurePacketRate.mysqlTPR
|
return catpurePacketRate.mysqlCPR
|
||||||
}
|
}
|
|
@ -12,15 +12,15 @@ type configItem interface {
|
||||||
|
|
||||||
type capturePacketRateConfig struct {
|
type capturePacketRateConfig struct {
|
||||||
name string
|
name string
|
||||||
tcpTPR float64
|
tcpCPR float64
|
||||||
mysqlTPR float64
|
mysqlCPR float64
|
||||||
}
|
}
|
||||||
|
|
||||||
func newCapturePacketRateConfig() (cprc *capturePacketRateConfig) {
|
func newCapturePacketRateConfig() (cprc *capturePacketRateConfig) {
|
||||||
cprc = &capturePacketRateConfig{
|
cprc = &capturePacketRateConfig{
|
||||||
name: CAPTURE_PACKET_RATE,
|
name: CAPTURE_PACKET_RATE,
|
||||||
tcpTPR: 1.0,
|
tcpCPR: 1.0,
|
||||||
mysqlTPR: 1.0,
|
mysqlCPR: 1.0,
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -33,11 +33,11 @@ func (cprc *capturePacketRateConfig) setVal (val interface{}) (err error){
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Printf("set config %s: %v\n", CAPTURE_PACKET_RATE, realVal)
|
fmt.Printf("set config %s: %v\n", CAPTURE_PACKET_RATE, realVal)
|
||||||
cprc.mysqlTPR = realVal
|
cprc.mysqlCPR = realVal
|
||||||
cprc.tcpTPR = math.Sqrt(realVal)
|
cprc.tcpCPR = math.Sqrt(realVal)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cprc *capturePacketRateConfig) getVal () (val interface{}){
|
func (cprc *capturePacketRateConfig) getVal () (val interface{}){
|
||||||
return cprc.mysqlTPR
|
return cprc.mysqlCPR
|
||||||
}
|
}
|
|
@ -28,6 +28,7 @@ func NewCoverRanges() *coverRanges {
|
||||||
return &coverRanges{
|
return &coverRanges{
|
||||||
head: &coverageNode{
|
head: &coverageNode{
|
||||||
begin: -1,
|
begin: -1,
|
||||||
|
end: -1,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,10 +53,9 @@ func (crs *coverRanges) addRange(node *coverageNode) {
|
||||||
node.next = checkRange
|
node.next = checkRange
|
||||||
node = nil
|
node = nil
|
||||||
break
|
break
|
||||||
|
|
||||||
} else {
|
|
||||||
currRange = checkRange
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
currRange = checkRange
|
||||||
}
|
}
|
||||||
|
|
||||||
if node != nil && currRange != nil {
|
if node != nil && currRange != nil {
|
||||||
|
@ -70,7 +70,7 @@ func (crs *coverRanges) mergeRanges() {
|
||||||
currRange := crs.head.next
|
currRange := crs.head.next
|
||||||
for currRange != nil && currRange.next != nil {
|
for currRange != nil && currRange.next != nil {
|
||||||
checkRange := currRange.next
|
checkRange := currRange.next
|
||||||
if currRange.end >= checkRange.begin && currRange.end < checkRange.end {
|
if currRange.begin <= checkRange.begin && currRange.end >= checkRange.begin && currRange.end < checkRange.end {
|
||||||
currRange.end = checkRange.end
|
currRange.end = checkRange.end
|
||||||
currRange.next = checkRange.next
|
currRange.next = checkRange.next
|
||||||
checkRange.Recovery()
|
checkRange.Recovery()
|
||||||
|
@ -81,12 +81,10 @@ func (crs *coverRanges) mergeRanges() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
type coveragePool struct {
|
type coveragePool struct {
|
||||||
queue chan *coverageNode
|
queue chan *coverageNode
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
func NewCoveragePool() (cp *coveragePool) {
|
func NewCoveragePool() (cp *coveragePool) {
|
||||||
return &coveragePool{
|
return &coveragePool{
|
||||||
queue: make(chan *coverageNode, 256),
|
queue: make(chan *coverageNode, 256),
|
||||||
|
|
|
@ -87,7 +87,7 @@ func (ms *MysqlSession) ReceiveTCPPacket(newPkt *model.TCPPacket) {
|
||||||
ms.readFromClient(newPkt.Seq, newPkt.Payload)
|
ms.readFromClient(newPkt.Seq, newPkt.Payload)
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
ms.readFromServer(newPkt.Payload)
|
ms.readFromServer(newPkt.Seq, newPkt.Payload)
|
||||||
qp := ms.GenerateQueryPiece()
|
qp := ms.GenerateQueryPiece()
|
||||||
if qp != nil {
|
if qp != nil {
|
||||||
ms.queryPieceReceiver <- qp
|
ms.queryPieceReceiver <- qp
|
||||||
|
@ -99,7 +99,7 @@ func (ms *MysqlSession) resetBeginTime() {
|
||||||
ms.stmtBeginTime = time.Now().UnixNano() / millSecondUnit
|
ms.stmtBeginTime = time.Now().UnixNano() / millSecondUnit
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ms *MysqlSession) readFromServer(bytes []byte) {
|
func (ms *MysqlSession) readFromServer(respSeq int64, bytes []byte) {
|
||||||
if ms.expectSendSize < 1 && len(bytes) > 4 {
|
if ms.expectSendSize < 1 && len(bytes) > 4 {
|
||||||
ms.expectSendSize = extractMysqlPayloadSize(bytes[:4])
|
ms.expectSendSize = extractMysqlPayloadSize(bytes[:4])
|
||||||
contents := bytes[4:]
|
contents := bytes[4:]
|
||||||
|
@ -107,6 +107,10 @@ func (ms *MysqlSession) readFromServer(bytes []byte) {
|
||||||
ms.prepareInfo.prepareStmtID = bytesToInt(contents[1:5])
|
ms.prepareInfo.prepareStmtID = bytesToInt(contents[1:5])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ms.coverRanges.head.next == nil || ms.coverRanges.head.next.end != respSeq {
|
||||||
|
ms.clear()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ms *MysqlSession) checkFinish() bool {
|
func (ms *MysqlSession) checkFinish() bool {
|
||||||
|
|
Loading…
Reference in New Issue