소스를 식별하는 데 어려움을 겪는 매우 이상한 동작을 경험하고 있지만 컴퓨터 시계라고 가정합니다. 설정과 개요는 다음과 같습니다.
내 홈 네트워크에는 모뎀을 통해 인터넷에 연결되는 두 대의 컴퓨터가 있습니다. 하나 (컴퓨터 A)는 RJ45를 통해 연결되고, 다른 하나(컴퓨터 B) WLAN을 통해. 두 컴퓨터 모두 Windows 10을 실행하고 두 컴퓨터 모두 Postgresql 13 데이터베이스와 Java 앱이라는 애플리케이션에 대해 정확히 동일한 스택을 가지고 있습니다.
저는 Java 앱을 사용하여 몇 밀리초마다 도착하는 웹소켓을 통해 이벤트를 모니터링하고 있습니다. 이벤트는 인터넷 서버에 게시되며 밀리초 단위의 타임스탬프를 포함합니다.
Java 앱은 메시지를 구문 분석하여 postgresql 테이블에 저장합니다. 이 테이블에는 삽입 시간을 자동으로 캡처하는 필드도 포함되어 있습니다(기본값 now() 사용).
이벤트와 데이터베이스 기록 간의 지연 시간을 이해하기 위해 이벤트 시간과 삽입 시간을 비교했습니다. ~에컴퓨터 B(WLAN 연결을 사용함) 대기 시간은 약 5밀리초로 완벽하게 허용되는 수준이었습니다. ~에컴퓨터 A그러나 정확히 동일한 소프트웨어 스택을 사용하는 경우 이 "지연 시간"은 약 2~3초로 놀라울 정도로 높으며 매우 다양합니다. 또한 어떤 경우에는 삽입 시간이 이벤트 시간 이전으로 기록되는데, 이는 불가능하며 대기 시간 문제가 아니라 postgresql의 "now()" 함수가 몇시에 가져오는지에 대한 문제라고 믿게 만듭니다. 컴퓨터.
사용http://time.is, 컴퓨터 시계의 정확성을 확인했는데 실제로컴퓨터 B, 시간은 "정확함"으로 표시되는 반면,컴퓨터 A0.7초 차이가 나는 것으로 나타났습니다. 또한 시간을 다시 동기화해도 아무런 차이가 없습니다. 그런 다음 NetTime 응용 프로그램을 사용하여 다른 동기화 방법을 사용했는데 시계가 28ms로 보고되고 몇 초 후에 -1초가 느려지는 것을 확인했습니다. 즉, 방금 동기화를 수행했지만 거의 즉시 다시 동기화가 해제되고 너무 느리거나 너무 빠릅니다.
나의 주요 관심사는 첫 번째 컴퓨터인 컴퓨터 A의 시간 차이 또는 대기 시간입니다. 시계의 변동성에 대한 관찰과 소프트웨어 스택이 100% 동일하다는 사실을 고려하면 문제는 컴퓨터 시계에 있는 것으로 추정됩니다. 불행하게도 나는 이 가정을 가장 잘 검증할 수 있는 방법을 모르고, 만약 내가 맞다면 문제를 해결하는 방법도 모릅니다. 컴퓨터 시계가 그러한 행동을 보인다는 것을 들어본 적이 없기 때문입니다. 그런데... 혹시 다른 일이 있어서 제가 여기서 엉뚱한 토끼를 쫓고 있는 걸까요? LAN 관련 문제일 수 있으며, 다른 눈에 띄는 문제는 없으므로 이를 어떻게 확인할 수 있습니까?
어떤 도움이라도 대단히 감사하겠습니다.