Nginx 높은 메모리 사용량 중복 SSL

Nginx 높은 메모리 사용량 중복 SSL

많은 가상 호스트(~600)로 실행되는 NGINX가 있습니다. 불행하게도 NGINX 작업자는 각각 대용량 메모리(~6GB)를 사용하고 있습니다.

메모리(문자열)를 검사하면 일반적으로 SSL 인증서에서 찾을 수 있는 중복된 메타 정보가 생성됩니다(최대 100,000회 이상 중복됨). 우리는 소수의 다른 인증서만 사용합니다.

나는 ssl_session_cache가 범인일 수 있다고 의심했습니다. 다음과 같이 설정됩니다.

ssl_session_cache 공유:SSL:10m;

이는 우리의 메모리 사용량(10MB*600=6GB)에 합산될 것입니다. 그러나 문서에 따르면http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_session_cache

동일한 이름의 캐시를 여러 가상 서버에서 사용할 수 있습니다.

그리고 그 값을 늘려도 메모리 사용량에는 아무런 영향이 없습니다.

우리는 또한 lua-resty에 크게 의존하지만 이것이 SSL 처리 방법에 영향을 미쳐서는 안 됩니다.

이렇게 높은 메모리 사용량을 발생시키는 원인이 무엇인지 알고 계십니까?

nginx 버전: openresty/1.13.6.1

답변1

나는 nginx에 각 가상 서버의 설정에 대해 별도의 메모리가 할당되어 있고 해당 메모리 영역에 사용 중인 인증서의 복사본이 포함되어 있기 때문에 이런 일이 발생한다고 가정합니다. 이는 별도의 인증서가 몇 개만 있어도 별도의 가상 서버에서 사용될 때 메모리에서 중복된다는 의미입니다.

SSL 세션 캐시에는 인증서 데이터가 포함되지 않으며 클라이언트와 서버 간의 활성 SSL 세션에 대한 세션 데이터만 포함됩니다.

답변2

우리는 주로 인증을 위해 Openresty를 사용하고 있었습니다. Openresty가 높은 메모리 사용량을 유발한다고 의심했기 때문에 모든 lua 부분을 추출했습니다. auth_request이제 인증을 위해 openresty로 다시 프록시되는 nginx가 있습니다.

동일한 수의 호스트와 SSL 인증서를 사용하면 이제 메모리 사용량이 훨씬 줄어듭니다(6GB 대신 작업자당 ~150MB). 또한 openresty는 무시할 수 있는 양의 메모리만 사용합니다. 따라서 우리 구성의 다른 부분과 결합하여 openresty에 몇 가지 문제가 있었던 것 같습니다.

이것이 원래 질문에 대한 정확한 답변은 아니지만, 우리와 이 문제에 직면한 다른 모든 사람에게 유용한 해결 방법이 되기를 바랍니다.

관련 정보