호출 횟수가 많은 쿼리 순위를 뽑아 공유, 점검 직후 로그인 시간대의 쿼리 수·커넥션 수 모니터링.
그래프에서는
접속·점검 직후 폭증 · DB 초당 쿼리 수, 로그인 수
확인할 곳
점검 직후 로그인 수와 DB의 초당 쿼리 수(MySQL은 Questions 증가량)를 겹쳐 보고 로그인 한 건당 쿼리 수를 계산함. 호출 횟수 상위 쿼리는 MySQL events_statements_summary_by_digest의 COUNT_STAR, PostgreSQL pg_stat_statements의 calls로 뽑음
이러면 맞음
로그인 한 건당 쿼리가 수십 개이고 상위 쿼리가 캐릭터 ID 하나로 조회하는 같은 모양의 짧은 쿼리들임. 패치 뒤 로그인당 쿼리 수가 늘었다면 그 패치가 출발점
이러면 아님
로그인당 쿼리 수는 적은데 쿼리 하나하나가 느리면 콜드 캐시(db-cold-cache)나 인덱스(db-no-index)
확인 수단
인프라 도구로 확인(게임 코드 불필요)
더 알아보기
ORM(DB 조회를 대신 만들어 주는 라이브러리)의 지연 로딩이 개발자도 모르는 사이 이런 조회를 만듭니다. 개발 서버에서는 캐릭터 몇 개라 티가 안 나고 라이브의 동시 로그인에서 처음 드러납니다.
출처
Efficient Querying.NET ORM의 지연 로딩은 항목마다 쿼리를 한 번씩 더 보내는 N+1 문제를 만들어 성능을 크게 떨어뜨림, 한 번에 묶어 불러오기(eager loading) 권장