OpenBSD의 릴레이가 모든 메모리를 사용하는 것을 방지하는 방법

OpenBSD의 릴레이가 모든 메모리를 사용하는 것을 방지하는 방법

나는 릴레이가 있는 OpenBSD "방화벽"을 가지고 있는데, 여기서 릴레이는 시스템이 완전히 응답하지 않을 때까지 사용 가능한 모든 메모리를 소비하기 시작합니다. 이는 사용자가 매우 큰 파일 전송을 시작할 때 발생합니다(relayd는 MinIO 클러스터의 로드 밸런서로 설정됨).

릴레이 문제를 해결하는 것은 해결해야 할 별도의 문제입니다.

릴레이와 모든 하위 프로세스가 시스템 중단을 방지하기 위해 사용할 수 있는 메모리 양을 제한하려면 어떻게 해야 합니까?

답변1

기본적으로 기반 데몬은 /etc/rc다음 섹션에 정의된 제한 사항에 따라 시작됩니다.daemonlogin.conf

daemon:\
    :ignorenologin:\
    :datasize=4096M:\
    :maxproc=infinity:\
    :openfiles-max=1024:\
    :openfiles-cur=128:\
    :stacksize-cur=8M:\
    :tc=default:

tc=default다른 모든 설정은 이 클래스에 정의된 설정 default(파일 앞부분에서 정의됨) 임을 나타냅니다 .

사용 가능한 메모리 양을 변경하려면 relayd이를 변경해야 합니다 datasize. 기본 설정은 4GB이며 컴퓨터에 따라 더 적게 필요할 수도 있습니다. 물론 이렇게 하면 다른 모든 데몬이 사용할 수 있는 메모리가 제한되지만 문제는 메모리가 제한된 시스템인 것 같으므로 이것이 좋은 생각일 수도 있습니다.

한도를 변경하고 싶다면구체적으로의 경우 relayd다른 데몬을 변경하지 않고 자체 제한 사항을 사용하여 파일에 새 클래스를 추가하는 등의 작업을 수행할 수 있습니다 ( 해당 클래스에 대한 다른 모든 제한 사항이 적용되도록 끝에 추가하는 것을 relayd잊지 마세요 ).:tc=daemon:daemon

relayd:\
    :datasize=1024M:\
    :tc=daemon:

그런 다음 클래스 _relayd에 사용자를 추가합니다 .relayd

# usermod -L relayd _relayd

전체 파일을 살펴보면 이 방법을 사용하여 더 많은 메모리를 사용할 수 있도록 하고, 더 많은 메모리를 사용할 수 있도록 하는 등의 작업을 수행 /etc/login.conf한다는 것을 알 수 있습니다 .vmdunboundopenfiles

관련 정보