Gunicorn: Aumento de memória após um longo tempo de execução do serviço

Criado em 10 out. 2018  ·  3Comentários  ·  Fonte: benoitc/gunicorn

OI :
Eu uso flask + gunicorn para fazer um serviço de API. Porque eu quero compartilhar uma grande quantidade de dados entre os processadores de trabalho, então eu inicio os dados em gunicorn.conf e uso "gunicorn -c gunicorn.conf" para finalizá-los. Quaisquer dados em gunicorn.conf seriam feitos apenas uma vez, portanto, cada processador de trabalho compartilha um grande volume de dados em comum. O big data em meu programa está apenas pronto, sem operação de gravação. Mas quando eu inicio meu serviço e o executo por um longo tempo, às vezes a memória aumenta 1G repentinamente, acho que pode haver alguma operação de gravação no gunicorn que causa o mecanismo de cópia na gravação do sistema. E como faço para compartilhar o big data entre os processadores de trabalho? Ainda estou confuso com esse problema, aguardo sua resposta !!! Obrigado!

Comentários muito úteis

Isso está relacionado a # 1640.

A única outra maneira de lidar com isso seria fazer algo que evite o gerenciamento de memória do Python. Talvez o módulo mmap possa ajudar.

Todos 3 comentários

Isso está relacionado a # 1640.

A única outra maneira de lidar com isso seria fazer algo que evite o gerenciamento de memória do Python. Talvez o módulo mmap possa ajudar.

Obrigado!!! É muito útil!

OI:
Com as informações que você me deu, eu atualizo meu python 2.7 para 3.7 e uso gc.freeze () para evitar alguns objetos coletados pelo coletor de lixo. Desta vez, não parece que "a memória aumentou 1G repentinamente", mas fez com que a memória aumentasse lentamente até que cada memória do subprocessador aumentasse 500M +, e então parasse de crescer. Acho que gc.freeze () funciona e faz uma aparência de memória diferente. Espero que o trabalho que fiz seja útil para outras pessoas. Obrigado!

Esta página foi útil?
0 / 5 - 0 avaliações