표현식 큐 튜닝

각 설치의 서버 자원, 표현식 개수 및 복잡도에 따라 표현식 엔진을 튜닝해야 합니다. 일반적으로 이 프로세스에서는 성능을 더 이상 높일 수 없을 때까지 한 번에 한 매개변수의 성능을 반복적으로 튜닝 및 측정합니다. 레코드의 트랙을 유지보수해야 합니다. 하드웨어, 사용법 및 설정 변경 시 새로운 튜닝이 필요합니다.
관리자는 각 설치 시 다음 애플리케이션을 확인해야 합니다.
표 1. 표현식 큐 튜닝 애플리케이션 설정
설정 단위 기본값 런타임* 설명 튜닝 팁
formula.queue.maxage h 24 표현식 큐 히스토리를 보유하는 최대 시간입니다. 실행된 표현식만 제거됩니다. 이는 공식을 사용하여 수행됩니다. 실행된 항목을 보유하는 목적은 표현식 통계(고급 > 표현식 큐) 및 평가 루프 확인을 위한 것입니다. 루프 평가 시 고처리량 설정에서는 표 크기를 줄이기 위해 이 숫자가 낮습니다.
formula.queue.maxsize 항목 500000 표현식 큐의 최대 항목 수입니다. 정리 태스크는 히스토리를 정리하여 항목 수를 이 숫자 아래로 유지하는 것입니다. 실행된 표현식만 제거됩니다. 이것이 maxage 설정을 대체합니다. 성능 향상을 위해서는 고 로드 기간 중에 큐 히스토리 크기를 낮게 유지하고 히스토리가 줄도록 이 수를 튜닝할 수 있습니다. maxage 기간 중에 평균 처리량을 조금 밑돌게 유지하는 것이 적절합니다.
formula.execution.batch.size 항목 30 각 할당 실행 시마다 한 스레드에 할당되는 표현식 큐 항목의 수입니다. 항목은 "시작됨"으로 표시되고 새 일괄처리를 할당하기 전에 스레드가 실행되어 완료됩니다. 표현식은 여러 노드의 여러 스레드에서 동시에 계속 실행되지만 항상 종속성에 기반한 연대순을 따릅니다. 큐의 두 표현식이 서로 관련되지 않은 경우 추가된 순서와 다른 순서로 실행될 수 있습니다. 표현식 항목은 다른 항목의 값에 따라 다를 수 있습니다. 표현식 항목의 인스턴스(이 값에 따라 표현식 항목이 다름)가 표현식 전에 실행되지 않는 경우, 해당 항목이 실행되지 않을 수도 있습니다. 이것과 동시성에는 충돌, 불일치 순서 및 중복 작업을 방지하기 위해 할당이 필요합니다. 할당에는 다소 비용이 소요되므로 위의 요구사항 및 주어진 순서대로 실행된다는 조건 하에 한 번에 여러 개의 표현식이 할당됩니다. 많은 표현식이 할당되는 경우 할당 오버헤드는 발생하지 않지만 동시성이 "차단"되고 그 반대로 마찬가지입니다. 일반적으로는 표현식이 긴 종속성 체인을 형성하는 경우 이 숫자를 낮게 유지하고 표현식 체인이 짧거나 종속 항목이 적을 경우 이 숫자를 높게 유지합니다. 이값은 런타임 시 변경할 수 있으므로 최적 값을 찾을 때까지 조정할 수 있습니다. 10 미만의 값이나 200을 초과하는 값은 적절하지 않습니다.
formula.cleanup.interval msecs 1800000 아니오 표현식 큐를 정리하는 빈도입니다. 여기에는 maxage 및 maxsize 설정이 적용됩니다. 큐 제거만 수행됩니다. 첫 번째 정리는 서버가 시작되어 특수한 유지보수가 수행될 때 이루어집니다. 또한 2주 간격으로 타이머 표현식 무결성 검사가 야간에 수행됩니다. 대부분의 경우 기본값이 적당합니다. 처리량이 많으면 정리에 더 오래 걸리지만 좀 더 자주 수행해야 하고 그 역도 마찬가지입니다. 따라서 로드가 갑자기 크게 증가하면(예를 들어, 가져오기 또는 속성 추가 후) 예외나 성능 저하가 발생할 수 있으므로, 이 시간을 늘릴 때에는 주의해야 합니다.
formula.background.interval msecs 10000 아니오 할당되지 않은 새 표현식을 실행할 것이 있는지 표현식 큐를 확인하는 빈도입니다. 일괄처리가 완료되면 간격을 대기하지 않고 즉시 새로 확인이 이루어집니다. 다음 간격에서 큐가 "완료되지 않은" 경우 노력을 배가하기 위해 새로운 작업자 스레드가 증식됩니다. Rational® Focal Point™의 이전 버전에서 실행은 비동기이고 즉시 실행 방식이었습니다. 표현식이 데이터베이스로 이동될 때 교착 상태 없이는 불가능했습니다. 이것이 실행할 새 표현식이 있는지 표현식 큐를 검사하는 간격 즉, 사용자가 표현식 실행을 대기해야 하는 최대 시간(+ 실행 시간)입니다. 간격이 너무 짧으면 자원을 불필요하게 소비하게 됩니다. 이는 동시성 램핑에도 영향을 미칩니다. 이전 간격에서 시작된 작업자 스레드가 간격 내에 완료되지 않아도 다른 스레드(thread.per.nodes 까지)가 시작됩니다. 램핑이 느린 경우 이 숫자를 낮출 수 있습니다. 표현식이 자주 사용되지 않는 경우 이 숫자를 약간 높일 수 있습니다.
formula.max.background.threads.per.node count 2 아니오 각 노드에 대해 표현식을 실행하는 최대 동시 스레드 수입니다. 실제 최대 수는 애플리케이션 스레드 풀에 여유 스레드가 있는지의 여부에 따라 동적으로 결정됩니다. background.interval에서 설명한 동시성 램핑은 실행할 작업이 많을 경우 각 간격에서 노드의 표현식 평가 스레드 수를 증가시킵니다. 이것이 최대값입니다. 애플리케이션 스레드 풀에는 여유 스레드가 있어야 하며 이는 코어(가상 등)의 수와 관련하여 자동으로 조정됩니다. 또한 풀의 마지막 스레드는 이용이 금지됩니다. 이는 오퍼레이션에 방해가 되지 않으므로 이 숫자로 실험할 수 있습니다. 성능은 주로 유지할 데이터베이스의 동시성에 좌우되므로 더 나은 성능을 보장할 수는 없습니다. 큐에 평가되지 않은 표현식이 가장 많으면 이 숫자가 너무 낮다는 표시입니다.
formula.cleanup.enabled 부울 true 기본적으로 표현식 큐 정리가 사용됩니다. 디버깅 시나 정리를 배제해야 하는 성능 측정 실행 시를 제외하고 이를 사용 안함으로 설정하면 안 됩니다. 이 설정에는 실행할 튜닝이 없으므로 변경하지 말고 기본값 "true"를 유지하십시오.

피드백