ΠšΠ»Π°ΡΡ‚Π΅Ρ€ Elasticsearch Π½Π° 200 Π’Π‘+

ΠšΠ»Π°ΡΡ‚Π΅Ρ€ Elasticsearch Π½Π° 200 Π’Π‘+

Π‘ Elasticsearch ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅. Но Ρ‡Ρ‚ΠΎ происходит, ΠΊΠΎΠ³Π΄Π° Ρ…ΠΎΡ‡Π΅ΡˆΡŒ с Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π»ΠΎΠ³ΠΈ Β«Π² особо ΠΊΡ€ΡƒΠΏΠ½ΠΎΠΌ ΠΎΠ±ΡŠΡ‘ΠΌΠ΅Β»? Π”Π° Π΅Ρ‰Ρ‘ ΠΈ Π±Π΅Π·Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ΠΊΠ°Π· любого ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠ²? Какой стоит Π΄Π΅Π»Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ, ΠΈ Π½Π° ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠ°ΠΌΠ½ΠΈ Π½Π°Ρ‚ΠΊΠ½Ρ‘ΡˆΡŒΡΡ?

ΠœΡ‹ Π² ΠžΠ΄Π½ΠΎΠΊΠ»Π°ΡΡΠ½ΠΈΠΊΠ°Ρ… Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ elasticsearch Ρ€Π΅ΡˆΠΈΡ‚ΡŒ вопрос Π»ΠΎΠ³-ΠΌΠ΅Π½Π΅Π΄ΠΆΠΌΠ΅Π½Ρ‚Π°, Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ дСлимся с Π₯Π°Π±Ρ€ΠΎΠΌ ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ: ΠΈ ΠΏΡ€ΠΎ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ, ΠΈ ΠΏΡ€ΠΎ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠ°ΠΌΠ½ΠΈ.

Π― β€” ΠŸΡ‘Ρ‚Ρ€ Π—Π°ΠΉΡ†Π΅Π², Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ систСмным администратором Π² ΠžΠ΄Π½ΠΎΠΊΠ»Π°ΡΡΠ½ΠΈΠΊΠ°Ρ…. Π”ΠΎ этого Ρ‚ΠΎΠΆΠ΅ Π±Ρ‹Π» Π°Π΄ΠΌΠΈΠ½ΠΎΠΌ, Ρ€Π°Π±ΠΎΡ‚Π°Π» с Manticore Search, Sphinx search, Elasticsearch. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ссли появится Π΅Ρ‰Ρ‘ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ …search, вСроятно Π±ΡƒΠ΄Ρƒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ с Π½ΠΈΠΌ. Π’Π°ΠΊΠΆΠ΅ ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽ Π² рядС опСнсорсных ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° Π΄ΠΎΠ±Ρ€ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎΠΉ основС.

Когда я ΠΏΡ€ΠΈΡˆΡ‘Π» Π² Одноклассники, Ρ‚ΠΎ ΠΎΠΏΡ€ΠΎΠΌΠ΅Ρ‚Ρ‡ΠΈΠ²ΠΎ сказал Π½Π° собСсСдовании, Ρ‡Ρ‚ΠΎ ΡƒΠΌΠ΅ΡŽ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Elasticsearch. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ освоился ΠΈ ΠΏΠΎΠ΄Π΅Π»Π°Π» ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΏΡ€ΠΎΡΡ‚Π΅Π½ΡŒΠΊΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΌΠ½Π΅ ΠΏΠΎΠ΄Π°Ρ€ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΏΠΎ Ρ€Π΅Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ систСмы Π»ΠΎΠ³-ΠΌΠ΅Π½Π΅Π΄ΠΆΠΌΠ΅Π½Ρ‚Π°, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Π²ΡˆΡƒΡŽ Π½Π° Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚.

ВрСбования

ВрСбования ΠΊ систСмС Π±Ρ‹Π»ΠΈ сформулированы ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

  • Π’ качСствС Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Π» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Graylog. ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΡƒΠΆΠ΅ Π±Ρ‹Π» ΠΎΠΏΡ‹Ρ‚ использования этого ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, программисты ΠΈ тСстировщики Π΅Π³ΠΎ Π·Π½Π°Π»ΠΈ, ΠΎΠ½ ΠΈΠΌ Π±Ρ‹Π» ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π΅Π½ ΠΈ ΡƒΠ΄ΠΎΠ±Π΅Π½.
  • ΠžΠ±ΡŠΡ‘ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…: Π² срСднСм 50-80 тысяч сообщСний Π² сСкунду, Π½ΠΎ Ссли Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ломаСтся, Ρ‚ΠΎ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½, это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ 2-3 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° строк Π² сСкунду
  • ΠžΠ±ΡΡƒΠ΄ΠΈΠ² с Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ°ΠΌΠΈ трСбования ΠΏΠΎ скорости ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ поисковых запросов, ΠΌΡ‹ поняли, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ использования ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ систСмы Ρ‚Π°ΠΊΠΎΠΉ: люди ΠΈΡ‰ΡƒΡ‚ Π»ΠΎΠ³ΠΈ своСго прилоТСния Π·Π° послСдниС Π΄Π²Π° дня ΠΈ Π½Π΅ хотят ΠΆΠ΄Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π½Π° сформулированный запрос большС сСкунды.
  • Админы настаивали Π½Π° Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ систСма ΠΏΡ€ΠΈ нСобходимости Π»Π΅Π³ΠΊΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ, Π½Π΅ трСбуя ΠΎΡ‚ Π½ΠΈΡ… Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ вникания Π² Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½Π° устроСна.
  • Π§Ρ‚ΠΎΠ±Ρ‹ СдинствСнная Π·Π°Π΄Π°Ρ‡Π° ΠΏΠΎ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Π½ΠΈΡŽ, которая этим систСмам Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»Π°ΡΡŒ пСриодичСски β€” это ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ ΠΆΠ΅Π»Π΅Π·ΠΎ.
  • ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² ΠžΠ΄Π½ΠΎΠΊΠ»Π°ΡΡΠ½ΠΈΠΊΠ°Ρ… Π΅ΡΡ‚ΡŒ прСкрасная тСхничСская традиция: любой сСрвис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ запускаСм, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠ΅Ρ€Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ΠΊΠ°Π· Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€Π° (Π²Π½Π΅Π·Π°ΠΏΠ½Ρ‹ΠΉ, Π½Π΅Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΈ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π² любоС врСмя).

ПослСднСС Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° далось Π½Π°ΠΌ наибольшСй ΠΊΡ€ΠΎΠ²ΡŒΡŽ, ΠΎ Ρ‡Ρ‘ΠΌ я Π΅Ρ‰Ρ‘ расскаТу ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅.

Π‘Ρ€Π΅Π΄Π°

ΠœΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Π½Π° Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ… Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€Π°Ρ…, ΠΏΡ€ΠΈ этом Π΄Π°Ρ‚Π°-Π½ΠΎΠ΄Ρ‹ Elasticsearch ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚Ρ€Ρ‘Ρ… (ΠΏΠΎ ряду нСтСхничСских ΠΏΡ€ΠΈΡ‡ΠΈΠ½).

Π’ этих Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ… Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€Π°Ρ… находятся ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 18 тысяч Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… источников Π»ΠΎΠ³ΠΎΠ² β€” ΠΆΠ΅Π»Π΅Π·ΠΊΠΈ, ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹, Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹.

ВаТная ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ: запуск кластСра происходит Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ… Podman Π½Π΅ Π½Π° физичСских ΠΌΠ°ΡˆΠΈΠ½Π°Ρ…, Π° Π½Π° собствСнном ΠΎΠ±Π»Π°Ρ‡Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π΅ one-cloud. ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌ гарантируСтся 2 ядра, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Ρ… 2.0Ghz v4 с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΡƒΡ‚ΠΈΠ»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ядСр, Π² случаС ΠΈΡ… простоя.

Π˜Π½Ρ‹ΠΌΠΈ словами:

ΠšΠ»Π°ΡΡ‚Π΅Ρ€ Elasticsearch Π½Π° 200 Π’Π‘+

Вопология

ΠžΠ±Ρ‰ΠΈΠΉ Π²ΠΈΠ΄ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΌΠ½Π΅ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ видСлся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

  • 3-4 VIP стоят Π·Π° А-Ρ€Π΅ΠΊΠΎΡ€Π΄ΠΎΠΌ Π΄ΠΎΠΌΠ΅Π½Π° Graylog, это адрСс, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚ΡΡ‹Π»Π°ΡŽΡ‚ΡΡ Π»ΠΎΠ³ΠΈ.
  • ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ VIP прСдставляСт ΠΈΠ· сСбя балансировщик LVS.
  • ПослС Π½Π΅Π³ΠΎ Π»ΠΎΠ³ΠΈ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Π½Π° Π±Π°Ρ‚Π°Ρ€Π΅ΡŽ Graylog, Ρ‡Π°ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ΄Ρ‘Ρ‚ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ GELF, Ρ‡Π°ΡΡ‚ΡŒ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ syslog.
  • Π”Π°Π»ΡŒΡˆΠ΅ всё это большими Π±Π°Ρ‚Ρ‡Π°ΠΌΠΈ ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ Π² Π±Π°Ρ‚Π°Ρ€Π΅ΡŽ ΠΈΠ· ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΎΡ€ΠΎΠ² Elasticsearch.
  • А ΠΎΠ½ΠΈ, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ запросы Π½Π° запись ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π½Π° Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹Π΅ Π΄Π°Ρ‚Π°-Π½ΠΎΠ΄Ρ‹.

ΠšΠ»Π°ΡΡ‚Π΅Ρ€ Elasticsearch Π½Π° 200 Π’Π‘+

ВСрминология

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π΅ всС ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, поэтому Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ Π½Π° Π½Π΅ΠΉ.

Π’ Elasticsearch Π΅ΡΡ‚ΡŒ нСсколько Ρ‚ΠΈΠΏΠΎΠ² Π½ΠΎΠ΄ β€” master, coordinator, data node. Π•ΡΡ‚ΡŒ Π΅Ρ‰Ρ‘ Π΄Π²Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠ° для Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Π»ΠΎΠ³ΠΎΠ² ΠΈ связи Ρ€Π°Π·Π½Ρ‹Ρ… кластСров ΠΌΠ΅ΠΆΠ΄Ρƒ собой, Π½ΠΎ ΠΌΡ‹ использовали Ρ‚ΠΎΠ»ΡŒΠΊΠΎ пСрСчислСнныС.

Master
ΠŸΠΈΠ½Π³ΡƒΠ΅Ρ‚ всС ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π² кластСрС Π½ΠΎΠ΄Ρ‹, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚Ρƒ кластСра ΠΈ распространяСт Π΅Ρ‘ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΎΠ΄Π°ΠΌΠΈ, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΡΠΎΠ±Ρ‹Ρ‚ΠΈΠΉΠ½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ, занимаСтся Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° cluster wide housekeeping.

Coordinator
ВыполняСт ΠΎΠ΄Π½Ρƒ-Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ: ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ запросы ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ запись ΠΈ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ этот Ρ‚Ρ€Π°Ρ„ΠΈΠΊ. Π’ случаС, Ссли запрос Π½Π° запись, скорСС всСго, ΠΎΠ½ спросит master, Π² ΠΊΠ°ΠΊΠΎΠΉ ΡˆΠ°Ρ€Π΄ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½ΠΎΠ³ΠΎ индСкса Π΅ΠΌΡƒ это ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, ΠΈ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚ запрос дальшС.

Data node
Π₯Ρ€Π°Π½ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅, выполняСт, ΠΏΡ€ΠΈΠ»Π΅Ρ‚Π°ΡŽΡ‰ΠΈΠ΅ ΠΈΠ· Π²Π½Π΅, поисковыС запросы ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ располоТСнными Π½Π° Π½Π΅ΠΉ ΡˆΠ°Ρ€Π΄Π°ΠΌΠΈ.

Graylog
Π­Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ сплава Kibana с Logstash Π² ELK-стэкС. Graylog совмСщаСт Π² сСбС ΠΈ UI ΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π»ΠΎΠ³ΠΎΠ². Под ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ Π² Graylog Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Kafka ΠΈ Zookeeper, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ ΡΠ²ΡΠ·Π½ΠΎΡΡ‚ΡŒ Graylog ΠΊΠ°ΠΊ кластСра. Graylog ΡƒΠΌΠ΅Π΅Ρ‚ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈ (Kafka) Π½Π° случай нСдоступности Elasticsearch ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½Ρ‹Π΅ запросы Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ запись, Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΌΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ Π»ΠΎΠ³ΠΈ. Как ΠΈ Logstash, Graylog ΠΈΠΌΠ΅Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ строк ΠΏΠ΅Ρ€Π΅Π΄ записью Π² Elasticsearch.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² Graylog Π΅ΡΡ‚ΡŒ встроСнный service discovery, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π½Π° основС ΠΎΠ΄Π½ΠΎΠΉ доступной Π½ΠΎΠ΄Ρ‹ Elasticsearch ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ всю ΠΊΠ°Ρ€Ρ‚Ρƒ кластСра ΠΈ ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Ρ‘ ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΌΡƒ Ρ‚Π΅Π³Ρƒ, Ρ‡Ρ‚ΠΎ Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π°ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ запросы Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹.

Π’ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ это выглядит ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

ΠšΠ»Π°ΡΡ‚Π΅Ρ€ Elasticsearch Π½Π° 200 Π’Π‘+

Π­Ρ‚ΠΎ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ инстанса. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΏΠΎ поисковому запросу выстраиваСм гистограмму, Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹Π΅ строки.

Π˜Π½Π΄Π΅ΠΊΡΡ‹

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡΡΡŒ ΠΊ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ систСмы, я Π±Ρ‹ Ρ…ΠΎΡ‚Π΅Π» Π΄Π΅Ρ‚Π°Π»ΡŒΠ½Π΅Π΅ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ Π½Π° Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΡ‹ строили модСль индСксов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всё это Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ.

На ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠΉ Ρ€Π°Π½Π΅Π΅ схСмС это самый Π½ΠΈΠΆΠ½ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ: Elasticsearch data nodes.

ИндСкс β€” это большая Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ, состоящая ΠΈΠ· ΡˆΠ°Ρ€Π΄ΠΎΠ² Elasticsearch. Π‘Π°ΠΌ ΠΏΠΎ сСбС ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΡˆΠ°Ρ€Π΄ΠΎΠ² являСтся Π½ΠΈ Ρ‡Π΅ΠΌ ΠΈΠ½Ρ‹ΠΌ, ΠΊΠ°ΠΊ Lucene index. А ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Lucene index, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, состоит ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ сСгмСнтов.

ΠšΠ»Π°ΡΡ‚Π΅Ρ€ Elasticsearch Π½Π° 200 Π’Π‘+

ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΡ‹ ΠΏΡ€ΠΈΠΊΠΈΠ΄Ρ‹Π²Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ для обСспСчСния трСбования ΠΏΠΎ скорости чтСния Π½Π° большом ΠΎΠ±ΡŠΡ‘ΠΌΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ Β«Ρ€Π°Π·ΠΌΠ°Π·Π°Ρ‚ΡŒΒ» эти Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ Π΄Π°Ρ‚Π°-Π½ΠΎΠ΄Π°ΠΌ.

Π­Ρ‚ΠΎ Π²Ρ‹Π»ΠΈΠ»ΠΎΡΡŒ Π² Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ количСство ΡˆΠ°Ρ€Π΄ΠΎΠ² Π½Π° индСкс (с Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°ΠΌΠΈ) Ρƒ нас Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ строго Ρ€Π°Π²Π½ΠΎ количСству Π΄Π°Ρ‚Π°-Π½ΠΎΠ΄. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ replication factor, Ρ€Π°Π²Π½Ρ‹ΠΉ Π΄Π²ΡƒΠΌ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ кластСра). А, Π²ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ запросы Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ запись ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, Π½Π° ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ кластСра.

ВрСмя хранСния ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ спСрва ΠΊΠ°ΠΊ 30 Π΄Π½Π΅ΠΉ.

РаспрСдСлСниС ΡˆΠ°Ρ€Π΄ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ графичСски ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠšΠ»Π°ΡΡ‚Π΅Ρ€ Elasticsearch Π½Π° 200 Π’Π‘+

Π’Π΅ΡΡŒ Ρ‚Ρ‘ΠΌΠ½ΠΎ-сСрый ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ β€” это индСкс. Π›Π΅Π²Ρ‹ΠΉ красный ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ Π² Π½Ρ‘ΠΌ β€” это primary-ΡˆΠ°Ρ€Π΄, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π² индСксС. А Π³ΠΎΠ»ΡƒΠ±ΠΎΠΉ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ β€” это replica-ΡˆΠ°Ρ€Π΄. Они находятся Π² Ρ€Π°Π·Π½Ρ‹Ρ… Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€Π°Ρ….

Когда ΠΌΡ‹ добавляСм Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ ΡˆΠ°Ρ€Π΄, ΠΎΠ½ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€. И, Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π²ΠΎΡ‚ Ρ‚Π°ΠΊΡƒΡŽ структуру, которая обСспСчиваСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ Π”Π¦ Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ консистСнтности Π΄Π°Π½Π½Ρ‹Ρ…:

ΠšΠ»Π°ΡΡ‚Π΅Ρ€ Elasticsearch Π½Π° 200 Π’Π‘+

Π ΠΎΡ‚Π°Ρ†ΠΈΡŽ индСксов, Ρ‚.Π΅. созданиС Π½ΠΎΠ²ΠΎΠ³ΠΎ индСкса ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ старого, ΠΌΡ‹ сдСлали Ρ€Π°Π²Π½ΠΎΠΉ 48 часов (ΠΏΠΎ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρƒ использования индСкса: ΠΏΠΎ послСдним 48 часам ΠΈΡ‰ΡƒΡ‚ Ρ‡Π°Ρ‰Π΅ всСго).

Π’Π°ΠΊΠΎΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» Ρ€ΠΎΡ‚Π°Ρ†ΠΈΠΈ индСксов связан со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌΠΈ:

Когда Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ Π΄Π°Ρ‚Π°-Π½ΠΎΠ΄Ρƒ ΠΏΡ€ΠΈΠ»Π΅Ρ‚Π°Π΅Ρ‚ поисковый запрос, Ρ‚ΠΎ, с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния пСрформанса Π²Ρ‹Π³ΠΎΠ΄Π½Π΅ΠΉ, ΠΊΠΎΠ³Π΄Π° ΠΎΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ ΠΎΠ΄ΠΈΠ½ ΡˆΠ°Ρ€Π΄, Ссли Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ сопоставим с Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Ρ…ΠΈΠΏΠ° Π½ΠΎΠ΄Ρ‹. Π­Ρ‚ΠΎ позволяСт Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ β€œΠ³ΠΎΡ€ΡΡ‡ΡƒΡŽβ€ Ρ‡Π°ΡΡ‚ΡŒ индСкса Π² Ρ…ΠΈΠΏΠ΅ ΠΈ быстро ΠΊ Π½Π΅ΠΉ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ. Когда β€œΠ³ΠΎΡ€ΡΡ‡ΠΈΡ… частСй” становится ΠΌΠ½ΠΎΠ³ΠΎ, Ρ‚ΠΎ Π΄Π΅Π³Ρ€Π°Π΄ΠΈΡ€ΡƒΠ΅Ρ‚ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ поиска ΠΏΠΎ индСксу.

Когда Π½ΠΎΠ΄Π° Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ поисковой запрос Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡˆΠ°Ρ€Π΄Π΅, ΠΎΠ½Π° выдСляСт ΠΊΠΎΠ»-Π²ΠΎ Ρ‚Ρ€Π΅Π΄ΠΎΠ², Ρ€Π°Π²Π½ΠΎΠ΅ количСству Π³ΠΈΠΏΠ΅Ρ€Ρ‚Ρ€Π΅Π΄ΠΈΠ½Π³ΠΎΠ²Ρ‹Ρ… ядСр физичСской ΠΌΠ°ΡˆΠΈΠ½Ρ‹. Если поисковый запрос Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Π΅Ρ‚ большоС ΠΊΠΎΠ»-Π²ΠΎ ΡˆΠ°Ρ€Π΄ΠΎΠ², Ρ‚ΠΎ ΠΊΠΎΠ»-Π²ΠΎ Ρ‚Ρ€Π΅Π΄ΠΎΠ² растёт ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ. Π­Ρ‚ΠΎ ΠΏΠ»ΠΎΡ…ΠΎ отраТаСтся Π½Π° скорости поиска ΠΈ Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½ΠΎ сказываСтся Π½Π° индСксации Π½ΠΎΠ²Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ latency поиска, ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ SSD. Для быстрой ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запросов ΠΌΠ°ΡˆΠΈΠ½Ρ‹, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π»ΠΈΡΡŒ эти ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Π»ΠΈ ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ ΠΏΠΎ мСньшСй ΠΌΠ΅Ρ€Π΅ 56 ядрами. Π¦ΠΈΡ„Ρ€Π° Π² 56 Π²Ρ‹Π±Ρ€Π°Π½Π° ΠΊΠ°ΠΊ условно-достаточная Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π°Ρ количСство Ρ‚Ρ€Π΅Π΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Ρ‚ΡŒ Elasticsearch Π² процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π’ Elasitcsearch ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ thread pool Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ зависят ΠΎΡ‚ количСства доступных ядСр, Ρ‡Ρ‚ΠΎ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ прямо влияСт Π½Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΠΊΠΎΠ»-Π²ΠΎ Π½ΠΎΠ΄ Π² кластСрС ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ "мСньшС ядСр β€” большС Π½ΠΎΠ΄".

Π’ ΠΈΡ‚ΠΎΠ³Π΅ Ρƒ нас ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ Π² срСднСм ΡˆΠ°Ρ€Π΄ вСсит Π³Π΄Π΅-Ρ‚ΠΎ 20 Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚, ΠΈ Π½Π° 1 индСкс приходится 360 ΡˆΠ°Ρ€Π΄ΠΎΠ². БоотвСтствСнно, Ссли ΠΌΡ‹ ΠΈΡ… Ρ€ΠΎΡ‚ΠΈΡ€ΡƒΠ΅ΠΌ Ρ€Π°Π· Π² 48 часов, Ρ‚ΠΎ Ρƒ нас ΠΈΡ… 15 ΡˆΡ‚ΡƒΠΊ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ индСкс Π²ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π² сСбя Π΄Π°Π½Π½Ρ‹Π΅ Π·Π° 2 дня.

Π‘Ρ…Π΅ΠΌΡ‹ записи ΠΈ чтСния Π΄Π°Π½Π½Ρ‹Ρ…

Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрёмся, ΠΊΠ°ΠΊ Π² этой систСмС Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π΄Π°Π½Π½Ρ‹Π΅.

Допустим, Ρƒ нас ΠΈΠ· Graylog ΠΏΡ€ΠΈΠ»Π΅Ρ‚Π°Π΅Ρ‚ Π² ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΎΡ€ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ запрос. НапримСр, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΡ€ΠΎΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ 2-3 тысячи строк.

ΠšΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΎΡ€, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² ΠΎΡ‚ Graylog запрос, ΠΎΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ мастСр: Β«Π’ запросС Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡŽ Ρƒ нас Π±Ρ‹Π» ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ ΡƒΠΊΠ°Π·Π°Π½ индСкс, Π½ΠΎ Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡˆΠ°Ρ€Π΄ это ΠΏΠΈΡΠ°Ρ‚ΡŒ β€” Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎΒ».

Master ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚: Β«Π—Π°ΠΏΠΈΡˆΠΈ эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² ΡˆΠ°Ρ€Π΄ Π½ΠΎΠΌΠ΅Ρ€ 71Β», послС Ρ‡Π΅Π³ΠΎ ΠΎΠ½Π° направляСтся нСпосрСдствСнно Π² Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½ΡƒΡŽ Π΄Π°Ρ‚Π°-Π½ΠΎΠ΄Ρƒ, Π³Π΄Π΅ находится primary-shard Π½ΠΎΠΌΠ΅Ρ€ 71.

ПослС Ρ‡Π΅Π³ΠΎ Π»ΠΎΠ³ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ рСплицируСтся Π½Π° replica-shard, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится ΡƒΠΆΠ΅ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€Π΅.

ΠšΠ»Π°ΡΡ‚Π΅Ρ€ Elasticsearch Π½Π° 200 Π’Π‘+

Из Graylog Π² ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΈΠ»Π΅Ρ‚Π°Π΅Ρ‚ поисковый запрос. ΠšΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΎΡ€ пСрСнаправляСт Π΅Π³ΠΎ ΠΏΠΎ индСксу, ΠΏΡ€ΠΈ этом Elasticsearch ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ round-robin распрСдСляСт запросы ΠΌΠ΅ΠΆΠ΄Ρƒ primary-shard ΠΈ replica-shard.

ΠšΠ»Π°ΡΡ‚Π΅Ρ€ Elasticsearch Π½Π° 200 Π’Π‘+

Ноды Π² количСствС 180 ΡˆΡ‚ΡƒΠΊ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π½Π΅Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ, ΠΈ, ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΈ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚, ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠΏΠΈΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π² Π½Π΅Π³ΠΎ ΡƒΠΆΠ΅ Β«Π²Ρ‹ΠΏΠ»ΡŽΠ½ΡƒΠ»ΠΈΒ» Π±ΠΎΠ»Π΅Π΅ быстрыС Π΄Π°Ρ‚Π°-Π½ΠΎΠ΄Ρ‹. ПослС этого, ΠΊΠΎΠ³Π΄Π° Π»ΠΈΠ±ΠΎ вся информация ΠΏΡ€ΠΈΡˆΠ»Π°, Π»ΠΈΠ±ΠΎ ΠΏΠΎ запросу достигнут Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚, ΠΎΡ‚Π΄Π°Ρ‘Ρ‚ всё нСпосрСдствСнно ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ.

Вся эта систСма Π² срСднСм ΠΎΡ‚Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ поисковыС запросы ΠΏΠΎ послСдним 48 часам Π·Π° 300-400ms, ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‚Π΅ запросы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ с leading wildcard.

Β«Π¦Π²Π΅Ρ‚ΠΎΡ‡ΠΊΠΈΒ» с Elasticsearch: настройка Java

ΠšΠ»Π°ΡΡ‚Π΅Ρ€ Elasticsearch Π½Π° 200 Π’Π‘+

Π§Ρ‚ΠΎΠ±Ρ‹ всё это Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚Π΅Π»ΠΈ, ΠΌΡ‹ ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΠ»Π³ΠΎ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Π»ΠΈ самыС Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ Π² кластСрС.

ΠŸΠ΅Ρ€Π²Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π±Ρ‹Π»Π° связана с Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Π² Elasticsearch ΠΏΠΎ Π΄Π΅Ρ„ΠΎΠ»Ρ‚Ρƒ прСднастроСна Java.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° пСрвая
ΠœΡ‹ наблюдали ΠΎΡ‡Π΅Π½ΡŒ большоС количСство сообщСний ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ нас Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Lucene, ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΏΡƒΡ‰Π΅Π½Ρ‹ background job’Ρ‹, ΠΌΠ΅Ρ€Π΄ΠΆΠΈ сСгмСнтов Lucene Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‚ΡΡ с ошибкой. ΠŸΡ€ΠΈ этом Π² Π»ΠΎΠ³Π°Ρ… Π±Ρ‹Π»ΠΎ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ это OutOfMemoryError-ошибка. По Ρ‚Π΅Π»Π΅ΠΌΠ΅Ρ‚Ρ€ΠΈΠΈ ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ, Ρ‡Ρ‚ΠΎ Ρ…ΠΈΠΏ свободСн, ΠΈ Π½Π΅ Π±Ρ‹Π»ΠΎ понятно, ΠΏΠΎΡ‡Π΅ΠΌΡƒ эта опСрация ΠΏΠ°Π΄Π°Π΅Ρ‚.

Π’Ρ‹ΡΡΠ½ΠΈΠ»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ€Π΄ΠΆΠΈ Lucene-индСксов происходят Π²Π½Π΅ Ρ…ΠΈΠΏΠ°. А ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ довольно Тёстко ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ ΠΏΠΎ потрСбляСмым рСсурсам. Π’ эти рСсурсы Π²Π»Π΅Π·Π°Π» Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ…ΠΈΠΏ (Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ heap.size Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ€Π°Π²Π½ΠΎ RAM), Π° ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ off-heap ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠ°Π΄Π°Π»ΠΈ с ошибкой Π°Π»Π»ΠΎΠΊΠ°Ρ†ΠΈΠΈ памяти, Ссли ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Π½Π΅ ΡƒΠΊΠ»Π°Π΄Ρ‹Π²Π°Π»ΠΈΡΡŒ Π² Ρ‚Π΅ ~500MB, Ρ‡Ρ‚ΠΎ ΠΎΡΡ‚Π°Π²Π°Π»ΠΈΡΡŒ Π΄ΠΎ Π»ΠΈΠΌΠΈΡ‚Π°.

Ѐикс Π±Ρ‹Π» довольно Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ: доступный для ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΎΠ±ΡŠΡ‘ΠΌ RAM ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ»ΠΈ, послС Ρ‡Π΅Π³ΠΎ Π·Π°Π±Ρ‹Π»ΠΈ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Ρƒ нас Π²ΠΎΠΎΠ±Ρ‰Π΅ Π±Ρ‹Π»ΠΈ.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° вторая
Дня Ρ‡Π΅Ρ€Π΅Π· 4-5 послС запуска кластСра ΠΌΡ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Π΄Π°Ρ‚Π°-Π½ΠΎΠ΄Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ пСриодичСски Π²Ρ‹Π²Π°Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠ· кластСра ΠΈ Π·Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² Π½Π΅Π³ΠΎ сСкунд Ρ‡Π΅Ρ€Π΅Π· 10-20.

Когда ΠΏΠΎΠ»Π΅Π·Π»ΠΈ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ, Π²Ρ‹ΡΡΠ½ΠΈΠ»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ эта самая off-heap ΠΏΠ°ΠΌΡΡ‚ΡŒ Π² Elasticsearch Π½Π΅ контролируСтся практичСски Π½ΠΈΠΊΠ°ΠΊ. Когда ΠΌΡ‹ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρƒ ΠΎΡ‚Π΄Π°Π»ΠΈ большС памяти, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π°ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ direct buffer pools Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ, ΠΈ ΠΎΠ½Π° ΠΎΡ‡ΠΈΡ‰Π°Π»Π°ΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ запускался explicit GC со стороны Elasticsearch.

Π’ рядС случаСв эта опСрация происходила довольно-Ρ‚Π°ΠΊΠΈ Π΄ΠΎΠ»Π³ΠΎ, ΠΈ Π·Π° это врСмя кластСр успСвал ΠΏΠΎΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ эту Π½ΠΎΠ΄Ρƒ ΠΊΠ°ΠΊ ΡƒΠΆΠ΅ Π²Ρ‹ΡˆΠ΅Π΄ΡˆΡƒΡŽ. Π­Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ…ΠΎΡ€ΠΎΡˆΠΎ описана Π²ΠΎΡ‚ здСсь.

РСшСниС Π±Ρ‹Π»ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ: ΠΌΡ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ»ΠΈ Java Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ памяти Π²Π½Π΅ Ρ…ΠΈΠΏΠ° ΠΏΠΎΠ΄ эти ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. ΠœΡ‹ Π»ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Π΅Ρ‘ Π΄ΠΎ 16 Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚ (-XX:MaxDirectMemorySize=16g), добившись Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ explicit GC вызывался Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‡Π°Ρ‰Π΅, Π° ΠΎΡ‚Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π» Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстрСС, пСрСстав Ρ‚Π΅ΠΌ самым Π΄Π΅ΡΡ‚Π°Π±ΠΈΠ»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ кластСр.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ‚Ρ€Π΅Ρ‚ΡŒΡ
Если Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Β«Π½ΠΎΠ΄Π°ΠΌΠΈ, ΠΏΠΎΠΊΠΈΠ΄Π°ΡŽΡ‰ΠΈΠΌΠΈ кластСр Π² самый Π½Π΅ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚Β» Π½Π° этом ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΈΡΡŒ, Π²Ρ‹ ΠΎΡˆΠΈΠ±Π°Π΅Ρ‚Π΅ΡΡŒ.

Когда ΠΌΡ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρƒ с индСксами, ΠΌΡ‹ остановили свой Π²Ρ‹Π±ΠΎΡ€ Π½Π° mmapfs, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя поиска ΠΏΠΎ свСТим ΡˆΠ°Ρ€Π΄Π°ΠΌ с большой ΡΠ΅Π³ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒΡŽ. Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ довольно Π³Ρ€ΡƒΠ±ΠΎΠΉ ошибкой, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ использовании mmapfs Ρ„Π°ΠΉΠ» маппится Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ, Π° дальшС ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ ΡƒΠΆΠ΅ с mapped-Ρ„Π°ΠΉΠ»ΠΎΠΌ. Из-Π·Π° этого получаСтся, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ GC ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅Π΄Ρ‹ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΌΡ‹ ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΠ»Π³ΠΎ ΠΈΠ΄Ρ‘ΠΌ Π² safepoint, ΠΈ ΠΏΠΎ Π΄ΠΎΡ€ΠΎΠ³Π΅ ΠΊ Π½Π΅ΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ пСрСстаСт ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π½Π° запросы мастСра ΠΎ Ρ‚ΠΎΠΌ, ΠΆΠΈΠ²ΠΎΠ΅ Π»ΠΈ ΠΎΠ½ΠΎ. БоотвСтствСнно, master считаСт, Ρ‡Ρ‚ΠΎ Π½ΠΎΠ΄Π° Ρƒ нас большС Π² кластСрС Π½Π΅ присутствуСт. ПослС этого спустя сСкунд 5-10 ΠΎΡ‚Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ garbage collector, Π½ΠΎΠ΄Π° ΠΎΠΆΠΈΠ²Π°Π΅Ρ‚, снова Π·Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π² кластСр ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΡˆΠ°Ρ€Π΄ΠΎΠ². Всё это сильно Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎ β€œΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ заслуТили” ΠΈ Π½Π΅ годилось для Ρ‡Π΅Π³ΠΎ-Π»ΠΈΠ±ΠΎ ΡΠ΅Ρ€ΡŒΡ‘Π·Π½ΠΎΠ³ΠΎ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠ³ΠΎ повСдСния, ΠΌΡ‹ спСрва ΠΏΠ΅Ρ€Π΅ΡˆΠ»ΠΈ Π½Π° стандартный niofs, Π° послС, ΠΊΠΎΠ³Π΄Π° с пятых вСрсий Elastic ΠΎΡ‚ΠΌΠΈΠ³Ρ€ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ Π½Π° ΡˆΠ΅ΡΡ‚Ρ‹Π΅, ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π»ΠΈ hybridfs, Π³Π΄Π΅ данная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ Π²ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅ΠΉ ΠΏΡ€ΠΎ Ρ‚ΠΈΠΏΡ‹ сторСдТа ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ здСсь.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° чСтвёртая
ΠŸΠΎΡ‚ΠΎΠΌ Π±Ρ‹Π»Π° Π΅Ρ‰Π΅ ΠΎΡ‡Π΅Π½ΡŒ Π·Π°Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Π»Π΅Ρ‡ΠΈΠ»ΠΈ Ρ€Π΅ΠΊΠΎΡ€Π΄Π½ΠΎ Π΄ΠΎΠ»Π³ΠΎ. ΠœΡ‹ Π»ΠΎΠ²ΠΈΠ»ΠΈ Π΅Ρ‘ 2-3 мСсяца, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π±Ρ‹Π» Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ нСпонятСн Π΅Ρ‘ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½.

Иногда Ρƒ нас ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΎΡ€Ρ‹ ΡƒΡ…ΠΎΠ΄ΠΈΠ»ΠΈ Π² Full GC, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π³Π΄Π΅-Ρ‚ΠΎ послС ΠΎΠ±Π΅Π΄Π°, ΠΈ ΠΎΡ‚Ρ‚ΡƒΠ΄Π° ΡƒΠΆΠ΅ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π»ΠΈΡΡŒ. ΠŸΡ€ΠΈ этом ΠΏΡ€ΠΈ Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ GC это выглядСло Ρ‚Π°ΠΊ: Ρƒ нас всё ΠΈΠ΄Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Π° ΠΏΠΎΡ‚ΠΎΠΌ Ρ€Π°Π· β€” ΠΈ всё Ρ€Π΅Π·ΠΊΠΎ ΠΏΠ»ΠΎΡ…ΠΎ.

Π‘ΠΏΠ΅Ρ€Π²Π° ΠΌΡ‹ Π΄ΡƒΠΌΠ°Π»ΠΈ, Ρ‡Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ Π·Π»ΠΎΠΉ ΡŽΠ·Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускаСт ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ запрос, Π²Ρ‹Π±ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΎΡ€ ΠΈΠ· Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ°. ΠžΡ‡Π΅Π½ΡŒ Π΄ΠΎΠ»Π³ΠΎ Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ запросы, ΠΏΡ‹Ρ‚Π°ΡΡΡŒ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ происходит.

Π’ ΠΈΡ‚ΠΎΠ³Π΅ Π²Ρ‹ΡΡΠ½ΠΈΠ»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ Π² Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ запускаСт Π±ΠΎΠ»ΡŒΡˆΡƒΡ‰ΠΈΠΉ запрос, ΠΈ ΠΎΠ½ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π½Π° ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΎΡ€ Elasticsearch, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΠΎΠ΄Ρ‹ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ дольшС, Ρ‡Π΅ΠΌ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅.

И Ρ‚ΠΎ врСмя, ΠΏΠΎΠΊΠ° ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΎΡ€ ΠΆΠ΄Ρ‘Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚Π° всСх Π½ΠΎΠ΄, ΠΎΠ½ ΠΊΠΎΠΏΠΈΡ‚ Π² сСбС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, присланныС с ΡƒΠΆΠ΅ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ²ΡˆΠΈΡ… Π½ΠΎΠ΄. Для GC это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρƒ нас ΠΎΡ‡Π΅Π½ΡŒ быстро мСняСтся ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ использования Ρ…ΠΈΠΏΠ°. И Ρ‚ΠΎΡ‚ GC, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ использовали, с этой Π·Π°Π΄Π°Ρ‡Π΅ΠΉ Π½Π΅ справлялся.

ЕдинствСнный фикс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ нашли для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ кластСра Π² Ρ‚Π°ΠΊΠΎΠΉ ситуации β€” миграция Π½Π° JDK13 ΠΈ использованиС сборщика мусора Shenandoah. Π­Ρ‚ΠΎ Ρ€Π΅ΡˆΠΈΠ»ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΎΡ€Ρ‹ Ρƒ нас ΠΏΠ°Π΄Π°Ρ‚ΡŒ пСрСстали.

На этом ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Java Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΈΡΡŒ ΠΈ Π½Π°Ρ‡Π°Π»ΠΈΡΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с пропускной ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒΡŽ.

Β«Π―Π³ΠΎΠ΄ΠΊΠΈΒ» с Elasticsearch: пропускная ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ

ΠšΠ»Π°ΡΡ‚Π΅Ρ€ Elasticsearch Π½Π° 200 Π’Π‘+

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с пропускной ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ наш кластСр Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ, Π½ΠΎ Π½Π° ΠΏΠΈΠΊΠ°Ρ… ΠΊΠΎΠ»-Π²Π° индСксируСмых Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΠ°Π½Ρ‘Π²Ρ€ΠΎΠ² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ нСдостаточная.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ встрСчСнный симптом: ΠΏΡ€ΠΈ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ Β«Π²Π·Ρ€Ρ‹Π²Π°Ρ…Β» Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅, ΠΊΠΎΠ³Π΄Π° Ρ€Π΅Π·ΠΊΠΎ гСнСрируСтся ΠΎΡ‡Π΅Π½ΡŒ большоС количСство Π»ΠΎΠ³ΠΎΠ², Π² Graylog Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ часто ΠΌΠ΅Π»ΡŒΠΊΠ°Ρ‚ΡŒ ошибка индСксации es_rejected_execution.

Π­Ρ‚ΠΎ происходило ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ thread_pool.write.queue Π½Π° ΠΎΠ΄Π½ΠΎΠΉ Π΄Π°Ρ‚Π°-Π½ΠΎΠ΄Π΅ Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, ΠΊΠ°ΠΊ Elasticsearch сумССт ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ запрос Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡŽ ΠΈ Π·Π°ΠΊΠΈΠ½ΡƒΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² ΡˆΠ°Ρ€Π΄ Π½Π° диск, ΠΏΠΎ Π΄Π΅Ρ„ΠΎΠ»Ρ‚Ρƒ ΡƒΠΌΠ΅Π΅Ρ‚ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 200 запросов. И Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Elasticsearch ΠΎΠ± этом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ говорится ΠΊΡ€Π°ΠΉΠ½Π΅ ΠΌΠ°Π»ΠΎ. УказываСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΊΠΎΠ»-Π²ΠΎ Ρ‚Ρ€Π΅Π΄ΠΎΠ² ΠΈ Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€.

РазумССтся, ΠΌΡ‹ пошли ΠΊΡ€ΡƒΡ‚ΠΈΡ‚ΡŒ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ выяснили ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ Π² нашСм сСтапС довольно Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΊΠ΅ΡˆΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ Π΄ΠΎ 300 запросов, Π° большСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‡Ρ€Π΅Π²Π°Ρ‚ΠΎ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ снова ΡƒΠ»Π΅Ρ‚Π°Π΅ΠΌ Π² Full GC.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это ΠΏΠ°Ρ‡ΠΊΠΈ сообщСний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ»Π΅Ρ‚Π°ΡŽΡ‚ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ запроса, Ρ‚ΠΎ Π½Π°Π΄ΠΎ Π±Ρ‹Π»ΠΎ Π΅Ρ‰Ρ‘ ΠΏΠΎΠ΄ΠΊΡ€ΡƒΡ‚ΠΈΡ‚ΡŒ Graylog для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ писал Π½Π΅ часто ΠΈ ΠΌΠ΅Π»ΠΊΠΈΠΌΠΈ Π±Π°Ρ‚Ρ‡Π°ΠΌΠΈ, Π° ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΌΠΈ Π±Π°Ρ‚Ρ‡Π°ΠΌΠΈ ΠΈΠ»ΠΈ Ρ€Π°Π· Π² 3 сСкунды, Ссли Π±Π°Ρ‚Ρ‡ всё Π΅Ρ‰Ρ‘ Π½Π΅ ΠΏΠΎΠ»ΠΎΠ½. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС получаСтся, Ρ‡Ρ‚ΠΎ информация, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Π² Elasticsearch пишСм, становится доступной Π½Π΅ Ρ‡Π΅Ρ€Π΅Π· Π΄Π²Π΅ сСкунды, Π° Ρ‡Π΅Ρ€Π΅Π· ΠΏΡΡ‚ΡŒ (Ρ‡Ρ‚ΠΎ нас Π²ΠΏΠΎΠ»Π½Π΅ устраиваСт), Π½ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ количСство Ρ€Π΅Ρ‚Ρ€Π°Π΅Π², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ приходится ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠΏΠΈΡ…Π½ΡƒΡ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΠ°Ρ‡ΠΊΡƒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Π­Ρ‚ΠΎ особСнно Π²Π°ΠΆΠ½ΠΎ Π² Ρ‚Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΠ³Π΄Π° Ρƒ нас Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π³Π΄Π΅-Ρ‚ΠΎ ΡƒΠΏΠ°Π»ΠΎ ΠΈ яростно ΠΎΠ± этом сообщаСт, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ заспамлСнный Elastic, Π° Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ врСмя β€” нСработоспособныС ΠΈΠ·-Π·Π° Π·Π°Π±ΠΈΠ²ΡˆΠΈΡ…ΡΡ Π±ΡƒΡ„Π΅Ρ€ΠΎΠ² Π½ΠΎΠ΄Ρ‹ Graylog.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠΎΠ³Π΄Π° Ρƒ нас происходили эти самыС Π²Π·Ρ€Ρ‹Π²Ρ‹ Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅, Ρƒ нас ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΈ ΠΆΠ°Π»ΠΎΠ±Ρ‹ ΠΎΡ‚ программистов ΠΈ тСстировщиков: Π² Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΈΠΌ ΠΎΡ‡Π΅Π½ΡŒ Π½ΡƒΠΆΠ½Ρ‹ эти Π»ΠΎΠ³ΠΈ, ΠΎΠ½ΠΈ Π²Ρ‹Π΄Π°ΡŽΡ‚ΡΡ ΠΈΠΌ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ.

Π‘Ρ‚Π°Π»ΠΈ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ. Π‘ ΠΎΠ΄Π½ΠΎΠΉ стороны, Π±Ρ‹Π»ΠΎ понятно, Ρ‡Ρ‚ΠΎ ΠΈ поисковыС запросы, ΠΈ запросы Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡŽ ΠΎΡ‚Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚, ΠΏΠΎ сути, Π½Π° ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ физичСских ΠΌΠ°ΡˆΠΈΠ½Π°Ρ…, ΠΈ Ρ‚Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ просадки Π±ΡƒΠ΄ΡƒΡ‚.

Но это ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ частично ΠΎΠ±ΠΎΠΉΡ‚ΠΈ Π·Π° счёт Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π² ΡˆΠ΅ΡΡ‚Ρ‹Ρ… вСрсиях Elasticsearch появился Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ запросы ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹ΠΌΠΈ Π΄Π°Ρ‚Π°-Π½ΠΎΠ΄Π°ΠΌΠΈ Π½Π΅ ΠΏΠΎ случайному ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ round-robin (ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ занимаСтся индСксациСй ΠΈ Π΄Π΅Ρ€ΠΆΠΈΡ‚ primary-shard, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ занят, Ρ‚Π°ΠΌ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ возмоТности ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ быстро), Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ этот запрос Π½Π° ΠΌΠ΅Π½Π΅Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ с replica-shard, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстрСС. Π˜Π½Ρ‹ΠΌΠΈ словами, ΠΌΡ‹ ΠΏΡ€ΠΈΡˆΠ»ΠΈ ΠΊ use_adaptive_replica_selection: true.

ΠšΠ°Ρ€Ρ‚ΠΈΠ½Π° чтСния Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

ΠšΠ»Π°ΡΡ‚Π΅Ρ€ Elasticsearch Π½Π° 200 Π’Π‘+

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° этот Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ query time Π² Ρ‚Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΠ³Π΄Π° Ρƒ нас ΡˆΡ‘Π» большой ΠΏΠΎΡ‚ΠΎΠΊ Π»ΠΎΠ³ΠΎΠ² Π½Π° запись.

НаконСц, основная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π»Π°ΡΡŒ Π² Π±Π΅Π·Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½ΠΎΠΌ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΈΠΈ Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€Π°.

Π§Π΅Π³ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΠΎΡ‚ кластСра сразу послС ΠΏΠΎΡ‚Π΅Ρ€ΠΈ связи с ΠΎΠ΄Π½ΠΈΠΌ Π”Π¦:

  • Если Ρƒ нас Π² ΠΎΡ‚Π²Π°Π»ΠΈΠ²ΡˆΠ΅ΠΌΡΡ Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€Π΅ находится Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ master, Ρ‚ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π²Ρ‹Π±Ρ€Π°Π½ ΠΈ ΠΏΠ΅Ρ€Π΅Π΅Π΄Π΅Ρ‚ ΠΊΠ°ΠΊ Ρ€ΠΎΠ»ΡŒ Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π½ΠΎΠ΄Ρƒ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ Π”Π¦.
  • ΠœΠ°ΡΡ‚Π΅Ρ€ быстро Π²Ρ‹ΠΊΠΈΠ½Π΅Ρ‚ ΠΈΠ· кластСра всС нСдоступныС Π½ΠΎΠ΄Ρ‹.
  • На основС ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ ΠΎΠ½ ΠΏΠΎΠΉΠΌΠ΅Ρ‚: Π² ΠΏΠΎΡ‚Π΅Ρ€ΡΠ²ΡˆΠ΅ΠΌΡΡ Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€Π΅ Ρƒ нас Π±Ρ‹Π»ΠΈ Ρ‚Π°ΠΊΠΈΠ΅-Ρ‚ΠΎ primary-ΡˆΠ°Ρ€Π΄Ρ‹, быстро Π·Π°ΠΏΡ€ΠΎΠΌΠΎΡƒΡ‚ΠΈΡ‚ ΠΊΠΎΠΌΠΏΠ»ΠΈΠΌΠ΅Π½Ρ‚Π°Ρ€Π½Ρ‹Π΅ replica-ΡˆΠ°Ρ€Π΄Ρ‹ Π² ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€Π°Ρ…, ΠΈ Ρƒ нас продолТится индСксация Π΄Π°Π½Π½Ρ‹Ρ….
  • Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ этого Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ»Π°Π²Π½ΠΎ Π΄Π΅Π³Ρ€Π°Π΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ пропускная ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ кластСра Π½Π° запись ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² Ρ†Π΅Π»ΠΎΠΌ всё Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ…ΠΎΡ‚ΡŒ ΠΈ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ, Π½ΠΎ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ.

Как Π²Ρ‹ΡΡΠ½ΠΈΠ»ΠΎΡΡŒ, Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΠΌΡ‹ Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠ³ΠΎ:

ΠšΠ»Π°ΡΡ‚Π΅Ρ€ Elasticsearch Π½Π° 200 Π’Π‘+

А ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

ΠšΠ»Π°ΡΡ‚Π΅Ρ€ Elasticsearch Π½Π° 200 Π’Π‘+

Как Ρ‚Π°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ?

Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚ падСния Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€Π° Ρƒ нас ΡƒΠ·ΠΊΠΈΠΌ мСстом стал мастСр.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ?

Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² мастСрС Π΅ΡΡ‚ΡŒ TaskBatcher, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠΉ Π·Π° распространСниС Π² кластСрС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡, ΠΈΠ²Π΅Π½Ρ‚ΠΎΠ². Π›ΡŽΠ±ΠΎΠΉ Π²Ρ‹Ρ…ΠΎΠ΄ Π½ΠΎΠ΄Ρ‹, любоС ΠΏΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΡˆΠ°Ρ€Π΄Π° ΠΈΠ· replica Π² primary, любая Π·Π°Π΄Π°Ρ‡Π° Π½Π° созданиС Π³Π΄Π΅-Ρ‚ΠΎ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ ΡˆΠ°Ρ€Π΄Π° β€” всё это ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ спСрва Π² TaskBatcher, Π³Π΄Π΅ обрабатываСтся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈ Π² ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊ.

Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ всС Π΄Π°Ρ‚Π°-Π½ΠΎΠ΄Ρ‹ Π² Π²Ρ‹ΠΆΠΈΠ²ΡˆΠΈΡ… Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€Π°Ρ… считали своим Π΄ΠΎΠ»Π³ΠΎΠΌ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ мастСру Β«Ρƒ нас ΠΏΠΎΡ‚Π΅Ρ€ΡΠ»ΠΈΡΡŒ Ρ‚Π°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΡˆΠ°Ρ€Π΄Ρ‹ ΠΈ Ρ‚Π°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π΄Π°Ρ‚Π°-Π½ΠΎΠ΄Ρ‹Β».

ΠŸΡ€ΠΈ этом Π²Ρ‹ΠΆΠΈΠ²ΡˆΠΈΠ΅ Π΄Π°Ρ‚Π°-Π½ΠΎΠ΄Ρ‹ засылали всю эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ мастСру ΠΈ ΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ Π΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒΡΡ подтвСрТдСния, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π΅Ρ‘ принял. Π­Ρ‚ΠΎΠ³ΠΎ ΠΎΠ½ΠΈ Π½Π΅ доТидались, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ мастСр ΠΏΠΎΠ»ΡƒΡ‡Π°Π» Π·Π°Π΄Π°Ρ‡ΠΈ быстрСй, Ρ‡Π΅ΠΌ успСл ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ. Ноды ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Ρƒ повторяли запросы, Π° мастСр Π² это врСмя ΡƒΠΆΠ΅ Π΄Π°ΠΆΠ΅ Π½Π΅ пытался ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π½Π° Π½ΠΈΡ…, Π° Π±Ρ‹Π» ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ³Π»ΠΎΡ‰Ρ‘Π½ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ сортировки запросов ΠΏΠΎ приоритСтности.

Π’ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π°Ρ‚Π°-Π½ΠΎΠ΄Ρ‹ спамили мастСра Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΡƒΡ…ΠΎΠ΄ΠΈΠ» Π² full GC. ПослС этого Ρƒ нас Ρ€ΠΎΠ»ΡŒ мастСра ΠΏΠ΅Ρ€Π΅Π΅Π·ΠΆΠ°Π»Π° Π½Π° ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Π½ΠΎΠ΄Ρƒ, с Π½Π΅ΠΉ происходило Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Ρ‚ΠΎ ΠΆΠ΅ самоС, ΠΈ Π² ΠΈΡ‚ΠΎΠ³Π΅ кластСр разваливался ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ.

ΠœΡ‹ Π΄Π΅Π»Π°Π»ΠΈ измСрСния, ΠΈ Π΄ΠΎ вСрсии 6.4.0, Π³Π΄Π΅ это Π±Ρ‹Π»ΠΎ ΠΏΠΎΡ„ΠΈΠΊΡˆΠ΅Π½ΠΎ, Π½Π°ΠΌ Π±Ρ‹Π»ΠΎ достаточно вывСсти ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ вывСсти всСго лишь 10 Π΄Π°Ρ‚Π°-Π½ΠΎΠ΄ ΠΈΠ· 360 для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ кластСр.

ВыглядСло это ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

ΠšΠ»Π°ΡΡ‚Π΅Ρ€ Elasticsearch Π½Π° 200 Π’Π‘+

ПослС вСрсии 6.4.0, Π³Π΄Π΅ ΠΏΠΎΡ‡ΠΈΠ½ΠΈΠ»ΠΈ этот стрёмный Π±Π°Π³, Π΄Π°Ρ‚Π°-Π½ΠΎΠ΄Ρ‹ пСрСстали ΡƒΠ±ΠΈΠ²Π°Ρ‚ΡŒ мастСра. Но Β«ΡƒΠΌΠ½Π΅Π΅Β» ΠΎΠ½ ΠΎΡ‚ этого Π½Π΅ стал. А ΠΈΠΌΠ΅Π½Π½ΠΎ: ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ 2, 3 ΠΈΠ»ΠΈ 10 (любоС количСство, ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅ ΠΎΡ‚ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹) Π΄Π°Ρ‚Π°-Π½ΠΎΠ΄, мастСр ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ сообщСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π½ΠΎΠ΄Π° А Π²Ρ‹ΡˆΠ»Π°, ΠΈ пытаСтся Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΠ± этом Π½ΠΎΠ΄Π΅ B, Π½ΠΎΠ΄Π΅ C, Π½ΠΎΠ΄Π΅ D.

И Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ с этим ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΡ€ΠΎΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ установкой Ρ‚Π°ΠΉΠΌ-Π°ΡƒΡ‚Π° Π½Π° ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ ΠΎ Ρ‡Ρ‘ΠΌ-Ρ‚ΠΎ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ€Π°Π²Π½Ρ‹Π΅ Π³Π΄Π΅-Ρ‚ΠΎ 20-30 сСкундам, ΠΈ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ Π²Ρ‹Π²ΠΎΠ΄Π° Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€Π° ΠΈΠ· кластСра.

Π’ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, это укладываСтся Π² Ρ‚Π΅ трСбования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π±Ρ‹Π»ΠΈ ΠΏΡ€Π΅Π΄ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΠΊ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρƒ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π½ΠΎ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния «чистой Π½Π°ΡƒΠΊΠΈΒ» это Π±Π°Π³. ΠšΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, кстати, Π±Ρ‹Π» ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΏΠΎΡ„ΠΈΠΊΡˆΠ΅Π½ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ Π² вСрсии 7.2.

ΠŸΡ€ΠΈΡ‡Ρ‘ΠΌ, ΠΊΠΎΠ³Π΄Π° нСкая Π΄Π°Ρ‚Π°-Π½ΠΎΠ΄Π° Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΠ»Π°, ΠΏΠΎΠ»ΡƒΡ‡Π°Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π΅Ρ‘ Π²Ρ‹Ρ…ΠΎΠ΄Π΅ Π²Π°ΠΆΠ½Π΅Π΅, Ρ‡Π΅ΠΌ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ всСму кластСру, Ρ‡Ρ‚ΠΎ Π½Π° Π½Π΅ΠΉ Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ Ρ‚Π°ΠΊΠΈΠ΅-Ρ‚ΠΎ primary-shard (Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡ€ΠΎΠΌΠΎΡƒΡ‚ΠΈΡ‚ΡŒ replica-shard Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€Π΅ Π² primary, ΠΈ Π² Π½ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ).

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, ΠΊΠΎΠ³Π΄Π° ΡƒΠΆΠ΅ всё Β«ΠΎΡ‚Π³Ρ€Π΅ΠΌΠ΅Π»ΠΎΒ», Π²Ρ‹ΡˆΠ΅Π΄ΡˆΠΈΠ΅ Π΄Π°Ρ‚Π°-Π½ΠΎΠ΄Ρ‹ Π½Π΅ ΠΌΠ°Ρ€ΠΊΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ stale Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ. БоотвСтствСнно, ΠΌΡ‹ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Ρ‹ ΠΆΠ΄Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° оттаймаутятся всС ΠΏΠΈΠ½Π³ΠΈ Π΄ΠΎ Π²Ρ‹ΡˆΠ΅Π΄ΡˆΠΈΡ… Π΄Π°Ρ‚Π°-Π½ΠΎΠ΄ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС этого наш кластСр Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΌ-Ρ‚ΠΎ, Ρ‚Π°ΠΌ-Ρ‚ΠΎ ΠΈ Ρ‚Π°ΠΌ-Ρ‚ΠΎ Π½Π°Π΄ΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ запись ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ± этом здСсь.

Π’ ΠΈΡ‚ΠΎΠ³Π΅ опСрация Π²Ρ‹Π²ΠΎΠ΄Π° Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€Π° Ρƒ нас сСгодня Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠΊΠΎΠ»ΠΎ 5 ΠΌΠΈΠ½ΡƒΡ‚ Π² час ΠΏΠΈΠΊ. Для Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ большой ΠΈ Π½Π΅ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π»ΠΈΠ²ΠΎΠΉ ΠΌΠ°Ρ…ΠΈΠ½Ρ‹ это довольно Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΌΡ‹ ΠΏΡ€ΠΈΡˆΠ»ΠΈ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ:

  • Π£ нас 360 Π΄Π°Ρ‚Π°-Π½ΠΎΠ΄ с дисками Π½Π° 700 Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚.
  • 60 ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΎΡ€ΠΎΠ² для Ρ€ΠΎΡƒΡ‚ΠΈΠ½Π³Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΏΠΎ этим самым Π΄Π°Ρ‚Π°-Π½ΠΎΠ΄Π°ΠΌ.
  • 40 мастСров, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρƒ нас ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ ΠΊΠ°ΠΊ Π½Π΅ΠΊΠΎΠ΅ наслСдиС со Π²Ρ€Π΅ΠΌΡ‘Π½ вСрсий Π΄ΠΎ 6.4.0 β€” Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΆΠΈΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€Π°, ΠΌΡ‹ ΠΌΠΎΡ€Π°Π»ΡŒΠ½ΠΎ Π±Ρ‹Π»ΠΈ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ нСсколько машин, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ Ρ…ΡƒΠ΄ΡˆΠ΅ΠΌ сцСнарии ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΊΠ²ΠΎΡ€ΡƒΠΌ мастСров
  • Π›ΡŽΠ±Ρ‹Π΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ совмСщСния Ρ€ΠΎΠ»Π΅ΠΉ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ Ρƒ нас ΡƒΠΏΠΈΡ€Π°Π»ΠΈΡΡŒ Π² Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ Π½ΠΎΠ΄Π° ломалось ΠΏΠΎΠ΄ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ.
  • Π’ΠΎ всём кластСрС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ heap.size, Ρ€Π°Π²Π½Ρ‹ΠΉ 31 Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚Ρƒ: всС ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΈ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π½Π° тяТёлых поисковых запросах с leading wildcard Π»ΠΈΠ±ΠΎ ΡƒΠ±ΠΈΠ²Π°Π» ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π½ΠΎΠ΄Ρ‹, Π»ΠΈΠ±ΠΎ прибивался circuit breaker Π² самом Elasticsearch.
  • ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, для обСспСчСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ поиска ΠΌΡ‹ ΡΡ‚Π°Ρ€Π°Π»ΠΈΡΡŒ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ количСство ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² кластСрС минимально Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ мСньшС событий Π² самом ΡƒΠ·ΠΊΠΎΠΌ мСстС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρƒ нас ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ Π² мастСрС.

НапослСдок ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π΅

Π§Ρ‚ΠΎΠ±Ρ‹ всё это Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°Π»ΠΎΡΡŒ, ΠΌΡ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

  • КаТдая Π΄Π°Ρ‚Π°-Π½ΠΎΠ΄Π° сообщаСт Π² нашС ΠΎΠ±Π»Π°ΠΊΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π΅ΡΡ‚ΡŒ, ΠΈ Π½Π° Π½Π΅ΠΉ находятся Ρ‚Π°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΡˆΠ°Ρ€Π΄Ρ‹. Когда ΠΌΡ‹ Π³Π΄Π΅-Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ‚ΡƒΡˆΠΈΠΌ, кластСр Ρ‡Π΅Ρ€Π΅Π· 2-3 сСкунды Ρ€Π°ΠΏΠΎΡ€Ρ‚ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Π² Ρ†Π΅Π½Ρ‚Ρ€Π΅ А ΠΌΡ‹ ΠΏΠΎΡ‚ΡƒΡˆΠΈΠ»ΠΈ Π½ΠΎΠ΄Ρƒ 2, 3, ΠΈ 4 β€” это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€Π°Ρ… ΠΌΡ‹ Π½ΠΈ Π² ΠΊΠΎΠ΅ΠΌ случаС Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Ρ‚ΡƒΡˆΠΈΡ‚ΡŒ Ρ‚Π΅ Π½ΠΎΠ΄Ρ‹, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ ΡˆΠ°Ρ€Π΄Ρ‹ Π² СдинствСнном экзСмплярС.
  • Зная Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ повСдСния мастСра, ΠΌΡ‹ ΠΎΡ‡Π΅Π½ΡŒ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ смотрим Π½Π° количСство pending-Π·Π°Π΄Π°Ρ‡. ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ ΠΎΠ΄Π½Π° зависшая Π·Π°Π΄Π°Ρ‡Π°, Ссли воврСмя Π½Π΅ оттаймаутится, тСорСтичСски Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ экстрСнной ситуации способна ΡΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρƒ нас Π½Π΅ ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, допустим, ΠΏΡ€ΠΎΠΌΠΎΡƒΡˆΠ΅Π½ replica-ΡˆΠ°Ρ€Π΄Π° Π² primary, ΠΈΠ·-Π·Π° Ρ‡Π΅Π³ΠΎ встанСт индСксация.
  • Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΡ€ΠΈΡΡ‚Π°Π»ΡŒΠ½ΠΎ смотрим Π½Π° Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ garbage collector, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρƒ нас с этим ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΈ большиС слоТности ΠΏΡ€ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ.
  • Π Π΅Π΄ΠΆΠ΅ΠΊΡ‚Ρ‹ ΠΏΠΎ Ρ‚Ρ€Π΅Π΄Π°ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π·Π°Ρ€Π°Π½Π΅Π΅, Π³Π΄Π΅ находится Β«Π±ΡƒΡ‚Ρ‹Π»ΠΎΡ‡Π½ΠΎΠ΅ Π³ΠΎΡ€Π»ΠΎΒ».
  • Ну ΠΈ стандартныС ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ, Ρ‚ΠΈΠΏΠ° heap, RAM ΠΈ I/O.

ΠŸΡ€ΠΈ построСнии ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°Π΄ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ особСнности Thread Pool Π² Elasticsearch. ДокумСнтация Elasticsearch описываСт возмоТности настройки ΠΈ Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½Ρ‹Π΅ значСния для поиска, индСксации, Π½ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡƒΠΌΠ°Π»Ρ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΎ thread_pool.management.Π­Ρ‚ΠΈ Ρ‚Ρ€Π΅Π΄Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚, Π² частности, запросы Ρ‚ΠΈΠΏΠ° _cat/shards ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ написании ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°. Π§Π΅ΠΌ большС кластСр, Ρ‚Π΅ΠΌ большС Ρ‚Π°ΠΊΠΈΡ… запросов выполняСтся Π² Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π° Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹ΠΉ thread_pool.management ΠΌΠ°Π»ΠΎ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ прСдставлСн Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊ Π΅Ρ‰Ρ‘ ΠΈ Π»ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ ΠΏΠΎ Π΄Π΅Ρ„ΠΎΠ»Ρ‚Ρƒ 5 Ρ‚Ρ€Π΅Π΄Π°ΠΌΠΈ, Ρ‡Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ быстро утилизируСтся, послС Ρ‡Π΅Π³ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ пСрСстаёт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ.

Π§Ρ‚ΠΎ хочСтся ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π² Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅: Ρƒ нас ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ! ΠœΡ‹ сумСли Π΄Π°Ρ‚ΡŒ нашим программистам ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ практичСски Π² любой ситуации способСн быстро ΠΈ достовСрно ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ происходящСм Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅.

Π”Π°, это ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ довольно-Ρ‚Π°ΠΊΠΈ слоТно, Π½ΠΎ, Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, наши Ρ…ΠΎΡ‚Π΅Π»ΠΊΠΈ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡƒΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π² ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈ этом Π½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΏΠ°Ρ‚Ρ‡ΠΈΡ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ сСбя.

ΠšΠ»Π°ΡΡ‚Π΅Ρ€ Elasticsearch Π½Π° 200 Π’Π‘+

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com