AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 817010
Accepted
chutz
chutz
Asked: 2016-11-26 01:01:01 +0800 CST2016-11-26 01:01:01 +0800 CST 2016-11-26 01:01:01 +0800 CST

Posso executar um servidor Oracle sem swap?

  • 772

Os documentos oficiais da Oracle dizem que, para uma máquina com mais de 16GiB de RAM, precisamos alocar 16GiB de swap.

Nossos servidores são RHEL 7 e possuem 256GiB de RAM.

Os DBAs não querem ver a troca do sistema, então eles querem que monitoremos os 16GiB de troca de forma muito agressiva.

Sugeri que dobrássemos a RAM para 512GiB (a despesa está aprovada) e desabilitássemos a troca. No entanto, isso vai contra a recomendação da Oracle de ter 16GiB de swap, mesmo que dobremos a RAM.

Honestamente, não entendo como ter 3% de swap faz sentido, ou por que, se estou adicionando mais RAM do que tínhamos swap, temos que manter o swap.

Então, existem bons argumentos que eu possa usar para justificar a execução do Oracle sem swap?

PS A única razão pela qual mencionei a duplicação da RAM é para demonstrar o ridículo do argumento que estou tendo dificuldade em defender. O que realmente estou procurando são argumentos para justificar a desativação da troca.

linux oracle-11g swap oracle-linux
  • 4 4 respostas
  • 4244 Views

4 respostas

  • Voted
  1. Best Answer
    chicks
    2016-11-26T07:34:29+08:002016-11-26T07:34:29+08:00

    Desativar a troca é uma boa ideia se

    • seu software pode lidar com condições de falta de memória normalmente ou se limita para evitar situações de OOM
    • ter um desempenho consistente é crítico (quando o sistema está trocando, a latência aumenta, o que pode ser ruim o suficiente para torná-lo efetivamente inútil para muitos aplicativos)

    Esse tipo de coisa geralmente acontece com bancos de dados. Vejo isso mais com bancos de dados noSQL, mas bancos de dados relacionais podem sofrer o mesmo desafio.

    Não há nada no sistema operacional que exija troca para estar lá. O Linux lida com isso com muita elegância, eliminando o último processo que solicitou memória. Você não quer chegar a esse ponto, portanto, certifique-se de ajustar o Oracle para usar apenas ~ 90% da memória, para que haja alguma sobra para os daemons do sistema e margem para erro. A memória "livre" também é usada para armazenar em buffer a E/S do disco, o que é uma grande vitória no desempenho, portanto, tentar consumir mais memória pelo próprio banco de dados acabará por diminuir o desempenho geral do sistema o suficiente para ser contraproducente.

    Mesmo com sistemas que têm uma fração da memória da questão se o aplicativo é um banco de dados ou um cache ou sistema semelhante, eu padronizaria a não troca neste ponto.

    autoridades

    Para que você não confie apenas na minha palavra:

    Cassandra

    Datastax explica para Cassandra:

    Você deve desabilitar totalmente a troca. Deixar de fazer isso pode reduzir significativamente o desempenho. Como o Cassandra tem várias réplicas e failover transparente, é preferível que uma réplica seja eliminada imediatamente quando a memória estiver baixa, em vez de entrar na troca. Isso permite que o tráfego seja redirecionado imediatamente para uma réplica em funcionamento, em vez de continuar atingindo a réplica que possui alta latência devido à troca. Se o seu sistema tiver muita DRAM, a troca ainda reduz significativamente o desempenho porque o sistema operacional troca o código executável para que mais DRAM esteja disponível para os discos de cache.

    riak

    Basho explica para Riak que você deve:

    Idealmente, você deve desabilitar a troca para garantir que as páginas do processo de Riak não sejam trocadas. Desativar a troca permitirá que o Riak trave em situações em que fica sem memória. Isso deixará um arquivo de despejo de memória, denominado erl_crash.dump, no /var/log/riakdiretório que pode ser usado para determinar a causa do uso de memória.

    mysql

    Percona está em cima do muro e fornece advertências úteis para ambos os lados da questão. MariaDB discorda de desabilitar swap:

    Embora alguns desabilitem completamente a troca e você certamente queira evitar que qualquer processo de banco de dados a use, pode ser prudente deixar algum espaço de troca para pelo menos permitir que o kernel caia normalmente caso ocorra um pico. Ter a troca de emergência disponível, pelo menos, permite algum escopo para eliminar qualquer processo descontrolado.

    ServerFault

    Uma resposta bem recebida aqui inclui:

    Pessoalmente, acho um sistema swappy pior do que um sistema travado. Um sistema travado acionaria um servidor de backup em espera para assumir muito mais cedo. E em um ativo-ativo (ou configuração de balanceamento de carga), um sistema travado seria retirado de rotação muito mais cedo. Uma vitória para o sistema sem troca novamente.

    Essa resposta tem 22 votos positivos hoje e tem 4 anos. Você também pode ver algumas outras respostas exaltando o valor da troca, mas não há indicação de que estejam executando bancos de dados. Eles também não têm tantos votos positivos.:)

    lula

    Embora eles não recomendem abertamente desativar a troca, os caras do squid dizem :

    Squid tende a ser um pouco devorador de memória. Ele usa a memória para muitas coisas diferentes, algumas das quais são mais fáceis de controlar do que outras. O uso da memória é importante porque se o tamanho do processo do Squid exceder a capacidade de RAM do seu sistema, algumas partes do processo devem ser trocadas temporariamente para o disco. A troca também pode acontecer se você tiver outros aplicativos que consomem muita memória em execução no mesmo sistema. A troca faz com que o desempenho do Squid diminua muito rapidamente.

    Isso é o que você não quer que aconteça com seu banco de dados.

    redis

    Embora o redis recomende oficialmente a troca , os usuários não o compram :

    Primeiro desative a troca - Redis e troca não se misturam facilmente e isso certamente pode causar lentidão.

    hadoop

    Como visto nesta resposta com mais votos na comunidade hortonworks :

    Para hosts escravos/trabalhador/dados que apenas têm serviços distribuídos, você provavelmente pode desabilitar a troca. Com serviços distribuídos, é preferível deixar o processo/host ser eliminado em vez de trocar. A eliminação desse processo ou host não deve afetar a disponibilidade do cluster. Dito de outra forma: você quer "falhar rápido" para não "degradar lentamente".

    [....]

    Para mestres , a troca também é frequentemente desativada, embora não seja uma regra definida da Hortonworks e presumo que haverá alguma discussão/discordância. Os mestres podem ser tratados da mesma forma que você trataria os mestres em outros ambientes não Hadoop.

    O medo de desabilitar a troca em mestres é que um evento OOM (falta de memória) pode afetar a disponibilidade do cluster. Mas isso ainda acontecerá mesmo com a troca configurada, só levará um pouco mais de tempo. Boas práticas de administrador/operador seriam monitorar a disponibilidade de RAM e, em seguida, corrigir quaisquer problemas antes de ficar sem memória. Mantendo assim a disponibilidade sem afetar o desempenho. Nenhuma troca é necessária então.

    Eu gosto disso porque está falando sobre um aplicativo Java, mas chega a muitas das mesmas conclusões mencionadas acima sobre bancos de dados. Além disso, menciona o monitoramento , que é muito útil para ajustar aplicativos de alto desempenho. Se você não tem números para comparar tudo é baseado em sentimentos que são mais difíceis de comparar. Faça gráficos para cada métrica mensurável - latência no nível do aplicativo e taxa de transferência para CPU, disco, memória e gráficos de rede. Esses fornecem a maior parte dos dados reais sobre os quais você precisa tomar decisões.

    • 8
  2. bvdli
    2017-01-04T01:19:23+08:002017-01-04T01:19:23+08:00

    Alex no Linux tem uma leitura interessante sobre este assunto: "Swap vs. no swap" http://www.alexonlinux.com/swap-vs-no-swap

    O ponto principal é que, sem swap:

    • Seu sistema será menos estável.
    • A velocidade de acesso ao disco em seu sistema será mais lenta em comparação com um sistema que possui partição swap. Além disso, a velocidade de acesso ao disco diminuirá com o passar do tempo.
    • 0
  3. Michael Rutledge
    2018-09-21T21:56:42+08:002018-09-21T21:56:42+08:00

    Por que não manter uma quantidade razoável de swap para páginas não utilizadas e modificar a pressão do cache vfs para modificar o swapiness para trocar apenas no caso de condição OOM. Além disso, você pode fixar os processos oracle na memória principal para garantir que eles nunca toquem no disco. Isso garante que o banco de dados não seja afetado por atingir sistemas IO lentos e também permite que você libere lixo da memória principal para ser usado pelo banco de dados, buffers e cache. É o melhor dos dois mundos.

    • 0
  4. kubanczyk
    2017-01-04T10:03:03+08:002017-01-04T10:03:03+08:00

    Este tópico aparece com frequência. Swap é apenas uma extensão da RAM, então vamos comprar mais RAM, certo? Errado. A configuração com swap de 16 GiB e 512 GiB de RAM faz todo o sentido econômico. Deixe-me explicar.

    Se você conhece bem o software principal, sabe quanta memória "estúpida" é necessária com bastante precisão. Que memória "estúpida"? Vários códigos e dados que inicialmente aparecem na RAM, mas nunca mais serão necessários de forma crítica. Ou seja, o desempenho visto pelo usuário nunca será prejudicado porque esse material não está prontamente disponível na memória.

    Em vez de consertar o software, você pode apenas dar a ele essa quantidade de troca, mas não mais do que essa quantidade . Sim, deixe-o usar 100% do swap. Essa é a questão. Não aumente a troca, ou corre o risco de que alguma coisa crítica acabe acidentalmente lá. Documente, para que as pessoas não surtem ao ver 100% de uso de swap. No caso do Oracle, esse valor é de 16 GiB e posso dizer pela minha experiência que será usado, mesmo em uma caixa de 700 GiB, e você não experimentará o impacto do swpin no desempenho .

    Na verdade, você obtém 16 GiB de RAM para fazer um trabalho real e beneficiar seus usuários. A partir de 2017, reduz o custo da sua organização em aproximadamente $ 50. Se o seu servidor tiver 256 GiB de RAM, configure a troca e economize US$ 50. Se o seu servidor tiver 10 TiB de RAM, configure a troca e economize... $50. Ver? Ainda o mesmo.

    Atualmente, é sempre seguro ter swap zero. Simplesmente custa a você aqueles $ 50, só isso.

    Se sua organização não for capaz de lidar com swap 100% usado (por exemplo, uma equipe de monitoramento separada, etc.), não o faça. Se você fizer alguém pensar sobre esse assunto, você já desperdiçou $ 50 do tempo deles.

    Alguns fornecedores realmente não desperdiçam memória. E alguns fornecedores não se sentem confiantes o suficiente para estimar a quantidade de alocações "estúpidas", então eles dizem "swap zero" para evitar problemas desconhecidos apenas para economizar um monte de dinheiro. Tudo bem também! Eu apenas confiaria no fornecedor nisso, eles dão suporte às instalações, eles sabem o que fazem.

    • -1

relate perguntas

  • Protegendo um novo servidor Ubuntu [fechado]

  • (Soft) RAID 6 no Ubuntu 7.10, devo migrar para 8.10?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve