IOPS - O que são e o que significam?

2

OK, eu sei tecnicamente o que são as IOPS . A definição técnica é ótima, mas não estou entendendo as implicações mais amplas. Meu conhecimento é basicamente:

  • IOPS são as operações de entrada e saída que um aplicativo faz
  • Existem IOPS HD, IOPS ram, IOPS de rede, etc.
  • IOPS pode ser seqüencial ou aleatório (em média, para um aplicativo específico)
  • IOPS seqüenciais são bons, IOPS aleatórios são ruins.

Mas isso é sobre a profundidade do meu entendimento. Então, quando alguém pergunta "O aplicativo que você está desenvolvendo tem contagem alta ou baixa de IOPS?" Eu não sei o que isso implica. O aplicativo é baseado na web, então isso significa que eu preciso contar o IOPS do IIS ou apenas o IOPS meu aplicativo da web faz? Não há muito IO em nível de arquivo, mas há muito tráfego de banco de dados. É "média" com base em uma única sessão, todas as sessões ao longo de um dia, todos os dias durante uma semana, etc. Como posso saber se os acessos ao meu banco de dados são altos ou baixos? O que é alto e o que é baixo para esse assunto? Como posso saber se eles são sequenciais ou aleatórios?

E quando eu descobrir tudo isso e entender o que isso significa, como posso melhorar? Como você pode diminuir o IOPS ou alterá-lo de aleatório para seqüencial? Ou devo me preocupar ou me incomodar com essas coisas? Existem ferramentas para medir essas coisas? Como posso ver quais são as minhas IOPS do banco de dados, por exemplo?

    
por Justin808 13.06.2013 / 04:01

1 resposta

3

A menos que sua aplicação web seja muito simples, quase certamente requer um banco de dados como back-end. Se você espera que seu aplicativo da Web suporte muitos usuários simultâneos, é possível ver onde a velocidade do banco de dados será crucial para determinar a resposta do seu site. Então é nisso que você deve se concentrar.

A menos que seu aplicativo da Web seja aquele em que os usuários enviam coisas e depois são colocadas no final do banco de dados (caso em que você realmente não precisaria de um banco de dados), você terá usuários fazendo coisas que querem todas as localizações da base de dados. Assim, você pode considerar um banco de dados como "aleatório IOPS".

A rotação de discos rígidos pode ler e escrever mais rapidamente sequencialmente do que aleatoriamente, porque a busca por faixas diferentes leva tempo. Um drive habilitado para NCQ, que todos os novos drives são hoje em dia, pode atenuar isso um pouco, permitindo que o drive determine a ordem em que executa E / S até certo ponto, mas isso só ajuda um pouco. Os SSDs podem escrever mais rapidamente sequencialmente do que aleatoriamente, especialmente se eles estiverem habilitados para TRIM e você estiver gravando em uma seção de flash recém-apagada. No entanto, como você está atendendo a muitos usuários únicos e aleatórios, você deve assumir o pior caso de E / S aleatória para sua situação, já que não pode controlar o que os usuários farão.

Na sua situação, você provavelmente se importará mais com IOPS de disco do que com IOPS de rede. Assim, você desejará monitorar o quanto seu banco de dados está sendo acessado, ao longo do tempo, ao longo de um dia, um mês e vários meses, coletando informações significativas para seu sistema. Você deve certificar-se de que seu servidor de banco de dados tenha bastante memória RAM para permitir que ele armazene em cache dados usados com freqüência e utilize conceitos SQL, como particionamento e indexação adequada. Você pode querer colocar o log do banco de dados em um disco físico separado do banco de dados real, por exemplo. Estes são tópicos avançados e exigirão algumas pesquisas sérias da sua parte.

Acredito que o Monitor de Desempenho do SQL Server e o SQL Profiler, se você quiser saber exatamente o que seu aplicativo da Web está fazendo, é o que deve começar a investigar.

    
por 13.06.2013 / 04:57