서버에 과부하가 걸리면 다른 요청을 차단하는 서비스를 구축하려고 합니다. 그러나 1분 평균 로드로는 충분하지 않습니다. 논리는 다음과 같습니다.
if load_average > core_count
return render 503
end
return the_requested_page
그러나 load_average 명령을 사용하여 컴퓨터에 스트레스를 주려고 하면 stress -c 12 -i 100 --timeout 10
다음과 같은 내용이 표시됩니다.
1, 3, 8, 15, 21, 20, 18, 15, 12, 11
^ stress program ends here
더 작은 해상도 로드 평균(1분 평균 대신 1-2초)을 얻으려면 어떻게 해야 합니까?
추가 정보, 이것을 사용하여 부하 평균을 읽었습니다.암호
답변1
로드 평균은 코어에서 계산됩니다. 참조Linux 부하 계산에 단순 1/5/15분 이동 평균이 사용되지 않는 이유는 무엇입니까?더 알아보기. 따라서 더 높은 해상도의 판독값을 얻을 수는 없습니다. 반대로 당신은할 수 있다복사 기능을 위한 사용자 공간 코드를 작성하는 것은 약간 까다로워 보입니다(특히 올바르게 수행하려면 많은 샘플링을 수행해야 하기 때문에 오버로드된 서버에 대한 어리석은 오버헤드처럼 보입니다).
대신, 결정의 근거로 로드 평균이 아닌 다른 것을 선택하는 것이 좋습니다. 아마도 서비스 자체에서 알고 있는 것일 수도 있습니다. 예를 들어, 응답 시간이 중앙값 임계값을 초과하고 물러나고 싶다면 어떻게 해야 합니까?