监控: 单条 TCP 连接的流量数据
TCP 会话的流量数据:ChannelStat
每个 TCP 会话对应一个 ChannelContext
对象,而每个 ChannelContext
对象都有一个 ChannelStat
对象,用于记录该连接的流量统计和状态信息。定义如下:
public final ChannelStat stat = new ChannelStat();
ChannelStat 定义
ChannelStat
包含以下字段和方法,用于监控和记录 TCP 连接的各种状态和流量数据:
字段
decodeFailCount:
解码失败的次数。latestTimeOfReceivedPacket:
最近一次收到完整业务消息包的时间。latestTimeOfSentPacket:
最近一次发送完整业务消息包的时间。latestTimeOfReceivedByte:
最近一次接收到字节的时间。latestTimeOfSentByte:
最近一次发送字节的时间。timeCreated:
ChannelContext
对象创建的时间。timeFirstConnected:
第一次连接成功的时间。timeClosed:
连接关闭的时间。timeInReconnQueue:
进入重连队列的时间。sentBytes:
该连接已发送的字节数。sentPackets:
该连接已发送的消息包数。handledBytes:
该连接已处理的字节数。handledPackets:
该连接已处理的消息包数。handledPacketCosts:
处理消息包耗时的总和,单位为毫秒。可用于计算平均处理每个消息包的耗时。receivedBytes:
该连接已接收的字节数。receivedTcps:
该连接已接收的 TCP 数据包次数。receivedPackets:
该连接已接收的消息包数。
方法
getBytesPerTcpReceive():
计算平均每次 TCP 接收到的字节数,用于监控潜在的慢攻击。返回值越小,越有攻击嫌疑。getPacketsPerTcpReceive():
计算平均每次 TCP 接收到的业务包数。此值越小,越可能存在慢攻击。getHandledCostsPerPacket():
计算处理每个消息包的平均耗时,单位为毫秒。用于评估服务器处理消息包的效率。
ChannelStat
提供了全面的流量和状态监控信息,可以用于检测连接性能、流量统计以及识别潜在的攻击行为(例如慢速攻击)。通过这些指标,开发者可以实时监控每个 TCP 连接的状态,优化系统性能和安全性。