![바니시는 170회 반복됩니다.](https://linux55.com/image/187395/%EB%B0%94%EB%8B%88%EC%8B%9C%EB%8A%94%20170%ED%9A%8C%20%EB%B0%98%EB%B3%B5%EB%90%A9%EB%8B%88%EB%8B%A4..png)
답변1
스레드
당신이 보는 것은 htop
바니시 프로세스가 아니라 바니시 패턴입니다.
Varnish에는 장기 실행 프로세스가 2개만 있습니다.
- 메인 프로세스(사용자 소유
varnish
) - 작업자 프로세스(
vcache
사용자 소유)
이렇게 많이 나타나는 이유는 Varnish가 시스템이 트래픽 급증을 처리할 수 있을 만큼 충분히 반응하기를 원하기 때문입니다. 새 스레드를 생성하는 것은 리소스 측면에서 비용이 많이 들고 시스템 속도를 저하시킬 수 있습니다.
이것이 바로 Varnish가 기본적으로 각각 100개의 스레드를 포함하는 2개의 스레드 풀을 갖는 이유입니다. 수요가 증가함에 따라 Varnish는 스레드 풀당 5,000개의 스레드로 확장할 수 있습니다.
thread_pool_min
이 숫자는 런타임 설정을 통해 구성할 수 있습니다 thread_pool_max
.
활성 스레드는 최소 200개, 최대 10,000개입니다.
다음을 통해 이러한 값을 볼 수 있습니다.
varnishadm param.show thread_pool_min
varnishadm param.show thread_pool_max
기본값을 변경하려면 add -p thread_pool_min=x
및 -p thread_pool_max=x
to 프로세스를 사용할 수 있습니다. varnishd
이 값들은 각 스레드 풀에 적용되며 스레드 풀이 2개이므로 최소값과 최대값에 2가 곱해지게 된다는 점 잊지 마세요.
실행하면 varnishstat -f MAIN.threads
현재 활성 스레드 수가 표시됩니다.
메모리
Varnish의 메모리 소비는 부분적으로는 캐시의 개체에 따라, 부분적으로는 작업자 스레드 내의 활동에 따라 달라집니다.
객체 스토리지
-s
런타임 매개변수는 varnishd
개체 캐시의 크기를 제한합니다. 그러나 임시 콘텐츠를 저장하고 캐시할 수 없는 데이터를 임시로 호스팅하는 바인딩되지 않은 임시 저장소도 있습니다.
다음 명령을 사용하면 개체 및 임시 저장소를 모니터링할 수 있습니다.
varnishstat -f "SMA.*.g_bytes" -f "SMA.*.g_space"
SMA.s0.g_bytes
사용 중인 객체 메모리의 양을 모니터링합니다.SMA.s0.g_space
객체 스토리지에 남아 있는 공간의 양을 모니터링합니다.SMA.Transient.g_bytes
사용 중인 임시 메모리 저장소의 양을 모니터링합니다.SMA.Transient.g_space
사용 가능한 임시 메모리 저장소의 양을 모니터링합니다. 임시 저장소는 기본적으로 무한하므로 대부분의 경우 이 값은 0이어야 합니다.
캐시의 각 개체에는 메모리 소비 측면에서도 약간의 오버헤드가 있습니다. 이는 상당히 작지만 캐시에 있는 개체 수가 많을수록 오버헤드가 커집니다.
다음 명령을 사용하면 캐시에 있는 개체 수를 확인할 수 있습니다.
varnishstat -f MAIN.n_object
작업 공간 메모리
스레드도 메모리를 소비합니다. 각 스레드에는 상태 추적에 사용할 수 있는 작업 공간 메모리가 있습니다.
- 이것클라이언트 작업 공간로 설정되어 있습니다64KB클라이언트 요청을 처리하는 작업자 스레드에서 사용되는 각 스레드
- 이것백엔드 작업공간백엔드 연결에 참여하는 데 사용되는 작업자 스레드입니다. 각 스레드는 다음을 소비할 수도 있습니다.64KB스레드당
- 이것세션 작업공간TCP 세션 정보를 저장하는 데 사용됩니다. 이들 각각
다음 명령을 사용하여 각 작업자 스레드 유형에 대한 작업 공간 제한을 표시할 수 있습니다.
varnishadm param.show workspace_client
varnishadm param.show workspace_backend
varnishadm param.show workspace_session
스택 공간
각 작업자 스레드는 스택 공간을 사용할 수도 있습니다. 이는 Varnish가 의존하는 라이브러리에서 사용됩니다. 스레드당 기본 제한은 다음과 같습니다.48KB.
다음 명령을 사용하면 시스템의 제한을 확인할 수 있습니다.
varnishadm param.show thread_pool_stack
결론적으로
광택 캐시, 오픈 소스 버전의 Varnish는 자체 총 메모리 공간을 제한할 수 없습니다. 객체 스토리지를 제한할 수 있습니다. 임시 저장소의 크기를 제한할 수도 있지만 이로 인해 몇 가지 성가신 부작용이 발생할 수 있습니다.
기본적으로 캐시 크기, 임시 저장소 및 트래픽 패턴에 따라 다릅니다.
광택 회사총 메모리 사용량을 제한하는 기능. Varnish의 상용 버전으로, 전용 스토리지 엔진인 Varnish를 제공합니다.MSE(대용량 저장 엔진).
평균 제곱 오차이라는 기능이 있습니다.메모리 관리자객체 스토리지, 임시 스토리지, 작업 공간 메모리 및 스택 공간을 고려합니다. 불균형이 있는 경우,평균 제곱 오차추가 메모리 요구 사항을 수용하기 위해 캐시 크기가 줄어듭니다.