A atualização para versões mais recentes do GitHub Enterprise Server normalmente aumenta o consumo de recursos. Cada versão de recurso adiciona novas funcionalidades, algumas habilitadas por padrão, outras opcionais, o que requer mais capacidade de processamento. Os padrões de uso do cliente também afetam a demanda; por exemplo, empresas com dezenas de milhares de organizações podem observar maior uso de recursos.
Os aumentos de recursos geralmente aparecem como maior utilização da CPU, mais IOPS (operações de E/S por segundo), maior uso de memória ou maiores pendências na fila do Aqueduct. Para se preparar para essas alterações, verifique a capacidade disponível do sistema e aplique as recomendações de correção antes de atualizar. Execute essas verificações durante os horários mais movimentados do dia e da semana para obter resultados mais precisos.
Requisitos de recursos
Antes de atualizar sua instância, é crucial verificar se o sistema atende aos requisitos de recursos necessários:
- Uso da CPU abaixo de 70%
- Uso de memória abaixo de 70%
- Disco não saturado
- Fila de Unicorn abaixo de 200 a 300
- Lista de pendências do Aqueduct em 1 a 2 horas
Uso da CPU abaixo de 70%
-
Verificar a utilização da CPU. No Console de Gerenciamento, acesse a página do monitor (
https://HOSTNAME.com:8443/setup/monitor
) e exiba o grafoCPU
.- Se a utilização estiver regularmente abaixo de 70%, continue para o Uso de memória.
- Se a utilização estiver regularmente acima de 70%, o sistema não atenderá aos critérios de atualização.
-
Compare a utilização com a média da carga da CPU. A comparação ajuda a identificar a possível saturação do disco.
-
No grafo
Load
, clique em curto prazo para mostrar apenas a linha de curto prazo. Localize o valor da carga de pico. -
No grafo
CPU
, clique em ocioso para mostrar apenas a linha ociosa. Observe o valor ocioso no mesmo carimbo de data/hora. -
Calcule a utilização:
100 – idle
-
Calcule o percentual médio da carga:
(peak load value ÷ number of vCPUs) × 100
-
-
Interprete os resultados.
Se o percentual médio de carga da CPU for maior que 50% acima da utilização, isso provavelmente indicará a contenção de recursos. Não prossiga com a atualização até que você tenha investigado a possível saturação de disco (consulte Disco não saturado).
Uso de memória abaixo de 70%
-
Verifique o uso da memória. No Console de Gerenciamento, acesse a página do monitor (
https://HOSTNAME.com:8443/setup/monitor
) e exiba o grafoMemory
. -
Interprete os resultados.
- Se o uso de memória estiver regularmente abaixo de 70%, continue para Disco não saturado.
- Se o uso de memória estiver regularmente acima de 70%, o sistema não atenderá aos critérios de atualização.
Disco não saturado
-
Verifique as especificações do provedor. Se seu provedor de nuvem ou hardware oferecer métricas de utilização de disco, use-as para confirmar se o disco está saturado.
- Se as métricas não estiverem disponíveis, solicite as especificações de disco do seu provedor, incluindo a taxa de transferência máxima e o IOPS máximo.
- Compare esses limites com o uso de disco observado. Se o uso estiver se aproximando dos valores máximos, o disco está saturado.
-
Verifique os grafos de disco no Console de Gerenciamento. Acesse a página do monitor (
https://HOSTNAME.com:8443/setup/monitor
).-
Exiba os grafos
Disk Operations
eDisk Traffic
. -
Compare os valores do eixo Y com as especificações do seu provedor (não a escala máxima mostrada no grafo).
-
Examine os dados e os discos raiz.
-
Esses grafos estão disponíveis nos painéis padrão na página do monitor.
- Interprete os resultados. Se o uso do disco estiver se aproximando dos limites definidos pelo provedor, o disco está saturado. Nesse caso, o sistema não atende aos critérios para atualização.
Fila de Unicorn abaixo de 200 a 300
-
Verifique o grafo de solicitações enfileiradas. No Console de Gerenciamento, acesse a página do monitor (
https://HOSTNAME.com:8443/setup/monitor
) e exiba o grafoQueued Requests
.
Esse grafo está disponível nos painéis padrão na página do monitor.
-
Interprete os resultados.
- Se as solicitações enfileiradas estão consistentemente abaixo de 200, prossiga para a Lista de pendências do Aqueduct abaixo de 1 a 2 horas.
- Se as solicitações na fila estão regularmente entre 200 e 300, o sistema não atende aos critérios de atualização.
-
Opcional: verifique a utilização do trabalho do Unicorn. No shell administrativo, execute:
ps -ef | grep unicorn | grep -v gitauth | grep -v ".rb" | grep -v init | grep git
Examine a última coluna da saída. Se todos os processos mostrarem
> 90% utilization
, mais trabalhos do Unicorn serão necessários.
Lista de pendências de Aqueduct abaixo de 1 a 2 horas
-
Verifique a profundidade da fila do Aqueduct. No Console de Gerenciamento, acesse a página do monitor (
https://HOSTNAME.com:8443/setup/monitor
) e exiba o grafoAqueduct queue depth
.
Esse grafo aparece nos painéis padrão na página do monitor.
-
Interprete os resultados.
- Se a lista de pendências durar de 1 a 2 horas, você atenderá a esse requisito.
- Se a lista de pendências costuma durar mais de 1 a 2 horas, o sistema não atenderá aos critérios de atualização.
-
Monitore a
index_high
fila. Grandes implantações podem ter aumentos significativos na profundidade da filaindex_high
, o que poderá piorar a lista de pendências. Preste atenção especial a essa fila durante o monitoramento.
Se todos os critérios (CPU, memória, disco, fila do Unicorn, lista de pendências do Aqueduct) forem atendidos, você poderá prosseguir com a atualização para a versão do recurso de destino. Após a atualização, é provável que o consumo de recursos aumente ainda mais.
Se algum critério não estiver atendido, resolva os problemas subjacentes antes de tentar atualizar.
Atualizar hardware e ajustar os trabalhos
Se o sistema não atendeu a um ou mais dos requisitos de recursos, você precisará aumentar a capacidade antes de atualizar. As seções a seguir descrevem como adicionar recursos de hardware e ajustar a configuração de trabalho para resolver gargalos comuns.
- CPU acima de 70%
- Memória acima de 70%
- Disco saturado
- Fila de Unicorn acima de 200 a 300
- Lista de pendências do Aqueduct acima de 1 a 2 horas
CPU acima de 70%
Se a utilização da CPU estiver regularmente acima de 70%:
- Aumente os recursos da CPU. Adicione pelo menos 20% de vCPUs.
- Considere novos trabalhos. Aloque 1 vCPU por trabalho. Por exemplo, se você adicionar 5 trabalhos do Unicorn e 10 trabalhos Resque, aumente as vCPUs em pelo menos 15.
Memória acima de 70%
Se o uso de memória estiver regularmente acima de 70%:
- Aumente a memória. Adicione RAM para reduzir o uso médio para menos de 70%.
- Considere novos trabalhos. Aloque 1 GB de memória por trabalho. Por exemplo, se você adicionar 5 trabalhos do Unicorn e 10 trabalhos Resque, aumente a memória em pelo menos 15 GB.
Disco saturado
Se a verificação de saturação do disco indicar saturação, atualize para discos com maior taxa de transferência e IOPS máxima.
Fila de Unicorn acima de 200 a 300
Se as solicitações do Unicorn forem enfileiradas consistentemente acima de 200 a 300, talvez seja necessário adicionar mais trabalhos do Unicorn. Siga estas etapas para determinar o número total de trabalhos de destino e atualizar sua configuração.
1. Estimar trabalhos adicionais
Execute o seguinte comando durante o horário de pico para exibir a utilização por trabalho:
ps -ef | grep unicorn | grep -v gitauth | grep -v ".rb" | grep -v init | grep git
Exemplo de saída:
git 3048972 3045762 0 Aug01 ? 00:07:47 unicorn 3-16-nightly.ghe-test.com[6e6ad46] worker[00]: 20491 reqs, 10.8 req/s, 13ms avg, 85.2% util
git 3048979 3045762 0 Aug01 ? 00:07:53 unicorn 3-16-nightly.ghe-test.com[6e6ad46] worker[01]: 20951 reqs, 12.5 req/s, 13ms avg, 80.3% util
git 3048985 3045762 0 Aug01 ? 00:08:04 unicorn 3-16-nightly.ghe-test.com[6e6ad46] worker[02]: 21502 reqs, 10.5 req/s, 15ms avg, 76.5% util
git 3048992 3045762 0 Aug01 ? 00:07:45 unicorn 3-16-nightly.ghe-test.com[6e6ad46] worker[03]: 20249 reqs, 14.2 req/s, 15ms avg, 86.9% util
A média é de 12 solicitações/segundo.
Com esse resultado, calcule a média de solicitações por segundo (req/s).
-
No exemplo acima: 12 req/s.
-
A meta é reduzir as solicitações enfileiradas para 100 ou menos.
-
Fórmula:
(Queued requests – 100) ÷ avg req/s
-
Exemplo: (280 - 100) ÷ 12 = 15 trabalhos adicionais necessários.
Dica
Se você quiser confirmar esses resultados, entre em contato conosco acessando Suporte do GitHub Enterprise, carregando um pacote e solicitando o número total de trabalhos Unicorn.
2. Verificar a configuração atual
Verifique se o número total de trabalhos (Unicorn + Resque) não excede as vCPUs. Aloque pelo menos 1 vCPU por trabalho.
Verifique os números atuais:
-
Trabalhos do Unicorn
ps -ef | grep unicorn | grep -v gitauth | grep -v ".rb" | grep -v init | grep git | wc -l
Adicione o número calculado de novos trabalhos a esse valor para obter a meta total.
-
Trabalhos Resque
ps -ef | grep aqueduct-1.1.0 | grep -v "grep aqueduct-1.1.0" | wc -l
3. Ajustar a configuração
Se a soma de trabalhos Unicorn + Resque exceder as vCPUs, adicione vCPUs antes de continuar.
Atualize o número de trabalhos Unicorn:
ghe-config app.github.github-workers <NUM-WORKERS>
ghe-config-apply
Substitua
Lista de pendências do Aqueduct acima de 1 a 2 horas
Se os trabalhos do Aqueduct ficarem regularmente pendentes por mais de 1 a 2 horas, adicione trabalhos resqued-low para reduzir o risco de backups de fila. Esse problema geralmente piora após a atualização.
1. Adicionar trabalhos resqued-low
- Aumente o número de trabalhos em 5 a 10. Lembre-se da capacidade da CPU: cada trabalho requer pelo menos 1 vCPU.
ghe-config app.github.resqued-low-workers <NUM-WORKERS>
ghe-config-apply
Substitua
2. Validar a contagem total de trabalhos
O número combinado de trabalhos Unicorn + Resque não deve exceder o número total de vCPUs. Consulte Fila de Unicorn acima de 200 a 300 para obter instruções sobre como verificar a configuração de trabalho atual.