전체 흐름 요약 3개의 세션 이 순차적으로 보입니다. 연결→등록→끊김→재연결이 반복되고 있습니다. 세션별 분석 세션 1 ( 02:47:44 ~ 02:48:49 , 약 65초) cert ok via CN → ws established → slot registered(slot=1) lws_validity_cb: validity too old ← 여기서 강제 종료 ws closed bytes_in=0, bytes_out=0 원인: lws keepalive 유효성 검사 실패. lws는 연결이 일정 시간 안에 ping/pong 교환이 없으면 validity too old 로 강제 종료합니다. 이 세션은 data 교환 자체가 없었습니다(bytes 모두 0). 세션 2 ( 02:48:50 ~ 02:57:18 , 약 8.5분) cert ok → ws established → slot registered(slot=1) ws closed bytes_in=160, bytes_out=0 에이전트가 160바이트를 보냈습니다(AGENT_HELLO가 이 크기). 그런데 bytes_out=0 — relay가 에이전트에게 아무것도 보내지 않았습니다. HELLO_ACK가 카운트에 안 잡히거나 발송 자체가 안 된 겁니다. 세션 3 ( 02:57:19 ~ 현재 ) cert ok → ws established → slot registered(slot=1) ← 지금 연결 중 현재 정상 연결 상태. 두 가지 문제 문제 1 — lws_validity_cb: validity too old (연결 끊김의 원인) lws가 연결 유효성을 주기적으로 체크하는데, ping/pong이 교환되지 않으면 강제 종료합니다. relay 서버 코드에서 LWS_CALLBACK_CLIENT_RECEIVE_PONG 이나 keepalive 설정이 없으면 이게 계속 발생합니다. 해결 : relay의 lws vhost 설정에 keepalive 간격을 추가해야 합니다. ws_server.c 에서 vhost 생성 시: c /* lws_context_creation_info 또는 vhost 설정에 추가 */ .ws_ping_pong_interval = 20, /* 20초마다 ping */ /* 또는 lws_set_timeout 으로 */ 또는 에이전트 쪽에서 주기적으로 lws ping을 보내도록 해야 합니다. 문제 2 — bytes_out=0 (HELLO_ACK 미발송 또는 미집계) 두 가지 가능성입니다: A. slot 통계가 HELLO_ACK를 안 세는 경우 — bytes_out 카운터가 HELLO_ACK 전송 경로에 연결 안 됐을 때. 에이전트 로그에 HELLO_ACK received 가 찍히는지 확인하면 됩니다: sh grep -a "HELLO_ACK" /var/log/mihosrcd.log | tail -5 B. HELLO_ACK 자체가 안 가는 경우 — 더 심각. relay가 HELLO를 파싱하고 ACK를 보내는 경로에 문제 있는 것. 지금 당장 확인할 것 ① 에이전트(x1a)에서 — HELLO_ACK를 실제로 받고 있는지: sh grep -aE "\[cmd\] HELLO_ACK|WSS connected|WSS connection" /var/log/mihosrcd.log | tail -5 ② x280a도 같은 패턴인지 — 서버에서 두 노드 모두 보이는지: sh curl -s http://127.0.0.1:17100/relay/v1/agents \ -H "X-Service-Token: 4a53810dd109d1b85c57c0576548abb2d9a00d3b1fc4caba" | jq 정리 — 현재 상태 항목 상태 설명 인증(mTLS) ✅ cert ok via CN 매번 정상 접속·등록 ✅ ws established , slot registered 정상 주기적 재연결 ⚠ lws_validity_cb → ping/pong 설정 필요 HELLO_ACK ❓ bytes_out=0 — 에이전트 로그 확인 필요 가장 시급한 건 lws_validity_cb 처리 — ping/pong이 없어서 lws가 멀쩡한 연결을 끊는 겁니다. 에이전트 HELLO_ACK 로그 결과를 주시면 bytes_out=0의 원인까지 확정하겠습니다.