feat(client,peer): Add queue and buffer diagnostics to SOCKS5 logging

This commit is contained in:
zarazaex69
2026-04-09 20:36:16 +03:00
parent 7b889ae5ee
commit 6d2e6bbb6e
2 changed files with 36 additions and 1 deletions

View File

@@ -262,8 +262,19 @@ func (c *Client) handleSOCKS5(conn net.Conn) {
reqData, _ := json.Marshal(req)
sendTime := time.Now()
queueLen := 0
buffered := uint64(0)
for _, peer := range c.peers {
if peer != nil {
queueLen += len(peer.GetSendQueue())
buffered += peer.GetBufferedAmount()
}
}
c.mux.SendData(sid, reqData)
log.Printf("[CLIENT] sid=%d SEND_REQUEST elapsed=%v", sid, time.Since(sendTime))
log.Printf("[CLIENT] sid=%d SEND_REQUEST elapsed=%v queue_len=%d dc_buffered=%d",
sid, time.Since(sendTime), queueLen, buffered)
dataReady := c.mux.WaitForData(sid)
timeout := time.NewTimer(10 * time.Second)

View File

@@ -37,6 +37,17 @@ type Peer struct {
wg sync.WaitGroup
}
func (p *Peer) GetSendQueue() chan []byte {
return p.sendQueue
}
func (p *Peer) GetBufferedAmount() uint64 {
if p.dc != nil {
return p.dc.BufferedAmount()
}
return 0
}
func NewPeer(roomURL, name string, onData func([]byte)) (*Peer, error) {
conn, err := GetConnectionInfo(roomURL, name)
if err != nil {
@@ -696,8 +707,21 @@ func (p *Peer) WatchConnection(ctx context.Context) {
}
func (p *Peer) processSendQueue() {
ticker := time.NewTicker(2 * time.Second)
defer ticker.Stop()
for {
select {
case <-ticker.C:
queueLen := len(p.sendQueue)
buffered := uint64(0)
if p.dc != nil {
buffered = p.dc.BufferedAmount()
}
if queueLen > 50 || buffered > 100*1024 {
log.Printf("[QUEUE_MONITOR] queue_len=%d dc_buffered=%d", queueLen, buffered)
}
case data := <-p.sendQueue:
queueStart := time.Now()
buffered := uint64(0)