부하 지수를 사람이 기다린 시간으로, 복제 이미지 PC 노드 중복 해결 — 주간 리뷰 (2026-09-21)

pscore rev.30, 자원 baseline 이상동작 노드 탐지, 복제 이미지 노드 매칭, 정팀장 점검 지식 재편, 프로세스 수집 DB 비용 절감을 다룬 Orange Labs 주간 개발 기록

이번 주에는 프로세스 부하 지수를 사람이 실제로 기다린 시간 기준으로 다시 세우고(rev.30), 복제 이미지로 배포된 PC들이 하나의 노드 문서를 공유하던 문제를 서버 두 곳에서 잡았다. 매니저에서는 자원 baseline 이상동작 노드 탐지 위젯이 새로 올라오고, 미사용 위젯과 파일을 대규모로 걷어냈다.

룰·데이터 분석 파트

패키지 1.6.242.0915 회차의 매니저·에이전트·서버·룰 릴리즈 티켓을 발행하고 앞 회차(1.6.242.0910)를 완료 처리했다.

프론트엔드 파트

노드 상세를 페이지 안 창 대신 새 브라우저 창으로 열게 하고, 대시보드 노드 핀을 요약 보기·목록 보기·새 창별로 나눠 고정 노드가 섞이지 않도록 바로잡았다.

미사용 파일 70개와 queryFunctions 37개를 지우고, 열 수 없는 위젯 3종(일별 증상 v1·일별 타임라인·신규 증상 리포트)과 옛 증상·도달 불가 위젯 폴더를 폐기했다. 합쳐 2만6천여 줄을 걷어냈다.

폴더블·태블릿에서 화면 키보드가 정팀장 입력창을 가리던 문제와, GNB 접기 손잡이가 사라지던 결함·가상 그룹 편집 모달의 GNB 침범을 함께 고쳤다.

분석 서비스 파트

자원 baseline 이상동작 노드 탐지 위젯을 만들었다. 오늘 요약 KPI를 마스터-디테일로 짜고, 학습중·정상·경계·이상 상태를 나눴다. 히트맵 셀을 누르면 그 시각의 프로세스와 증상을 잇는 원인 패널이 열린다.

서버 쪽에서는 증상 축·일상 필터와 이상→원인 조인을 더한 baseline 조회 API를 만들고, Memory % 환산 분모를 물리 RAM(nodeinfo) 기준으로 바로잡았다.

학습 버킷을 요일×시간대(dow-hour)로 바꿔 요일 패턴을 학습하게 하고, daily가 그 날짜 요일의 평소값(mu/std)을 함께 반환하도록 했다.

서버 백엔드 파트

같은 이미지로 만든 PC 두 대가 동시에 부팅하면 한 세션 동안 노드 문서를 공유하던 문제를, POST 매칭과 문서 회전을 원자화해 서로 다른 문서를 나눠 갖도록 고쳤다. 비-VM 물리 PC에서 나타나던 현상이다.

노드 매칭에서 ticketb·id 단계를 빼 복제 이미지가 물려주는 값을 쓰지 않게 하고, auto-find에서는 공인 세그먼트에 라우터 MAC을 붙이지 않고 대역만 식별하게 했다. 노드 위젯에는 확정 소속만 보이는 네트워크 탭을 추가했다.

매니저·에이전트 파트

부하 지수를 CPU·메모리·디스크 세 대기의 합집합으로 다시 정의하고(rev.30), 회차 사이에 끝난 프로그램에도 디스크 몫을 배분했다. 매니저 노드 부하 배너에 원인 축·반복 실행·svchost 서비스명을 표시하고, 서버·서비스 집계에 실행·종료 횟수와 축별 대기 초를 실었다. 에이전트·매니저·REST API·서비스 네 레포를 함께 고쳤다.

프로세스 수집 DB의 current를 메모리로 올려 인덱스 9개와 빈 테이블 4개를 없애고, 바뀐 hourly 행만 최근 두 시간대에서 읽어 올리도록 바꿨다. 회차 주기는 3분에서 5분으로 늘렸다.

정팀장 점검 지식을 서가-책꽂이-블럭-책-목차-챕터 계층으로 다시 짜, 모델이 한 번에 한 층씩 꺼내 점검하게 했다. 서버 자료 조회 도구를 get_server_data 하나로 합치고, 판정에 unknown을 넣어 끝까지 조사해도 모르면 웹에서 찾은 뒤 닫게 했다.

시작 프로그램 화면을 신설해 느린 항목을 가려 보이고 로그온 실행을 켜고 끄게 했으며, 설치본 사용자명 입력과 /InstallDrive 무인 드라이브 지정을 추가했다. 구버전 Edge에서 에이전트 설치 파일이 받아지지 않던 문제는 다운로드 스크립트를 ES5로 내려 고쳤다. 노드 인증 id 매칭에 guid 대조를 넣어 복제 이미지 PC들이 한 문서를 번갈아 덮어쓰던 문제도 막았다.

개발 통계

  • 매니저·에이전트 파트: 바이너리 11파일 제외
  • 프론트엔드 파트의 삭제 라인 대부분은 미사용 위젯·파일 정리