我们看到在相同子网内访问远程资源的服务的延迟时间为100〜300毫秒,但当我们使用ping(ping的大小与正常发送的数据包大小相同)时,我们会看到5ms或更短的响应。 还有什么我们应该检查?

“延迟”是什么意思?
您是否将ICMP回应响应时间与应用程序处理往返时间进行比较?
如果你是,这将解释它 – 也告诉你不要比较苹果和橙子:)
可能是你有包丢失[导致restransmissions]例如更大的数据包?
也许尝试在Linux下ping -s 1400 address或在Windows下ping -l 1400 address 。
如果这没有帮助用wireshark查看stream量 – 也许有一些奇怪的重新传输,损坏的数据包?
这样的差异通常会在应用程序/服务器中显示一个问题。 虽然由于QoS /networking优先级,您的ping可能会有所不同,但如果您在同一本地networking上讨论系统,那么这不是我看的第一个地方。
访问来自同一个主机的服务的延迟时间是多less? 该主机是否更快提供其他服务? 它是在一个沉重的IO负载?
正如您在这里所怀疑的那样,Ping延迟!= TCP往返时间,特别是在传输数据的情况下。 可能所有这些都是由于延迟的ACK(可能施加〜200ms,通用的默认设置)或者Nagle /和DACK之间的不良交互造成的,可能会将其推迟到〜500ms。 数据包捕获是在这里。
另请注意,延迟确认计时器独立于TCPstream量,并在系统引导时实例化。 所以它可以在stream程中的任何1-200毫秒之间的任何时间点燃,并且通常会引起“范围”式的延迟。