목차

소개

사전 요구 사항

요구 사항

사용되는 구성 요소

배경 정보

수집할 데이터

추가 정보

관련 정보

소개

이 문서에서는 CPU 사용량이 100-150%로 증가할 때 필요한 NSO(Network Services Orchestrator) 데이터 수집에 대해 설명합니다.

사전 요구 사항

요구 사항

이 문서에 대한 특정 요건이 없습니다.

사용되는 구성 요소

이 문서는 특정 소프트웨어 및 하드웨어 버전으로 한정되지 않습니다.

이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.

배경 정보

NB로부터 다수의 트랜잭션들이 프로세싱될 때, NSO CPU 소비는 정상 소비의 대략 100-150%로 증가한다. 이 경우 CPU 성능이 저하되는 원인을 찾아야 합니다. 그리고 동시에 NSO는 RESTCONF(사용되는 경우) 쿼리에 올바르게 응답하지 않습니다.

이 문서에서는 문제가 제대로 해결되도록 문제 중에 수집해야 하는 모든 중요한 데이터를 강조 표시하고 몇 가지 해결 단계를 제안합니다.

수집할 데이터

Linux의 관점에서:

- lscpu

- 꼭대기

- 무료 -h

- vmstat

- cat /proc/meminfo

- 프트리 -c

- ps auxw | 정렬

참고: 요청이 NB에서 올 때 시스템이 어떻게 동작하는지 파악하기 위해 정기적으로 이러한 세부사항('lscpu' 제외)을 캡처할 수 있습니다.

NSO의 관점에서

- ncs - 상태 | grep lock(그렙 잠금)

- 진행률 추적을 활성화합니다.
admin@ncs(config)# commit dry-run

cli{

로컬 노드 {

데이터 진행률 {

+ 모두 추적

+ 대상 {

+ 파일 progress-all.txt;

+ 형식 로그;

+ }

+ }

}

}

}

admin@ncs(config)# 커밋

- 다음 정보를 'n'초마다 캡처합니다(스크립트로 실행 가능).

시퀀스=0

ncs —status >& /dev/null; do

ncs —debug-dump ncs.dd.$((seq++);

ncs - 상태 > ncs.stat.$((seq++);

수면 30; #Configured according  대상 사용자

완료

다음은 이 문제를 완화하기 위해 수행할 수 있는 몇 가지 구제 단계입니다.

1. 다음과 같이 세션 수를 제한합니다(현재는 이 세트가 없습니다).

<세션 제한>

<세션 제한>

<context>rest</context>

<max-sessions>100</max-sessions>

</session-limit>

</세션 제한>

b. 감사 규칙을 사용하여 NSO 프로세스가 어떤 것에 의해 중단되었는지 확인하고, 중단되었을 경우 audit.log에 기록합니다.

sudo auditctl -a exit,always -F arch=b64 -S kill -k audit_kill

문제를 해결하고 분석하려면 audit.log, devel.log(level=trace로 설정하는 것이 좋음), ncs-java-vm.log 및 NB 로그와 함께 이전 세부사항이 필요합니다.

추가 정보

Q. NSO는 실제로 NB 애플리케이션의 RESTCONF 요청을 어떻게 처리합니까?

A. 노스바운드 애플리케이션이 RESTCONF 요청을 전송하면 NSO를 기반으로 하는 고유한 트랜잭션으로 처리됩니다. 즉, NSO는 전체 CDB를 잠글 수 있으며 현재 트랜잭션이 완료될 때까지 다른 트랜잭션을 허용하지 않습니다.이 작업을 수행하면 NSO의 트랜잭션 특성이 보존되며 문제가 있을 경우 롤백을 수행할 수 있습니다.

NSO 커밋 대기열은 각 후속 트랜잭션 요청이 완료되는 대로 처리할 수 있으며, devel.log에서 시작/완료되는 대로 트랜잭션 잠금을 추적할 수 있습니다. 많은 양의 쿼리가 수행되는 사용 사례에서는 NSO에 많은 오버헤드가 발생하고 트랜잭션이 예상보다 오래 커밋 대기열에 있습니다. RESTCONF 요청을 그룹화한 경우 트랜잭션 오버헤드가 줄어들기 때문에 처리량이 증가합니다. 또한 NSO는 단일 트랜잭션 내에서 동시에 최대한 많은 작업을 수행할 수 있습니다. 예를 들어, 트랜잭션에 2개의 디바이스 컨피그레이션 변경이 포함된 경우 NSO는 CDB를 잠그고, 두 디바이스에 동시에 접속하여 두 디바이스를 편집한 다음 트랜잭션을 완료할 수 있습니다. 이는 각각 1개의 디바이스를 포함하고 두 디바이스가 모두 변경된 2개의 트랜잭션과 대조됩니다. NSO는 첫 번째 트랜잭션에 대해 CDB를 잠그고, 첫 번째 디바이스를 편집하고, 트랜잭션을 완료한 다음, 두 번째 디바이스에 대해 동일한 단계를 수행할 수 있습니다.

관련 정보

- Cisco 기술 지원 및 다운로드