Portuguese, Brazilian subtitles

← 07-29 Contenção de Travamento

Get Embed Code
4 Languages

Showing Revision 5 created 09/17/2013 by sebastiao nascimento.

  1. Algo mais?
  2. Contenção de travamentos é algo muito importante para nós agora.
  3. Como eu dizia a respeito disso com o Cassandra --
  4. sempre que você vota em um link em um subreddit popular,
  5. ele tem que travar na listagem daquele subreddit.
  6. Um exemplo disso que tem nos inquietado recentemente --
  7. temos esses processadores de lista de espera,
  8. e tudo o que fazem é
  9. pegar aquele item da lista de espera que diz que
  10. alguém deu um voto.
  11. Então, você tem basicamente um conjunto de máquinas que leem a partir disso. >>Certo.
  12. Então todos esses aplicativos escrevem o que aconteceu à lista? >>Correto.
  13. Então você tem um monte de máquinas
  14. que leem a partir da fila.
  15. E o que elas fazem? Elas ficam lá.
  16. Elas puxam isso e então dizem: OK, isso quer dizer que eu tenho de atualizar essas listas
  17. e registrar o voto em Postscribes e Cassandra.
  18. E repassam todas essas coisas
  19. e isso envolve muito do travamento que estamos vendo aqui.
  20. E assim, tínhamos muitos desses processadores de lista sendo votados,
  21. e recebemos muitos desses votos simultaneamente,
  22. então precisamos de muitos deles,
  23. mas acabamos percebendo que eram demasiados,
  24. e estavam todos brigando entre si por esses travamentos.
  25. Só de saber a quantidade desses processadores de lista de espera
  26. já acelerava o processamento de lista em geral.
  27. Vocês precisam de suficientes processadores de lista
    para de fato gerir a profundidade da lista,
  28. mas se tiverem demasiados,
  29. passam tempo demais disputando entre si.
  30. E uma das formas de lidarmos com isso
  31. é nos livrando do travamento nas coisas do Cassandra.
  32. E também tentando, tanto quanto possivel, nos livrar de travamentos em geral.
  33. Travamento --
  34. É um tema comum.
  35. No próprio Python,
  36. quando mudamos para a Amazon pela primeira vez, tivemos esse problema estranho
  37. do multi-threading do Python--rodar dois threads de uma vez,
  38. rodando dois pedaços do seu programa ao mesmo tempo,
  39. não é o ideal --
  40. para usar um jeito simpático de dizer.
  41. O Python perdia tanto tempo travando suas estruturas
    de dados
  42. para que dois threads pudessem acessar a mesma estrutura de dados ao mesmo tempo
  43. que estava, de fato, reduzindo
  44. a capacidade do computador de ler o tráfego pela rede,
  45. o que fazia com que perdesse mais tempo
  46. revezando entre threads.
  47. Acabou criando esse estranho problema de thrashing da rede e da CPU.
  48. Para solucionar isso na época, nós simplesmente tornamos o Python "single-threaded",
  49. e processaríamos apenas uma solicitação de cada vez.
  50. Acho que vocês provavelmente ainda estejam fazendo isso.
  51. Sim, é muito raro usarmos processos com threads.
  52. Os servidores de publicidade usam threads, mas ao invés de fazermos assim,
  53. temos apenas vários processos separados.
  54. Vocês usam vários processos em uma máquina,
  55. e o sistema operacional pode fazer o revezamento de tarefas.
  56. O sistema é Linux; hoje em dia, muito bom em lidar com isso.
  57. E eles gastam muito do seu tempo esperando
  58. por algo que está fora de uso.
  59. Bem, isso é realmente excelente. Muito obrigado
    por ter vindo.
  60. Uma coisa que eu gostaria de destacar é que
  61. tudo o que conversamos aqui, as principais coisas --
  62. memcache, Zookeeper, Cassandra, Hadoop, AMQP, NGINX, HAProxy --
  63. Tudo isso é software livre.
  64. É fantástico o quanto se pode fazer sem pagar por nada.
  65. As coisas pelas quais você têm de pagar
  66. são os computadores para rodar essas coisas, mas todo o software
  67. e todo o código por trás desse software está online e
    é gratuito.
  68. A grande maioria do código do Reddit também é open source e está online,
  69. então, se quiserem dar uma olhada nessas coisas --
  70. Qual é a URL para isso? -- Github.com/reddit.
  71. Vou apagar aqui bem no meio do nosso desenho.
  72. Se vocês entrarem nesse código,
  73. nós mudamos para git num dado momento
  74. e meu nome já não consta em grande parte desse código,
  75. mas se vocês forem lá, verão
  76. muito do código que escrevemos nessa classe
  77. para o hashing e as senhas e tudo o mais --
  78. Está lá no Reddit em algum lugar.
  79. São coisas bem comuns.
  80. É legal e vocês podem ver todas essas coisas também na mailing list do Reddit,
  81. onde as pessoas discutem essas mudanças na arquitetura e coisas assim.
  82. Obrigado novamente. Belo trabalho.
  83. Ver como vocês expandiram o Reddit é muito legal.
  84. Houve dias difíceis e vocês realmente fizeram um trabalho magnífico expandindo aquele site.
  85. É realmente impressionante. -- Bem, não estaria onde está sem você. -- Obrigado.
  86. É isso aí, pessoal. Muito obrigado por assistirem e nos vemos na próxima.