메모리 관리 우수 사례

건전한 런타임 환경을 유지하고 메모리 부족 오류를 피하기 위한 메모리 관리 우수 사례를 약술합니다.

통합 어플라이언스는 오케스트레이션 작업을 실행하기 위한 메모리 풀을 확보합니다. 이 메모리 풀 관리가 건전한 런타임 환경을 유지하기 위한 핵심입니다.

사용되는 메모리의 양과 가비지 콜렉션 사이클 사이에는 직접적인 관계가 있습니다. 가비지 콜렉션은 완료된 작업이 보유하는 메모리 및 변수 데이터를 다시 모든 오케스트레이션 작업에 의해 사용된 메모리의 풀로 리턴하는 프로세스입니다. 이 가비지 콜렉션 프로세스는 통합 어플라이언스가 새 오케스트레이션 작업이 사용할 수 있는 사용 가능한 메모리의 일정한 공급을 갖도록 보장합니다.

가비지 콜렉션(GC)은 오케스트레이션 작업 성능에 대한 영향 없이 백그라운드에서 실행하는 연속 프로세스입니다. 그러나 메모리가 위험 임계값에 도달할 때 전체 가비지 콜렉션으로 알려진 더 깊이있는 프로세스가 발생합니다. 전체 가비지 콜렉션 프로세스는 모든 실행 중인 작업을 휴면 상태로 만들고 사용되지 않는 메모리를 다시 풀로 리턴합니다. 모든 오케스트레이션 작업이 전체 가비지 콜렉션 동안 중지하기 때문에 빈번한 전체 가비지 콜렉션은 오케스트레이션 성능에 영향을 미칠 수 있습니다.

자원 이용률 그래프의 GC 활동 값이 정기적으로 급등할 때, 통합 어플라이언스가 더 빈번한 전체 가비지 콜렉션 사이클을 시작하여 관리하려고 시도 중인 메모리에 대한 높은 수요가 있을 수 있습니다. 그러나 높은 메모리 사용량이 반드시 전체 가비지 콜렉션 사이클의 증가를 의미하지는 않습니다. 예를 들어, 짧게 실행하는 오케스트레이션의 많은 볼륨은 더 큰 백분율의 메모리가 사용되게 합니다. 그러나 끊임없이 백그라운드에서 실행하는 가비지 콜렉션 사이클은 아마도 전체 메모리 사용량이 전체 가비지 콜렉션을 트리거하기에 충분히 높지 않도록 충분히 빨리 메모리를 다시 메모리의 풀로 리턴합니다. 전체 가비지 콜렉션은 모든 오케스트레이션을 중지하므로, 빈번한 전체 가비지 콜렉션은 오케스트레이션 성능에 영향을 줄 수 있습니다.

높은 메모리 사용량이 빈번한 전체 가비지 콜렉션이 되는 시나리오는 오케스트레이션 유형의 혼합을 포함합니다. 예를 들어 대형 오브젝트를 처리하는 수많은 변수를 갖는 복수의 비지속적이고 장기 실행하는 오케스트레이션을 갖습니다. 이런 유형의 오케스트레이션은 메모리 풀로 빨리 리턴될 수 없는 많은 양의 메모리를 이용하며 연결합니다.
참고: 이런 유형의 오케스트레이션은 Cast Iron®에서 권장되지 않습니다.

다음 표는 메모리 사용량을 관리하고 건전한 런타임 환경을 유지하는 데 도움이 되는 우수 사례의 목록을 제공합니다.

표 1. 메모리 관리 우수 사례
우수 사례 원리 설명
로깅 레벨을 줄이십시오. 더 상세한 로깅은 데이터를 처리하고 저장하기 위한 더 많은 메모리가 필요하며 통합 어플라이언스 디스크에서 I/O 로드를 늘리므로 성능을 저하시킬 수 있습니다. 상세한 로깅 레벨은 디버깅 목적을 위해서만 권장되며 많은 볼륨의 데이터가 처리되는 프로덕션 환경의 경우에는 권장되지 않습니다.

통합 어플라이언스는 시스템 로그와 오케스트레이션 작업 로그를 생성합니다.

Cast Iron은 시스템 로그에서 추적되는 모든 컴포넌트에 대해 시스템 로그 레벨을 "경고"로 설정할 것을 권장합니다.
  • 하드웨어
  • 자원
  • 네트워크
  • 보안
  • 오케스트레이션
  • 배치
다양한 시스템 컴포넌트에 의해 생성되는 경고 수가 높은 경우 메모리 사용량이 문제가 될 수 있습니다. 경고가 생성되도록 유발하고 있는 문제점을 해결하거나 시스템 로깅 레벨을 "오류"로 늘리십시오. 시스템 로그 레벨 설정에 대한 자세한 정보는 시스템 로그 설정 지정을 참조하십시오.

오케스트레이션 로깅 레벨은 프로젝트의 각 오케스트레이션에 대해 지정됩니다. Cast Iron은 통합 어플라이언스의 모든 프로젝트 아래의 모든 오케스트레이션에 대해 로깅 레벨을 "오류 값"으로 설정할 것을 권장합니다. 오케스트레이션 로그 레벨 설정에 대한 자세한 정보는 오케스트레이션 설정 편집을 참조하십시오.

지속성이 모든 오케스트레이션에 대해 사용 가능한지 확인하십시오. 기본적으로 지속성이 오케스트레이션에 대해 사용으로 설정되고 변수 데이터가 메모리 대신 디스크에 기록됩니다. 지속성을 사용으로 설정하면 런타임 중에 결함이 발생하는 경우 특정 시점 데이터 복구 이점이 추가됩니다.

오케스트레이션에 대해 지속성을 사용 안함으로 설정하는 경우 데이터는 메모리에 저장됩니다. 지속성 사용 안함이 성능을 개선할 수 있지만, 실행 중인 작업의 수가 늘어날 때 메모리 부족 가능성도 늘어납니다. 메모리가 부족할 위험이 매우 높기 때문에, 지속성을 사용 안함으로 설정할 것을 선택할 때 각별히 주의하여 진행하십시오.

참고: 지속성을 끄면 통합 어플라이언스가 동시에 실행할 수 있는 오케스트레이션 작업의 수가 줄어듭니다. 한계는 통합 어플라이언스에서 사용 가능한 메모리에 의해 설정됩니다.
오케스트레이션 작업을 엇갈리게 하기 위해 웹 관리 콘솔(WMC) 및 Studio에서 사용 가능한 스케줄링 기능을 사용하십시오. 다른 시간에 시작하거나 피크가 아닌 시간 동안 실행하도록 메모리 집약적 작업을 스케줄하여 메모리의 일부 로드를 경감시키고 전체 가비지 콜렉션의 수를 줄이고 성능을 잠재적으로 개선합니다.

Studio에서는 작업 스케줄 활동을 사용하거나 오케스트레이션에서 활동에 대한 폴링 간격을 구성하여 오케스트레이션 작업을 엇갈리게 하고 자원 이용률을 극대화할 수 있습니다. 또한 통합 어플라이언스가 오케스트레이션 작업을 실행할 시기를 제어하기 위해 WMC에서 스케줄을 작성할 수도 있습니다. 주어진 오케스트레이션 작업의 평균 실행 시간을 측정하여 작업 스케줄을 최적화할 수 있게 하십시오.

오케스트레이션에서 사용되는 변수의 수를 최소화하십시오. 오케스트레이션에서 더 많은 변수를 사용할수록, 데이터를 저장하기 위해 더 많은 메모리가 필요합니다. 이것은 다시 가비지 콜렉션 사이클의 수를 늘리고 성능에 영향을 줄 수 있습니다. 오케스트레이션을 검토하여 사용된 변수의 수를 줄일 수 있는지 확인하십시오.
동시에 실행 중인 작업의 수를 줄이십시오. WMC에서 오케스트레이션에 대해 동시에 실행 중인 작업의 최대 수를 지정할 수 있습니다. 동시에 실행 중인 오케스트레이션의 수가 늘어날 때, 메모리 사용 백분율도 늘어납니다. 메모리가 과부하가 걸리고 있음을 알게 되는 경우 동시에 실행하는 작업의 수를 줄이십시오.

동시에 실행하는 작업의 수를 줄이는 효과는 특히 많은 수의 변수를 포함하는 비지속적 장기 실행 오케스트레이션 작업에 영향을 미칩니다.

참고: 이런 유형의 오케스트레이션은 Cast Iron에서 권장되지 않습니다.
메모리에서 75% 로드를 초과하지 마십시오. WMC 자원 이용률 그래프에서 사용되는 메모리의 백분율을 추적할 수 있습니다. 사용되는 메모리의 백분율이 약 75% 이하일 때 통합 어플라이언스는 추가 오케스트레이션을 처리할 용량을 갖고 있습니다. 사용되는 메모리의 백분율이 약 75%를 초과할 때, 전체 가비지 콜렉션의 수가 늘어남에 따라 성능 문제가 발생할 수 있습니다.
전체 가비지 콜렉션 사이클을 제한하십시오. WMC 자원 이용률 그래프에서 GC 활동 값을 사용하여 전체 가비지 콜렉션의 백분율을 추적할 수 있습니다. 이 백분율이 50%를 초과할 때 오케스트레이션 작업의 처리량의 축소를 의식할 수 있습니다. 메모리 관리 우수 사례를 구현하여 메모리 사용량을 줄이고 전체 가비지 콜렉션 사이클의 발생 가능성을 줄이십시오.
환경에 추가 통합 어플라이언스를 추가하십시오. 우수 사례 원리를 구현한 후, 메모리 사용량이 계속 높은 경우 사용자 환경에 다른 통합 어플라이언스를 추가할 시간일 수 있습니다.