높은 로드 평균 문제를 해결하려면 어디서부터 시작해야 합니까?

높은 로드 평균 문제를 해결하려면 어디서부터 시작해야 합니까?

4개의 작업자 노드(4개의 CPU가 있는 Ubuntu 20.04)로 실행되는 kubernetes 클러스터가 있고 모든 노드에서 평균 로드가 높습니다. 다음은 노드 중 하나의 top 결과입니다. 맨 위

이 노드가 111개의 컨테이너를 실행하고 있기 때문에 이것이 예상되는지 여부는 확실하지 않습니다. 높은 로드 평균을 유발하는 다른 원인이 있을 수 있습니까? 아니면 단순히 컨테이너가 너무 많아서 더 많은 리소스가 필요한 것입니까?

답변1

로드 평균은 실행 중이거나 실행 대기 중인 프로그램의 수입니다.

Top은 훌륭하지만 CPU에서 실행 중이거나 실행을 기다리는 것의 절반만 제공합니다. 나머지 절반은 디스크 I/O가 완료되기를 기다리는 것입니다.

디스크 I/O의 경우 프로세스별 디스크 사용량을 표시하려면 atop누르는 것이 좋습니다 . d(일반적으로 이를 얻으려면 루트로 실행해야 합니다.)

답변2

일반적인 경험 법칙은 로드 평균이 호스트의 코어 수보다 커지는 것을 원하지 않는다는 것입니다. 그것이 이상적인 상황입니다. 그 이상으로 올라가는 것이 항상 문제가 되는 것은 아닙니다. 내 경험에 따르면 로드 평균만으로는 항상 문제를 나타내는 것은 아닙니다. 로드가 높거나 sys CPU 사용량이 높거나 iowait가 높으면 상황이 좋지 않을 가능성이 높습니다.

쿠버네티스를 사용하면서 제가 많이 듣는 말 중 하나는 리소스 제한을 설정해야 한다는 것입니다. 제한이 없으면 각 포드는 노드에 대한 전체 액세스 권한을 갖습니다. 올바른 크기의 애플리케이션은 단순한 IMO가 아닙니다. 특히 모든 사람이 k8s에 비클라우드 네이티브 앱을 사용하려고 하는 경우에는 더욱 그렇습니다.

제안에 따라 워크로드를 줄이거나, 작업자를 추가하거나(수평 확장), 노드에 리소스를 더 추가(수평 확장)하거나, 조합할 수 있습니다.

관련 정보