No Couchbase, o gerenciamento de memória no serviço de consulta é fundamental para manter o serviço eficiente e responsivo, especialmente porque o serviço lida com um número crescente de consultas simultaneamente. Sem o gerenciamento adequado da memória, as coisas podem dar errado: consultas ávidas podem consumir muita memória, e o uso combinado da memória de várias consultas simultâneas pode sobrecarregar o serviço, levando a um desempenho prejudicado.
Felizmente, o serviço Query tem vários recursos que permitem aos usuários gerenciar o uso de memória das consultas e do serviço em geral.
Este blog explorará esses recursos em detalhes:
-
- Cota de memória por solicitação
- Limite de memória suave
- Cota de memória de documentos em todo o nó
Cota de memória por solicitação
Uma parte significativa do uso da memória do serviço Query vem de valores transitórios, que podem incluir documentos ou valores computados. A memória usada por esses valores transitórios será chamada de memória de documentos no blog.
O serviço Query recebe documentos do serviço Data como um fluxo de bytes codificado. Entretanto, a memória usada pelo valor associado ao documento pode ser muito maior do que o fluxo original. Isso ocorre porque o serviço Query decodifica o fluxo em uma estrutura que pode ser grande, pois precisa armazenar todos os campos, valores e quaisquer objetos aninhados. O serviço Query é otimizado para desempenho e não para compactação.
O que acontece se uma consulta com uso intensivo de recursos aparecer e começar a consumir uma grande quantidade de memória do documento? Ela pode acabar consumindo muita memória e fazer com que outras consultas sejam interrompidas. Como podemos evitar uma ganancioso de afetar a execução de outras consultas ativas?
É exatamente nesse ponto que o cota de memória por solicitação o recurso entra em cena!
Desde o Couchbase 7.0, o serviço Query fornece uma configuração chamada cota de memória para limitar a quantidade máxima de memória do documento que uma solicitação de consulta pode usar em um determinado momento durante sua execução.
Essa cota de memória por solicitação funciona encerrando uma consulta se ela exceder sua cota, enquanto permite que todas as outras consultas ativas continuem a ser executadas. Isso garante que somente a consulta ambiciosa seja interrompida, evitando que ela afete o desempenho das outras consultas.
A cota de memória não corresponde ao uso da memória do sistema operacional. Ela somente é responsável pelo uso da memória do documento e não por qualquer memória usada no heap, na pilha, nos operadores de execução, etc.
Como funciona a cota de memória?
A cota de memória por solicitação pode ser considerada como a configuração de um pool de memória de documentos para uma solicitação de consulta. O tamanho do pool é determinado pelo valor da cota de memória da consulta.
Quando a consulta requer um documento/valor, ela aloca o tamanho do documento/valor desse pool. Quando o valor/documento não é mais necessário, o tamanho alocado é devolvido ao pool para ser reutilizado pela solicitação.
Em um determinado momento, a quantidade total de memória do documento que está sendo usada pela solicitação de consulta não pode exceder o tamanho de seu pool, ou seja, sua cota de memória. Se a consulta tentar usar mais memória de documento do que a disponível em seu pool, a solicitação será encerrada e um erro será retornado.
É importante observar que o serviço Query é altamente paralelizado e os operadores podem ser executados simultaneamente. Isso significa que o fato de uma consulta exceder a cota de memória pode variar entre as execuções. Isso ocorre porque, dependendo das especificidades de cada execução, a quantidade de memória do documento que está sendo usada (e, portanto, alocada do pool de solicitações) pode variar, mesmo no mesmo estágio de execução.
Como configurar a cota de memória
A cota de memória por solicitação pode ser definida em um cluster, nó e nível de solicitação.
-
- Unidade: MiB
- Padrão: 0, ou seja, não há limite para a quantidade de memória do documento que uma solicitação pode usar
Nível de cluster
Defina a cota de memória para cada nó do Query no cluster com a opção queryMemoryQuota configuração em nível de cluster. O valor no nível do cluster é mantido e, quando definido, substitui a configuração no nível do nó para cada nó de consulta.
-
- Saiba como definir uma configuração em nível de cluster aqui
Nível do nó
Defina a cota de memória para um nó de consulta específico com o comando cota de memória configuração em nível de nó. O valor definido no nível do nó é a cota de memória padrão para todas as solicitações de consulta executadas no nó. O valor em nível de nó não é mantido e é sobrescrito quando a configuração em nível de cluster é modificada.
-
- Saiba como definir uma configuração em nível de nó aqui
Nível de solicitação
Defina a cota de memória para uma solicitação de consulta específica com a opção memory_quota parâmetro. O parâmetro de nível de solicitação substitui o valor da configuração de nível de nó. Entretanto, se a configuração de nível de nó for maior que zero, o valor do nível de solicitação será limitado pelo valor do nível de nó.
-
- Saiba como definir um parâmetro em nível de solicitação aqui
Limite de memória flexível do serviço de consulta
Agora que exploramos como limitar o uso da memória do documento de uma consulta, você deve estar se perguntando: existe uma maneira de limitar o uso da memória do serviço Query?
O serviço Query não tem nenhuma configuração para impor um limite rígido ao uso de memória do serviço. Isso ocorre porque a linguagem de programação usada para desenvolver o SQL++ não fornece um mecanismo para impor um limite rígido ao uso de memória em tempo de execução. Mas ela fornece um mecanismo para ajustar o limite de memória flexível...
Portanto, no Couchbase 7.6.0, o cota de nós foi introduzida para ajustar o limite de memória flexível do serviço Query!
Como esse é um limite flexível, não há garantia de que o uso da memória do serviço Query sempre ficará estritamente abaixo dele ou que não ocorrerão condições de falta de memória. No entanto, é feito um esforço para manter o uso da memória do serviço Query abaixo desse limite, executando o coletor de lixo (GC) com mais frequência quando esse limite é ultrapassado ou se aproxima.
Observação importante:
Se o uso da memória permanecer próximo ao limite flexível, o GC será executado de forma agressiva, o que pode causar alta utilização da CPU.
Como configurar a cota do nó
A cota do nó pode ser definida no nível do cluster, do nó e da solicitação.
-
- Unidade: MiB
- Padrão: 0
- Mínimo: 1
Embora o valor mínimo da cota de nós seja de 1 MiB, defina a cota de nós para valores práticos, dependendo das cargas de trabalho e dos recursos do sistema.
Nível de cluster
Defina a cota do nó para cada nó do Query no cluster com a opção queryNodeQuota configuração em nível de cluster. O valor no nível do cluster é mantido e, quando definido, substitui a configuração no nível do nó para cada nó de consulta.
-
- Saiba como definir uma configuração em nível de cluster aqui
Observação importante:
Uma maneira de definir essa configuração em todo o cluster é usar o Console da Web do Couchbase. No Console da Web, isso pode ser configurado na seção Cota de memória por nó do servidor na página Configurações.
Esta seção destina-se especificamente à configuração da cota de nós no nível do cluster do serviço Query e não deve ser confundida com a configuração da cota de memória no nível do cluster.
Nível do nó
Defina a cota do nó para um nó de consulta específico com o comando cota de nós configuração em nível de nó. O valor definido no nível do nó é a cota de memória padrão para todas as solicitações de consulta executadas no nó. O valor em nível de nó não é mantido e é sobrescrito quando a configuração em nível de cluster é modificada.
-
- Saiba como definir uma configuração em nível de nó aqui
Como configurar o limite de memória temporária
O limite de memória temporária do serviço de consulta é definido usando o valor da cota do nó. Se não for definido, será calculado um valor padrão.
Cota do nó
Se a cota do nó estiver definida para um nó, esse será o limite de memória temporária. O limite de memória temporária será limitado a um valor máximo permitido, que é calculado por meio das etapas a seguir:
a) A diferença entre a RAM total do sistema e o 90% da RAM total do sistema é calculada.
RAM total do sistema - (0,9 * RAM total do sistema)
b) Se a diferença for maior que 8 GiB, o limite máximo de memória temporária será:
RAM total do sistema - 8 GiB
c) Se a diferença for de 8 GiB ou menos, o limite máximo de memória temporária será definido como 90% da RAM total do sistema.
Se a cota do nó exceder o máximo calculado, o limite de memória temporária será silenciosamente definido como o máximo.
Padrão
Se a configuração de cota do nó não estiver definida para um nó, um valor padrão será calculado para o limite flexível usando as etapas a seguir:
a) A diferença entre a RAM total do sistema e o 90% da RAM total do sistema é calculada.
RAM total do sistema - (0,9 * RAM total do sistema)
b) Se a diferença for maior que 8 GiB, o limite de memória temporária padrão será:
RAM total do sistema - 8 GiB
c) Se a diferença for de 8 GiB ou menos, o limite de memória temporária padrão será definido como 90% da RAM total do sistema.
Cota de memória de documentos em todo o nó
E se uma carga de trabalho tiver uma consulta que exija uma grande quantidade de memória para ser executada. Aplicar uma cota de memória por solicitação pode não ser o ideal, pois essa consulta pode ser encerrada com frequência por exceder a cota. Como essa consulta pode ser executada com êxito e, ao mesmo tempo, proteger o serviço de consulta contra o uso excessivo de memória?
Considere outro cenário com várias consultas sendo executadas simultaneamente, cada uma com uma cota de memória por solicitação definida. Nesse cenário, o uso de memória do serviço tornou-se muito alto. Mas o uso da memória do documento das consultas permanece abaixo de suas respectivas cotas. Portanto, nenhuma consulta é encerrada. Como resultado, o uso geral da memória do serviço de consulta permanece alto, causando problemas. Como isso pode ser resolvido?
A partir do Couchbase 7.6.0, o serviço de consulta tem um mecanismo para limitar a quantidade cumulativa de memória de documento que as consultas ativas podem usar! A introdução de uma cota de memória de documento em todo o nó tenta resolver esses desafios.
Como funciona a cota em todo o nó?
A cota em todo o nó pode ser considerada como a configuração de um pool de memória de documentos para todo o serviço Query em um nó.
Quando a cota de nó é definida, um sessão de memória é criado para cada solicitação. Por padrão, essa sessão começa com um tamanho inicial de 1 MiB. Quando a cota de todo o nó é configurada, 1 MiB é alocado para cada prestador de serviços e subtraído do pool de todo o nó. Essa alocação padrão garante que cada prestador de serviços tenha pelo menos uma quantidade mínima de espaço reservado, assegurando que as solicitações recebidas sempre possam ser atendidas.
Quando uma solicitação requer um valor/documento, o tamanho do valor/documento é alocado a partir de seu sessão. Se a sessão não tiver memória suficiente para essa alocação, ela crescer em incrementos mínimos de 1 MiB para acomodar a solicitação de alocação. A memória adicional necessária para esse crescimento é alocada do pool de todo o nó.
Se a sessão de memória de uma solicitação ativa tentar crescer além da memória restante disponível no pool de todo o nó, a solicitação será interrompida e um erro será retornado.
Quando a solicitação não precisa mais do valor/documento, ela retorna o tamanho alocado de volta ao seu sessão.
A memória da sessão (excluindo os 1 MiB da reserva inicial do servidor) só é devolvida ao pool de todo o nó quando a execução da solicitação é concluída.
A qualquer momento, o tamanho total de todas as sessões de memória não pode exceder o tamanho da cota de todo o nó.
É importante entender que essa sessão de memória não deve ser confundida com o pool por solicitação que é configurado quando a cota de memória é definida para uma solicitação. É possível configurar uma cota em todo o nó e uma cota de memória por solicitação. Ler Configuração da cota de documentos em todo o nó e da cota de memória por solicitação seção abaixo para saber mais.
Dessa forma, a cota em todo o nó coloca um limite na quantidade de memória do documento que está sendo usada por todas as solicitações ativas.
A cota de documentos em todo o nó só pode ser configurada quando a configuração de cota do nó for explicitamente definido para um nó. O tamanho dessa cota é calculado usando duas configurações de consulta, cota de nós (explorado em uma seção anterior) e valor da cota do nó em porcentagem.
Como configurar a porcentagem do valor da cota do nó?
O valor percentual da cota do nó é a porcentagem da cota do nó dedicada à memória de conteúdo de valor rastreado/"memória de documento" em todas as solicitações ativas.
A porcentagem do valor da cota do nó pode ser definida no nível do cluster e do nó.
-
- Unidade: MiB
- Padrão: 67
- Mínimo: 0
- Máximo: 100
Nível de cluster
Defina a porcentagem do valor da cota do nó para cada nó de consulta no cluster com a opção queryNodeQuotaValPercent configuração em nível de cluster. O valor no nível do cluster é mantido e, quando definido, substitui a configuração no nível do nó para cada nó de consulta.
-
- Saiba como definir uma configuração em nível de cluster aqui
Nível do nó
Defina a porcentagem do valor da cota do nó para um nó de consulta específico com a opção node-quota-val-percent configuração em nível de nó. O valor definido no nível do nó é a cota de memória padrão para todas as solicitações de consulta executadas no nó. O valor em nível de nó não é mantido e é sobrescrito quando a configuração em nível de cluster é modificada.
-
- Saiba como definir uma configuração em nível de nó aqui
Como configurar a cota de memória de documentos em todo o nó
O tamanho da cota de memória do documento em todo o nó é calculado em relação à cota do nó. A cota do nó deve seja definido para que a cota de memória do documento em todo o nó seja configurada.
O tamanho do pool em todo o nó é calculado usando as seguintes etapas:
1. Calcule a porcentagem da cota do nó dedicada ao rastreamento da memória do documento em todas as consultas ativas usando a seguinte fórmula:
cota de nó * cota de nó-val-percent / 100
2. Calcule o valor mínimo permitido para a cota de memória de documentos em todo o nó.
A execução de instruções SQL++ é gerenciada por prestadores de serviços. Quando uma consulta deve ser executada, ela é atribuída a um thread de servidor que é responsável por sua execução. O serviço de consulta é configurado com vários servidores para lidar com as solicitações recebidas. Há dois tipos de servidores, Servidores ilimitados e além de prestadores de serviços.
O mecanismo de consulta reserva 1 MiB de memória de documento para cada servidor. Portanto, o valor inicial padrão da sessão de memória de cada solicitação é de 1 MiB. Isso significa que o uso da memória do documento de linha de base será o número total de servidores ilimitados e adicionais, medido em MiB.
Portanto, o tamanho da cota de memória do documento em todo o nó deve ser pelo menos igual ao número de servicers, medido em MiB.
Fórmula 1
Cota reservada para os prestadores de serviços =.
(número de servidores não limitados + número de mais servidores) MiB
3. O tamanho da cota de memória de documentos em todo o nó é calculado usando a seguinte fórmula:
Fórmula 2
Tamanho da cota de memória de documentos em todo o nó
=
MAX( node-quota * node-quota-val-percent / 100, Quota reservada para prestadores de serviços)
-
- A cota reservada para os servicers é calculada usando Fórmula 1
Esse é o tamanho máximo permitido de todas as sessões de memória entre solicitações ativas e inclui a reserva inicial para cada prestador de serviços.
Cálculo da cota disponível no pool para o crescimento da memória do documento
A reserva inicial para os servidores é deduzida da cota de memória de documentos em todo o nó para o nó. Qualquer espaço restante no pool de memória em todo o nó pode ser usado por cada solicitação ativa para aumentar o uso da memória do documento além da reserva inicial de 1 MiB.
Essa cota restante disponível para o crescimento da memória do documento é calculada usando a seguinte fórmula:
Fórmula 3
Tamanho da cota de memória do documento em todo o nó disponível para o crescimento das sessões de memória das solicitações ativas =.
Tamanho da cota de memória de documentos em todo o nó - Cota reservada para servicers
-
- O tamanho da cota de memória do documento em todo o nó é calculado em Fórmula 2
- A cota reservada para os servicers é calculada usando Fórmula 1
É importante definir valores apropriados de node-quota e node-quota-val-percent que sejam práticos e adequados às cargas de trabalho. Um exemplo para ilustrar a importância disso:
Exemplo
Considere um nó de consulta com 32 servidores ilimitados e 128 servidores adicionais. O administrador define a cota do nó como 10 MiB. O node-quota-val-percent é o valor padrão de 67.
Usando Fórmula 2 para calcular o tamanho da cota de memória do documento em todo o nó:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
Size of node-wide document memory quota = MAX( node-quota * node-quota-val-percent / 100, Quota reserved for servicers) = MAX( node-quota * node-quota-val-percent / 100, (number of unbounded servicers + number of plus servicers) MiB ) = MAX ( 10 * 67 / 100 MiB, (32+128) MiB ) = MAX ( 6.7 MiB, 160 MiB) = 160 MiB |
Usando Fórmula 3 para calcular a quantidade de memória do documento disponível no pool de todo o nó disponível para o crescimento da memória das solicitações:
|
1 2 3 4 5 6 |
= Size of node-wide document memory quota - (number of unbounded servicers + number of plus servicers) MiB = 160 MiB - (32+128) MiB = 160 MiB - 160 MiB = 0 MiB |
Isso significa que não há espaço para o crescimento da memória de documentos de solicitações além de sua reserva inicial de 1 MiB. Em outras palavras, cada solicitação é limitado para usar um máximo de 1 MiB de memória de documento.
Além disso, a cota de nó de 10 MiB é muito pequena, e a coleta de lixo provavelmente será forçada a ser executada com frequência, causando alta utilização da CPU.
Relatórios de números de memória de documentos
Se a cota de memória tiver sido definida para uma solicitação ou se um pool de memória de documento em todo o nó tiver sido configurado, as informações sobre o mesmo serão relatadas em vários recursos do SQL++ que serão explorados a seguir. Essas informações são úteis para a depuração.
Saída de resposta
a) Métricas:
O usedMemory no campo métricas da resposta da consulta informa o marca d'água alta (HWM) uso da memória do documento da consulta em bytes.
O serviço Query é altamente paralelizado, e os operadores podem ser executados simultaneamente. Como resultado, o usedMemory podem variar entre as execuções da mesma consulta. Isso ocorre porque, dependendo das especificidades de cada execução, o uso da memória do documento HWM pode ser diferente.
|
1 2 3 4 5 6 7 8 |
"metrics": { "elapsedTime": "19.07875ms", "executionTime": "18.909916ms", "resultCount": 10000, "resultSize": 248890, "serviceLoad": 2, "usedMemory": 341420 } |
b) Seção de controles:
Se o controles A configuração de consulta está ativada e o cota de memória configurado para a solicitação, o memoryQuota no campo controles da resposta da consulta informa o valor da cota de memória definida.
|
1 2 3 4 5 6 7 8 9 10 11 12 |
"controls": { "scan_consistency": "unbounded", "use_cbo": "true", "memoryQuota": "25", "n1ql_feat_ctrl": "0x4c", "disabledFeatures":[ "(Reserved for future use) (0x40)", "Encoded plans (0x4)", "Golang UDFs (0x8)" ], "stmtType": "SELECT" } |
-
- Saiba mais sobre a configuração de controles aqui
Espaços de chaves do sistema
system:completed_requests, system:active_requests
Na entrada de uma solicitação nesses espaços de chave do sistema:
O usedMemory é o campo HWM uso da memória do documento da consulta em bytes. O serviço de consulta é altamente paralelizado, e os operadores podem ser executados simultaneamente. Como resultado, o usedMemory podem variar entre as execuções da mesma consulta. Isso ocorre porque, dependendo das especificidades de cada execução, o uso da memória do documento HWM pode ser diferente.
O memoryQuota é o valor da cota de memória definida para a solicitação
Configuração da cota de memória por solicitação e da cota de documentos em todo o nó
Conforme descrito no Cota de memória por solicitação seção, se uma solicitação tiver uma cota de memória configurada, a quantidade máxima de memória do documento que ela pode usar a qualquer momento durante sua execução será limitada pela cota de memória.
Além disso, conforme explicado no Cota de memória de documentos em todo o nó Quando a cota de nó e uma cota de memória de documento em todo o nó são configuradas, cada solicitação recebe sua própria "sessão de memória". Qualquer aumento no tamanho dessas sessões é alocado a partir da cota de memória do documento em todo o nó.
Se uma cota de memória do documento em todo o nó estiver configurada e uma solicitação tiver uma cota de memória definida, o uso da memória do documento da solicitação de consulta será limitado por ambos cotas.
Como seria realizada uma alocação de valor/documento?
Quando a solicitação requer um documento/valor, as etapas a seguir são executadas durante o processo de alocação:
- Alocação de sessão de memória:
-
- A solicitação primeiro tenta alocar memória para o documento a partir de sua sessão de memória.
- Se houver espaço suficiente na sessão, a alocação será bem-sucedida.
- Se não houver espaço suficiente na sessão, a sessão tentará aumentar seu tamanho alocando a partir da cota de memória do documento em todo o nó. (ou seja, do "pool de memória de documentos em todo o nó").
- Se não houver espaço suficiente para o crescimento da sessão no pool de todo o nó, a solicitação será interrompida e um erro será retornado.
- Solicitar alocação de cota de memória:
-
- Se a alocação da sessão for bem-sucedida, a solicitação tentará alocar memória para o documento a partir de sua cota de memória. (ou seja, de seu "pool de memória de solicitação").
- Se houver espaço suficiente em sua cota de memória, a alocação será bem-sucedida e a solicitação prosseguirá.
- Se não houver espaço restante suficiente na cota de memória, a solicitação falhará e um erro será retornado.
Monitoramento com sistema:sinais vitais
O espaço de chaves do sistema sistema:sinais vitais contém informações importantes sobre cada nó do Query no cluster, inclusive informações relacionadas ao uso da memória e da CPU, coleta de lixo e muito mais. Os usuários podem usar esse espaço-chave do sistema para monitorar a integridade e os sinais vitais dos nós do Query.
Há duas maneiras de acessar essas informações:
1. Consulte o espaço-chave system:vitals usando o SQL++.
SELECT * FROM system:vitals;
-
- Acessar os sinais vitais por nó usando o serviço de consulta /admin/vitais ponto final.
curl -u $USER:$PASSWORD $QUERY_NODE_URL/admin/vitals
Abaixo está um exemplo de um registro em sistema:sinais vitais para um nó de consulta.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
{ "bucket.IO.stats": { "travel-sample": { "reads": 52090 } }, "cores": 12, "cpu.sys.percent": 0.005, "cpu.user.percent": 0.0056, "ffdc.total": 0, "gc.num": 64352224, "gc.pause.percent": 0, "gc.pause.time": "4.479336ms", "healthy": true, "host.memory.free": 321028096, "host.memory.quota": 10485760000, "host.memory.total": 38654705664, "host.memory.value_quota": 7025459200, "load": 0, "loadfactor": 6, "local.time": "2024-12-05T17:21:25.609+05:30", "memory.system": 584662408, "memory.total": 3884613696, "memory.usage": 25302328, "node": "127.0.0.1:8091", "node.allocated.values": 613916, "node.memory.usage": 251658240, "process.memory.usage": 0, "process.percore.cpupercent": 0, "process.rss": 629309440, "process.service.usage": 0, "request.active.count": 1, "request.completed.count": 41, "request.per.sec.15min": 0.0221, "request.per.sec.1min": 0.0136, "request.per.sec.5min": 0.017, "request.prepared.percent": 0, "request.queued.count": 0, "request_time.80percentile": "63.969209ms", "request_time.95percentile": "74.865437ms", "request_time.99percentile": "150.904625ms", "request_time.mean": "37.019323ms", "request_time.median": "39.115791ms", "servicers.paused.count": 0, "servicers.paused.total": 0, "temp.hwm": 0, "temp.usage": 0, "total.threads": 411, "uptime": "12m48.431007375s", "version": "7.6.0-N1QL" } |
Como o serviço de consulta aciona o coletor de lixo?
A partir da versão 7.6.0, o serviço Query verifica rotineiramente se o coletor de lixo (GC) foi executado nos últimos 30 segundos. Se não tiver sido, o GC é acionado para ser executado. Durante essa verificação, a quantidade de memória livre do sistema também é monitorada. Se a quantidade de memória livre for menor que 25%, será feita uma tentativa de devolver o máximo possível de memória ao sistema operacional.
Executar o coletor de lixo sob demanda
A partir da versão 7.6.0, o serviço Query fornece um ponto de extremidade REST /admin/gc que pode ser invocado para executar o coletor de lixo. Esse ponto de extremidade pode ser chamado para acionar uma execução do GC em uma tentativa de reduzir a utilização da memória.
Para forçar a execução do GC, emita uma solicitação GET para a API:
curl -u $USER:$PASSWORD $QUERY_NODE_URL/admin/gc
Para forçar a execução do GC e tentar retornar o máximo possível de memória para o sistema operacional, emita uma solicitação POST para a API
curl -X POST -u $USER:$PASSWORD $QUERY_NODE_URL/admin/gc
-
- Saiba mais sobre esse ponto de extremidade aqui.
Observação importante:
A execução agressiva do coletor de lixo pode causar alta utilização da CPU.