Open rosenlo opened 1 year ago
This issue seems to have been unaddressed for a long time, and I'm not sure if there is still an environment available for investigation.
From your description, this phenomenon seems very strange. Since Redis is a serial protocol, a response should always follow a request. My guess is as follows:
The actual sequence of packets might be:
#18441: Redis Request for query#1, TCP Seq = 1050818855
#18443: Redis Response for query#1, TCP Seq = 2252530236 // the correct response
#?????: Redis Request for query#2, TCP Seq = ??
#20521: Redis Response for query#2, TCP Seq = 2252531121 // the wrong response
I think it might be possible that due to some reason, such as CPU or memory shortage, the deepflow-agent did not capture the two middle packets, causing the first and fourth packets to be incorrectly matched as one query.
If this situation still occurs, you can investigate as follows:
Also, by the way, what do you mean by second-level response?
Search before asking
DeepFlow Component
Agent
What you expected to happen
Theoretically, Redis is not prone to second-level response, but when a second-level response occurs, we hope that the unpacking is correct.
How to reproduce
We found out that redis had many second-level delays and were curious, so we captured and analyzed the packets and found that the second-level data
req_tcp_seq
andresp_tcp_seq
did not match, as shown in the following figure:The l7 flow log
The request packet
The wrong response packet
The correct response packet
By the way, the millisecond response unpacking is correct, only appears in the second response.
DeepFlow version
DeepFlow agent list
No response
Kubernetes CNI
aws-vpc-cni
Operation-System/Kernel version
Anything else
No response
Are you willing to submit a PR?
Code of Conduct