- 4
- 이니스프리
- 조회 수 2588
안녕하세요?
네이비즘이나 타임시커 등 서버시간 측정 사이트 관련 질문 드립니다 ^^
네이비즘에서 스포어 서버시간을 체크해보면 스포어 출석부에 나오는 시간과 1초 정도 차이가 있구요.
네이비즘에서 표준시간이라고 알려주는 시간은 그와 1초 정도 차이가 또 있더군요.
이에 따르면 스포어 출석부의 시간과 네이비즘에서 알려주는 표준시간 간에
대략 1.5~2초 정도 차이가 있는 것인데요.
생각해보면 스포어와 네이비즘 서버 모두 리눅스의 NTP 타임데몬 등으로 동기화를 하고 있을텐데
그 정도 차이가 발생한다는 것은 아무리 생각해봐도 경험칙에 반하는 것 같거든요 ㅠㅠ
사실 PHP로 서버의 현재 시간을 받아와서 바로 뿌려주는 스포어 출석부 시간이
실제 스포어 서버시간에 가장 근접할 것이고
다른 사이트에서 측정한 시간이 부정확할 가능성이 높다고 생각됩니다.
그리고 제가 발견한 또 다른 모순(?) 중에 하나는
한 대의 PC에서 크롬과 파이어폭스를 각각 열어서
동일한 사이트의 현재시간을 네이비즘으로 확인을 해보면 대략 1초 정도의 오차가 발생하더군요.
1초라면 수강신청이나 티켓팅을 할 때 그 사이에 수천 명이 몰려있을 수도 있는 큰 차이인데 말이죠 ㅜㅜ
예전에 제가 서버시간 측정과 관련된 질문을 드린 적이 있었고,
당시에 라엘 님께서 네이비즘은 랜덤문자열의 404 요청을 하고
그 응답헤더 시간을 읽는 방식이라고 답변을 주셨습니다 ^^
그래서 오토핫키로 제 나름대로 허접한 수준이지만
헤더시간을 받아와 출력하여 시계 형태로 보여주는 스크립트를 작성해봤고
다른 개발자 분께서 유사한 메커니즘으로 작성하신 프로그램도 사용해봤는데요.
저는 처음에 헤더의 시간을 받아오고 핑 ms를 감안하여 계산을 하면 될 것이라고 생각했는데요.
그런데 제가 요청한 때로부터 응답헤더를 받는 때까지의 시간을 측정해보니
ICMP를 이용한 핑과 HTTP 응답헤더를 받는 때까지의 시간은 전혀 다르더군요,
더구나 핑은 loss가 발생하는 경우는 있지만 회선에 문제가 없다면 대체로 편차가 작은데
HTTP 응답헤더를 받는 때까지의 시간을 반복측정해보니 그 편차가 상당히 크더군요.
제가 예전에 석사 과정에 재학할 때 컴퓨터공학과나 전자공학과 출신 선배님들께서
수강신청할 때 네이비즘 등 서버시간 측정 사이트를 활용하지 말고
어차피 수강신청 서버의 시간이 표준시간에 매우 근접하니
PC의 시간을 UTCK를 이용하여 표준시간에 동기화해서
이를 바탕으로 수강신청을 하라고 말씀하셨던 기억이 나네요.
사실 대형 사이트에서는 http 헤더 타임을 요청하더라도
WAS 서버나 DB 서버의 시간을 받아오는 것이 아니기 때문에
서버들 간의 데이터 연동시에 수 ms 내지 수십 ms까지도 차이가 발생할 것 같은데요.
두서없이 장황한 글이 되었는데요 ㅜㅜ
정리하면 HTTP 응답헤더를 받는 때까지의 시간은 편차가 크기 때문에 1초 정도의 오차가 발생하고,
더구나 이 방법은 WAS 서버나 DB 서버의 시간을 알 수 없다는 단점이 있네요.
그렇다면 결론적으로 WAS나 DB 서버의 현재 시간을 공개하지 않는 이상
서버시간을 보여주는 사이트 또는 프로그램이나
윈도우의 시간을 서버시간과 동기화한다는 프로그램은
1초 내외의 오차가 불가피하게 발생할 수밖에 없는 구조이고,
하나의 참고자료가 될 뿐이지 절대적으로 신뢰할 수 있는 자료는 되지 못한다고 보면 될까요?
p.s.
만약 제가 후배들을 위해서 학교 서버에 홈페이지를 열어서 현재시간을 보여준다면,
수강신청 서버와 구성원에게 제공하는 호스팅 서버의 현재시간에 오차가 없고
수강신청 사이트의 웹 서버 - WAS 서버 - DB 서버 간에 현재시간이 동일하다는 가정하에
비교적 신뢰할 수 있는 지표가 될까요?
아니면 또 하나의 부정확한 측정방법에 불과한 것일까요?
p.s. (2)
좌측에 크롬, 우측에 파폭을 동시에 열었습니다.
저는 케이윌 팬은 아닙니다 ㅠㅠ
작성자
댓글 4
역시 다년간 서버를 관리해보신 노하우에서 우러나오는 답변 감사드립니다!
저도 예전부터 수강신청 등과 관련하여 네이비즘을 그다지 신뢰하지 않았지만,
크롬과 파이어폭스에서 네이비즘을 동시에 열었는데 보여주는 서버시간이 다르다는 점을 확인한 이후에는
웹 애플리케이션의 형태로 정확한 서버 시간을 확인해서 보여주는 것은 사실상 불가능에 가깝다는 점을 깨닫게 되었네요.
(이런 현상이 정확히 무슨 이유 때문인지는 모르겠습니다)
다행히 요새는 예전보다 서버 시간이 표준시에 동기화가 되어있지 않은 경우가 적은 것 같더군요.
말씀하신대로 서버시간이 동기화가 되어있지 않다는 점을 확인하지 않는 이상
서울의 표준시를 참고하는 것이 가장 바람직하겠네요 :)
저희 후배들에게도 그렇게 전해주겠습니다!
감사합니다 ^-^
저는 저 나름대로 보정해서 사용중입니다.
핑은 ICMP 말고 포트핑이 따로 있어요.
제가 만든 다른 사이트 https://ipconfig.tools/ko/ping?host=studyforus.com&port=443 를 살펴보세요.
가장 정확한 시간은
서버의 date 헤더 - 통신시간(curl 의 total_time 항목) - 페이지 로딩시간(body init 측정시간 - head 측정시간) - PING 시간(이건 너무 작아서 무시하는게 좋음)
구현은 이곳에! https://ipconfig.tools/ko/servertime
앗 늦은 밤에 답변 달아주셔서 정말 감사합니다 ^^
ICMP가 아니라 포트핑을 해야하는 것이었고 고려해야 할 여러 요소가 복잡하군요.
역시 저같은 초보자가 감히 흉내낼 수 없는 것이었네요 ㅠㅠ
라엘 님께서 사이트에 구현하신 방법이 네이비즘보다 훨씬 오차가 적네요 :)
라엘 님 덕분에 많이 배우고 사이트 잘 구경하고 갑니다~
그런데 제가 정확한 원인을 알 수 없지만
브라우저를 새로고침할 때마다 가끔씩 1초 내의 근소한 오차가 발생하는 것 같아요 ㅠㅠ
아마도 라엘 님 서버에서 계산된 시간을 저희 집 브라우저에 나타내는 과정에서 발생하는 오차(?)인 것 같네요.
그럼 라엘 님께서도 감기 조심하시고 안녕히 주무세요~!
항상 감사드립니다 ^-^
저는 개인적으로 네이비즘 시계를 믿지 않습니다.
표준시간에 동기화가 되어 있는 윈도우의 시계를 기준으로 출석해도 스포어 출첵 기준으로 1초 이내에 출석이 가능합니다.
즉, 바꿔 이야기하면 네이비즘 시계를 사용하지 않아도 보통 서버의 시간들이 표준시에 맞춰져있기 때문에 가능한 일인 것 같습니다.
서버가 특정 표준시에 동기화가 되어 있다면 해당 표준시를 참고하는 것만으로도 충분해 보입니다.
서버의 시계가 동기화를 하지 않아 약간 몇초씩 어긋나는 경우에는 네이비즘이 도움될것 같습니다.