2016-06-29 2 views
-1

사례 : 한 시간 후에 10000 건의 고객 요청이 있습니다. 매시간 로그 파일을 만듭니다. 각 고객 로그는 5K입니다. 즉 시간별 로그는 50M + 일부 시스템 로그 데이터입니다. 사후 로그 분석에는 grepping을 사용하고 로그 작성에는 log4j를 사용합니다.작은 로그 대 큰 로그 : Java를 통한 로그

질문 : 고객 당 로그 파일을 만들거나 모든 고객 로그를 다른 시스템 관련 로그와 함께 하나의 큰 시간별 파일에 덤프하는 것이 좋습니다.

  1. 성능 : 오버 헤드를 로그 (즉, 런타임 log4j에 성능을) 만드는 동안 (우선 순위에 따라) 커버

    답변 :

    를 찾고 계십니까?

  2. 확장 성 : 한 시간에 1 백만 고객이 생기기 시작한다고 가정합니다.

  3. 저장소 관리 : 여러 개의 작은 파일은 유지 관리가 쉽고 하나의 큰 파일은 OS 수준입니까?

  4. 로그 분석 : 큰 로그 파일을 grepping하는 것이 더 낫지 않습니까? 아니면 OS에서 파일을 찾는 것이 좋습니다? 나는이 링크 java logging : multiple small file vs one big을 보았다

,이 시나리오는 약간 차이가 나는 몇 가지 고유 한 식별자를 기반으로 깨는에 대해 이야기하는 동안은 크기에 따라 조각으로 파괴 질문입니다.

+0

귀하의 질문이 너무 광범위하다고 생각하지만 제 2 센트는 모든 고객을위한 단일 로그 파일을 선호합니다. 앱에서 무언가가 깨지면 단일 참조 지점을 갖는 것이 매우 편리 할 것입니다. 단일 로그 파일을 사용하면 한 장의 종이에 영향을받는 고객을 볼 수 있습니다. –

답변

1

성능 : 로그 생성 중 오버 헤드 (즉, 런타임 log4j 성능)?

더 많은 파일을 스캔해야하는 경우 쓰기가 더 느리고 읽기가 더 느립니다.

하나만 읽어야하는 경우 훨씬 빠릅니다.

확장 성 : 한 시간에 1 백만 고객이 생기기 시작한다고 가정합니다.

1 백만개의 파일이 있지만 둘 중 하나의 솔루션이 작동 할 수 있습니다.

저장소 관리 : 여러 개의 작은 파일은 유지 관리하기 쉽고 하나의 큰 파일은 OS 수준입니까?

더 많은 파일을 관리하는 것이 더 어렵지만 요즘은 회전 디스크가없는 한 1 백만 명이 그다지 성능이 좋지 않습니다.

로그 분석 : 큰 로그 파일을 grepping하는 것이 더 낫습니다. 아니면 OS에서 파일을 찾는 것이 좋습니다.

하나의 파일 만 처리하면 더 좋습니다.

BTW 각 자릿수에 대해 하나의 파일과 같은 조합을 사용할 수 있습니다. 0으로 끝나는 모든 사용자 ID와 1로 끝나는 사용자 ID가 있습니다. 이렇게하면 데이터를 분할하고 파일 수를 제어 할 수 있습니다.

+0

의견에 감사드립니다. 지난 3 번의 답변에 만족합니다. 첫 번째 질문에 대해서는 스캔 할 계획이 아니라 작성하는 중입니다. 내 질문은, 우리가 서버에 filesper 요청을 전환하면 로거 성능에 영향을 미치지, 또는 서버의 수명 내내 동일한 파일을 유지하는 것이 더 낫다는 것입니다. –

+0

@ShrotTripathi 필자는 필요한 것보다 많은 파일을 생성하지 않을 것입니다. 회전 디스크에서 각 파일은 약 10ms를 더합니다. 그러나 1 백만 개의 파일을 검색해야하는 경우에는 몇 시간이 걸릴 수 있습니다. –

+0

코드 관점에서 볼 때, 자바 로거는 다른 로그 파일을 만드는 오버 헤드가 있거나, 동일한 파일에 쓰는 경우 로거 클래스에 문제가되지 않습니다. 네가 이걸 대답 할 수 있다면 도움이 될거야. 어쨌든 나는 내가 필요로하는 것에 대한 요지와 생각을 가지고있어. –