-
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 6 replies
-
I believe this behavior is in line with the TCP protocol:
So about 11 mins (75*9/60) after the client stopped responding will the server give up. |
Beta Was this translation helpful? Give feedback.
-
@bzlom After looking over this with the maintainers, we have questions. 🙂 Linkerd doesn't actually send keepalives in the proxy code. What Linkerd does is to request that the underlying TCP stack send keepalives after 10 seconds of idle time -- so Linkerd forces Your wireshark shows pretty much exactly what we'd expect for this: at line 16, we see the first keepalive being sent, after 10s of idle time. Lines 18-26 show 9 keepalives sent at roughly 75-second intervals, then at line 27 we see the TCP reset that closes the connection. (Line 17, where something ACKs the first keepalive on behalf of the client, is strange to me, and makes me wonder exactly what's between the client and this wireshark.) But, overall, what we see here is the TCP stack doing exactly what we'd expect Linkerd to ask it to do. As I said, this leaves us with questions:
Of these, the most important is definitely the first -- is this actually causing you a problem, or is it simply that you're seeing metrics with values that are unexpected? Thanks! |
Beta Was this translation helpful? Give feedback.
To reiterate over my previous answer, linkerd enables keepalives with its defaults set at the kernel level. There aren't to my knowledge reports that this is undesired behavior. Linkerd doesn't offer the ability to tweak these defaults, but as you point out, they're already exposed in the pod spec, so you could rely on those settings if you think your setup requires them.