SSL duplicado de uso de memória alta Nginx

1

Temos um NGINX rodando com muitos hosts virtuais (~ 600) Infelizmente os funcionários do NGINX estão usando um grande pedaço de memória residencial (~ 6GB)

Ao inspecionar a memória (strings), ela gera a meta informação duplicada que você normalmente encontra em certificados SSL (duplicados até mais de 100.000 vezes). Nós só usamos um punhado de certs diferentes.

Eu suspeitava que o ssl_session_cache poderia ser o culpado. Está definido para

ssl_session_cache shared:SSL:10m;

que seria bem adicionado ao nosso uso de memória (10MB * 600 = 6GB) Mas, de acordo com os documentos link

A cache with the same name can be used in several virtual servers.

E aumentar esse valor aparentemente não tem efeito no uso da memória.

Também dependemos muito de lua-resty, mas isso não deve afetar o modo como o SSL é tratado?

Você sabe o que pode estar causando esse alto uso de memória?

versão nginx: openresty / 1.13.6.1

    
por user2474697 02.03.2018 / 14:28

2 respostas

0

Estávamos usando o Openresty principalmente para autenticação. Como estávamos suspeitando que o Openresty causasse o alto uso de memória, extraímos todas as partes de lua com um auth_request . Agora, temos um nginx que faz o proxy de volta para openresty para autenticação.

Com o mesmo número de hosts e certificados SSL, agora temos um uso de memória muito menor (~ 150MB por trabalhador, em vez de 6GB). Também openresty usa apenas uma quantidade insignificante de memória. Portanto, parece ter havido algum problema com o openresty em combinação com outras partes da nossa configuração.

Embora isso não corresponda exatamente à pergunta original, é uma solução útil para nós e esperamos que qualquer outra pessoa que tenha esse problema.

    
por 09.04.2018 / 15:12
0

Suponho que isso acontece porque o nginx tem uma memória separada alocada para as configurações de cada servidor virtual e essa área de memória inclui uma cópia do certificado sendo usado. Isso implica que, mesmo se você tiver apenas alguns certificados separados, eles serão duplicados na memória quando forem usados em servidores virtuais separados.

O cache de sessão SSL não contém dados de certificado, ele contém apenas dados da sessão para sessões SSL ativas entre clientes e o servidor.

    
por 03.03.2018 / 00:16