å€ãã®äººã Elasticsearch ã«èŠåŽããŠããŸãããããããç¹ã«å€§éã®ããã°ãä¿åããããã«ããã䜿çšãããå Žåã¯ã©ããªãã§ãããã?ãŸããè€æ°ã®ããŒã¿ã»ã³ã¿ãŒã®ããããã§é害ãçºçããŠããçã¿ã¯æããããªãã®ã§ãããã?ã©ã®ãããªã¢ãŒããã¯ãã£ãäœãã¹ããããããŠã©ããªèœãšãç©Žã«ééããã§ãããã?
ç§ãã¡ Odnoklassniki ã¯ããã°ç®¡çã®åé¡ã解決ããããã« elasticsearch ã䜿çšããããšã«æ±ºããçŸåšãã¢ãŒããã¯ãã£ãšèœãšãç©Žã®äž¡æ¹ã«ã€ããŠã®çµéšã Habr ãšå ±æããŠããŸãã
ç§ã¯ Pyotr Zaitsev ã§ããOdnoklassniki ã§ã·ã¹ãã 管çè ãšããŠåããŠããŸãããã®åã¯ãç§ã¯ç®¡çè ã§ããããManticore SearchãSphinx SearchãElasticsearch ãæ åœããŠããŸããããããããå¥ã® ...æ€çŽ¢ã衚瀺ãããããç§ãããããããã䜿çšããã§ããããç§ã¯ãŸããèªäž»çã«å€ãã®ãªãŒãã³ãœãŒã¹ ãããžã§ã¯ãã«åå ããŠããŸãã
ãªããã¯ã©ã¹ããã«æ¥ããšããç§ã¯é¢æ¥ã§ç¡è¬ã«ã Elasticsearch ã䜿ããŸããšèšããŸãããã³ããæŽãã§ç°¡åãªäœæ¥ãçµããåŸãåœæååšããŠãããã°ç®¡çã·ã¹ãã ãå·æ°ãããšãã倧ããªä»äºãäžããããŸããã
å¿ èŠæ¡ä»¶
ã·ã¹ãã èŠä»¶ã¯æ¬¡ã®ããã«å®åŒåãããŸããã
- Graylog ãããã³ããšã³ããšããŠäœ¿çšãããäºå®ã§ãããå瀟ã«ã¯ãã§ã«ãã®è£œåã®äœ¿çšçµéšããããããã°ã©ããŒããã¹ã¿ãŒã¯ãããç¥ã£ãŠããã圌ãã«ãšã£ãŠéŠŽæã¿ããã䟿å©ã§ããã
- ããŒã¿é: å¹³å㧠50 ç§ããã 80 ïœ 2 ã¡ãã»ãŒãžã§ãããäœããå£ããå Žåããã©ãã£ãã¯ã¯äœã«ãå¶éãããã3 ç§ããã XNUMX ïœ XNUMX äžè¡ã«ãªãå¯èœæ§ããããŸã
- æ€çŽ¢ã¯ãšãªã®åŠçé床ã®èŠä»¶ã«ã€ããŠã客æ§ãšè©±ãåã£ãçµæããã®ãããªã·ã¹ãã ã®äœ¿çšã®å žåçãªãã¿ãŒã³ã¯æ¬¡ã®ãšããã§ããããšãããããŸããã人ã ã¯éå» 2 æ¥éã®ã¢ããªã±ãŒã·ã§ã³ã®ãã°ãæ¢ããŠããã1 æ¥ä»¥äžåŸ ã¡ãããªãã®ã§ãã 2 çªç®ã¯ãå®åŒåãããã¯ãšãªã®çµæã§ãã
- 管çè ã¯ãã·ã¹ãã ãã©ã®ããã«æ©èœããããæ·±ã調ã¹ãå¿ èŠããªããå¿ èŠã«å¿ããŠã·ã¹ãã ãç°¡åã«æ¡åŒµã§ãããšäž»åŒµããŸããã
- ãããã£ãŠããããã®ã·ã¹ãã ãå®æçã«å¿ èŠãšããå¯äžã®ã¡ã³ããã³ã¹äœæ¥ã¯ãäžéšã®ããŒããŠã§ã¢ã亀æããããšã§ãã
- ããã«ãOdnoklassniki ã«ã¯åªããæè¡çäŒçµ±ããããŸããã€ãŸããç§ãã¡ãç«ã¡äžãããµãŒãã¹ã¯ãã¹ãŠãããŒã¿ã»ã³ã¿ãŒã®é害 (çªç¶ãèšç»å€ããã€ã§ã絶察ã«) ã«èããªããã°ãªããŸããã
ãã®ãããžã§ã¯ãã®å®æœã«ãããæåŸã®èŠä»¶ãæãè²»çšãããããŸããããããã«ã€ããŠã¯åŸã»ã©è©³ãã説æããŸãã
æ°Žææ¥
ç§ãã¡ã¯ 4 ã€ã®ããŒã¿ã»ã³ã¿ãŒã§äœæ¥ããŠããŸãããElasticsearch ããŒã¿ ããŒã㯠(æè¡ç以å€ã®ããŸããŸãªçç±ã«ãã) 3 ãæã«ããé 眮ã§ããŸããã
ããã 18 ã€ã®ããŒã¿ ã»ã³ã¿ãŒã«ã¯ãããŒããŠã§ã¢ãã³ã³ãããä»®æ³ãã·ã³ãªã©ãçŽ XNUMX ã®ç°ãªããã° ãœãŒã¹ãå«ãŸããŠããŸãã
éèŠãªæ©èœ: ã¯ã©ã¹ã¿ãŒã¯ã³ã³ãããŒã§éå§ãããŸã
èšãæããã°ïŒ
ããããžãŒ
æåã«ç§ãèŠããœãªã¥ãŒã·ã§ã³ã®äžè¬çãªåœ¢åŒã¯æ¬¡ã®ãšããã§ãã
- 3 ïœ 4 ã® VIP ã Graylog ãã¡ã€ã³ã® A ã¬ã³ãŒãã®èåŸã«ãããããããã°ã®éä¿¡å ã¢ãã¬ã¹ã§ãã
- å VIP 㯠LVS ãã©ã³ãµãŒã§ãã
- ãã®åŸããã°ã¯ Graylog ããããªãŒã«éãããããŒã¿ã®äžéšã¯ GELF 圢åŒãäžéšã¯ syslog 圢åŒã«ãªããŸãã
- 次ã«ãããããã¹ãŠã倧ããªãããã§äžé£ã® Elasticsearch ã³ãŒãã£ããŒã¿ãŒã«æžã蟌ãŸããŸãã
- ãããŠã次ã«ãæžã蟌ã¿ããã³èªã¿åããªã¯ãšã¹ããé¢é£ããããŒã¿ ããŒãã«éä¿¡ããŸãã
çšèª
ãããã誰ãããã®çšèªã詳ããç解ããŠããããã§ã¯ãªãã®ã§ãå°ã詳ãã説æããããšæããŸãã
Elasticsearch ã«ã¯ããã¹ã¿ãŒãã³ãŒãã£ããŒã¿ãŒãããŒã¿ ããŒããªã©ãããã€ãã®ã¿ã€ãã®ããŒãããããŸããç°ãªããã°å€æãšç°ãªãã¯ã©ã¹ã¿ãŒéã®éä¿¡çšã«ä»ã« 2 ã€ã®ã¿ã€ãããããŸããããªã¹ããããŠãããã®ã®ã¿ã䜿çšããŸããã
Master
ã¯ã©ã¹ã¿ãŒå
ã«ååšãããã¹ãŠã®ããŒãã« ping ãéä¿¡ããææ°ã®ã¯ã©ã¹ã¿ãŒ ããããç¶æããŠããŒãéã§é
åžããã€ãã³ã ããžãã¯ãåŠçããã¯ã©ã¹ã¿ãŒå
šäœã®ããŸããŸãªçš®é¡ã®ããŠã¹ããŒãã³ã°ãå®è¡ããŸãã
ã³ãŒââãã£ããŒã¿ãŒ
åäžã®ã¿ã¹ã¯ãå®è¡ããŸããã€ãŸããã¯ã©ã€ã¢ã³ãããã®èªã¿åããŸãã¯æžã蟌ã¿ãªã¯ãšã¹ããåãå
¥ãããã®ãã©ãã£ãã¯ãã«ãŒãã£ã³ã°ããŸããæžã蟌ã¿ãªã¯ãšã¹ããããå Žåãã»ãšãã©ã®å Žåãé¢é£ããã€ã³ããã¯ã¹ã®ã©ã®ã·ã£ãŒãã«æžã蟌ã¿ãªã¯ãšã¹ããé
眮ãããããã¹ã¿ãŒã«åãåããããªã¯ãšã¹ããããã«ãªãã€ã¬ã¯ãããŸãã
ããŒã¿ããŒã
ããŒã¿ãä¿åããå€éšããå°çããæ€çŽ¢ã¯ãšãªãå®è¡ãããã®äžã«ããã·ã£ãŒãã«å¯ŸããŠæäœãå®è¡ããŸãã
ã°ã¬ã€ãã°
ããã¯ãELK ã¹ã¿ãã¯ã«ããã Kibana ãš Logstash ã®èåã®ãããªãã®ã§ãã Graylog ã¯ãUI ãšãã°åŠçãã€ãã©ã€ã³ã®äž¡æ¹ãçµã¿åãããŠããŸãã Graylog ã¯å
éšã§ Kafka ãš Zookeeper ãå®è¡ããã¯ã©ã¹ã¿ãŒãšã㊠Graylog ãžã®æ¥ç¶ãæäŸããŸãã Graylog ã¯ãElasticsearch ãå©çšã§ããªãå Žåã«ãã° (Kafka) ããã£ãã·ã¥ãã倱æããèªã¿åãããã³æžã蟌ã¿ãªã¯ãšã¹ããç¹°ãè¿ããæå®ãããã«ãŒã«ã«åŸã£ãŠãã°ãã°ã«ãŒãåããŠããŒã¯ããããšãã§ããŸãã Logstash ãšåæ§ã«ãGraylog ã«ã¯ãElasticsearch ã«æžã蟌ãåã«è¡ãå€æŽããæ©èœããããŸãã
ããã«ãGraylog ã«ã¯ãµãŒãã¹ ãã£ã¹ã«ããªãçµã¿èŸŒãŸããŠãããå©çšå¯èœãª 1 ã€ã® Elasticsearch ããŒãã«åºã¥ããŠã¯ã©ã¹ã¿ ãããå šäœãååŸããç¹å®ã®ã¿ã°ã§ãã£ã«ã¿ãªã³ã°ã§ããããããªã¯ãšã¹ããç¹å®ã®ã³ã³ããã«éä¿¡ã§ããããã«ãªããŸãã
èŠèŠçã«ã¯æ¬¡ã®ããã«ãªããŸãã
ããã¯ç¹å®ã®ã€ã³ã¹ã¿ã³ã¹ã®ã¹ã¯ãªãŒã³ã·ã§ããã§ããããã§ã¯ãæ€çŽ¢ã¯ãšãªã«åºã¥ããŠãã¹ãã°ã©ã ãäœæããé¢é£ããè¡ã衚瀺ããŸãã
玢åŒ
ã·ã¹ãã ã¢ãŒããã¯ãã£ã«æ»ã£ãŠããã¹ãŠãæ£ããæ©èœããããã«ã€ã³ããã¯ã¹ ã¢ãã«ãæ§ç¯ããæ¹æ³ã«ã€ããŠè©³ãã説æããããšæããŸãã
äžã®å³ã§ã¯ãããã¯æäžäœã¬ãã«ã® Elasticsearch ããŒã¿ ããŒãã§ãã
ã€ã³ããã¯ã¹ã¯ãElasticsearch ã·ã£ãŒãã§æ§æããã倧ããªä»®æ³ãšã³ãã£ãã£ã§ããããããã®ã·ã£ãŒãèªäœã¯ãLucene ã€ã³ããã¯ã¹ã«ãããŸããããããŠãå Lucene ã€ã³ããã¯ã¹ã¯ 1 ã€ä»¥äžã®ã»ã°ã¡ã³ãã§æ§æãããŸãã
èšèšæã«ã倧éã®ããŒã¿ã®èªã¿åãé床ã®èŠä»¶ãæºããã«ã¯ããã®ããŒã¿ãããŒã¿ ããŒãå šäœã«åçã«ãåæ£ãããå¿ èŠããããšèããŸããã
ãã®çµæãã€ã³ããã¯ã¹ããšã®ã·ã£ãŒãæ° (ã¬ããªã«ãå«ã) ã¯ããŒã¿ ããŒãã®æ°ãšå³å¯ã«çãããªããã°ãªããªããšããäºå®ãçããŸããããŸããã¬ããªã±ãŒã·ã§ã³ä¿æ°ã 2 ã«ãªãããã«ããããã§ã (ã€ãŸããã¯ã©ã¹ã¿ãŒã®ååã倱ãå¯èœæ§ããããŸã)ã次ã«ãã¯ã©ã¹ã¿ãŒã®å°ãªããšãååã§èªã¿åãããã³æžã蟌ã¿ãªã¯ãšã¹ããåŠçããããã§ãã
ãŸãä¿ç®¡æéã 30 æ¥éãšæ±ºå®ããŸããã
ã·ã£ãŒãã®ååžã¯æ¬¡ã®ããã«ã°ã©ãã§è¡šãããšãã§ããŸãã
æ¿ãç°è²ã®é·æ¹åœ¢å šäœãã€ã³ããã¯ã¹ã§ãããã®äžã®å·ŠåŽã®èµ€ãåè§ã¯ãã©ã€ã㪠ã·ã£ãŒãã§ãããã€ã³ããã¯ã¹ã®æåã«ãããŸãããããŠéãåè§ã¯ã¬ããªã«ã®ç Žçã§ãããããã¯ç°ãªãããŒã¿ã»ã³ã¿ãŒã«ãããŸãã
å¥ã®ã·ã£ãŒããè¿œå ãããšã3 çªç®ã®ããŒã¿ã»ã³ã¿ãŒã«ç§»åããŸãããããŠæçµçã«ã¯ãããŒã¿ã®äžè²«æ§ã倱ããã« DC ã倱ãããšãã§ãã次ã®æ§é ãåŸãããŸãã
ã€ã³ããã¯ã¹ã®ããŒããŒã·ã§ã³ãã€ãŸãæ°ããã€ã³ããã¯ã¹ãäœæããŠæãå€ãã€ã³ããã¯ã¹ãåé€ãããããããã 48 æéã«ããŸãã (ã€ã³ããã¯ã¹ã®äœ¿çšãã¿ãŒã³ã«åŸã£ãŠãæåŸã® 48 æéãæãé »ç¹ã«æ€çŽ¢ãããŸã)ã
ãã®ã€ã³ããã¯ã¹ã®ããŒããŒã·ã§ã³ééã¯ã次ã®çç±ã«ãããã®ã§ãã
æ€çŽ¢ãªã¯ãšã¹ããç¹å®ã®ããŒã¿ ããŒãã«å°çããå Žåãããã©ãŒãã³ã¹ã®èŠ³ç¹ããèŠããšã1 ã€ã®ã·ã£ãŒããã¯ãšãªããå Žåããã®ãµã€ãºãããŒãã®ãããã®ãµã€ãºã«å¹æµããå Žåãããåçæ§ãé«ããªããŸããããã«ãããã€ã³ããã¯ã¹ã®ãããããéšåãããŒãã«ä¿æããè¿ éã«ã¢ã¯ã»ã¹ã§ããããã«ãªããŸãã ãããããªéšåããå€ããªããšãã€ã³ããã¯ã¹æ€çŽ¢ã®é床ãäœäžããŸãã
ããŒãã 1 ã€ã®ã·ã£ãŒãã§æ€çŽ¢ã¯ãšãªã®å®è¡ãéå§ãããšãç©çãã·ã³ã®ãã€ããŒã¹ã¬ããã£ã³ã° ã³ã¢ã®æ°ãšåãæ°ã®ã¹ã¬ãããå²ãåœãŠãããŸããæ€çŽ¢ã¯ãšãªãå€æ°ã®ã·ã£ãŒãã«åœ±é¿ãäžããå Žåãã¹ã¬ããã®æ°ãæ¯äŸããŠå¢å ããŸããããã¯æ€çŽ¢é床ã«æªåœ±é¿ãåãŒããæ°ããããŒã¿ã®ã€ã³ããã¯ã¹äœæã«ãæªåœ±é¿ãåãŒããŸãã
å¿ èŠãªæ€çŽ¢é 延ãæäŸããããã«ãSSD ã䜿çšããããšã«ããŸããããªã¯ãšã¹ããè¿ éã«åŠçããã«ã¯ããããã®ã³ã³ããããã¹ããããã·ã³ã«å°ãªããšã 56 ã³ã¢ãå¿ èŠã§ããã 56 ãšããæ°åã¯ãElasticsearch ãåäœäžã«çæããã¹ã¬ããã®æ°ã決å®ããæ¡ä»¶ä»ãã§ååãªå€ãšããŠéžæãããŸããã Elasitcsearch ã§ã¯ãå€ãã®ã¹ã¬ãã ããŒã« ãã©ã¡ãŒã¿ãŒãå©çšå¯èœãªã³ã¢ã®æ°ã«çŽæ¥äŸåãããã®çµæããã³ã¢ãæžã£ãŠããŒããå¢ããããšããååã«åŸã£ãŠãã¯ã©ã¹ã¿ãŒå ã§å¿ èŠãªããŒãã®æ°ã«çŽæ¥åœ±é¿ããŸãã
ãã®çµæãå¹³åããŠã·ã£ãŒãã®éãã¯çŽ 20 ã®ã¬ãã€ãã§ãã€ã³ããã¯ã¹ããšã« 1 åã®ã·ã£ãŒããããããšãããããŸããããããã£ãŠã360 æéããšã« 48 åããŒããŒã·ã§ã³ãããšã15 åã«ãªããŸããåã€ã³ããã¯ã¹ã«ã¯ 2 æ¥åã®ããŒã¿ãå«ãŸããŠããŸãã
ããŒã¿æžã蟌ã¿ã»èªã¿åºãåè·¯
ãã®ã·ã¹ãã ã«ããŒã¿ãã©ã®ããã«èšé²ãããããèŠãŠã¿ãŸãããã
Graylog ããã³ãŒãã£ããŒã¿ãŒã«äœããã®ãªã¯ãšã¹ããå±ãããšããŸããããšãã°ã2 ïœ 3 è¡ã®ã€ã³ããã¯ã¹ãäœæããããšããŸãã
Graylog ãããªã¯ãšã¹ããåãåã£ãã³ãŒãã£ããŒã¿ãŒã¯ããã¹ã¿ãŒã«æ¬¡ã®ããã«è³ªåããŸãããã€ã³ããã¯ã¹äœæãªã¯ãšã¹ãã§ã¯ãã€ã³ããã¯ã¹ãå ·äœçã«æå®ããŸãããããããã©ã®ã·ã£ãŒãã«æžã蟌ãããæå®ãããŠããŸããã§ãããã
ãã¹ã¿ãŒã¯ããã®æ å ±ãã·ã£ãŒãçªå· 71 ã«æžã蟌ãã§ãã ããããšå¿çãããã®åŸããã©ã€ã㪠ã·ã£ãŒãçªå· 71 ãé 眮ãããŠããé¢é£ããŒã¿ ããŒãã«çŽæ¥éä¿¡ãããŸãã
ãã®åŸããã©ã³ã¶ã¯ã·ã§ã³ ãã°ã¯å¥ã®ããŒã¿ ã»ã³ã¿ãŒã«ããã¬ããªã« ã·ã£ãŒãã«è€è£œãããŸãã
Graylog ããã³ãŒãã£ããŒã¿ãŒã«æ€çŽ¢ãªã¯ãšã¹ããå±ããŸããã³ãŒãã£ããŒã¿ãŒã¯ã€ã³ããã¯ã¹ã«åŸã£ãŠãªã¯ãšã¹ãããªãã€ã¬ã¯ãããŸãããElasticsearch ã¯ã©ãŠã³ãããã³ååã䜿çšããŠãã©ã€ã㪠ã·ã£ãŒããšã¬ããªã« ã·ã£ãŒãã®éã§ãªã¯ãšã¹ããåæ£ããŸãã
180 åã®ããŒãã®å¿çã¯äžåçã§ãããããŒããå¿çããŠããéãã³ãŒãã£ããŒã¿ãŒã¯ãããé«éãªããŒã¿ ããŒãã«ãã£ãŠãã§ã«ãåãåºããããæ å ±ãèç©ããŠããŸãããã®åŸããã¹ãŠã®æ å ±ãå°çãããããªã¯ãšã¹ããã¿ã€ã ã¢ãŠãã«éãããšããã¹ãŠãã¯ã©ã€ã¢ã³ãã«çŽæ¥æž¡ããŸãã
ãã®ã·ã¹ãã å šäœã¯ãå é ã«ã¯ã€ã«ãã«ãŒããå«ãŸããã¯ãšãªãé€ããéå» 48 æéã®æ€çŽ¢ã¯ãšãªãå¹³åã㊠300 ïœ 400 ããªç§ã§åŠçããŸãã
Elasticsearch ã䜿çšããè±: Java ã»ããã¢ãã
ãã¹ãŠãåœåã®åžæéãã«åäœãããããã«ãã¯ã©ã¹ã¿ãŒå ã®ããŸããŸãªãã®ããããã°ããã®ã«éåžžã«é·ãæéãè²»ãããŸããã
çºèŠãããåé¡ã®æåã®éšåã¯ãElasticsearch 㧠Java ãããã©ã«ãã§äºåèšå®ãããæ¹æ³ã«é¢é£ããŠããŸããã
æåã®åé¡
Lucene ã¬ãã«ã§ãããã¯ã°ã©ãŠã³ã ãžã§ãã®å®è¡äžã« Lucene ã»ã°ã¡ã³ãã®ããŒãžããšã©ãŒã§å€±æãããšããéåžžã«å€ãã®ã¬ããŒãã確èªãããŠããŸããåæã«ãããã OutOfMemoryError ãšã©ãŒã§ããããšã¯ãã°ã§æããã§ãããé é枬å®ã«ããè¡é¢ç¯ãèªç±ã§ããããšãåãããŸãããããªããã®æè¡ã倱æããã®ãã¯äžæã§ããã
Lucene ã€ã³ããã¯ã¹ã®ããŒãžã¯è¡é¢ç¯ã®å€åŽã§çºçããããšãå€æããŸããããŸããã³ã³ãããŒã¯ãæ¶è²»ããããªãœãŒã¹ã«é¢ããŠéåžžã«å³å¯ã«å¶éãããŠããŸãããããã®ãªãœãŒã¹ã«åãŸãã®ã¯ããŒãã®ã¿ã§ãã (heap.size å€ã¯ RAM ãšã»ãŒåãã§ã)ãäœããã®çç±ã§å¶éã®åã«æ®ã£ãŠãã ~500MB ã«åãŸããªãã£ãå Žåãäžéšã®ãªãããŒãæäœã¯ã¡ã¢ãªå²ãåœãŠãšã©ãŒã§ã¯ã©ãã·ã¥ããŸããã
ä¿®æ£ã¯éåžžã«ç°¡åã§ãããã³ã³ããã§äœ¿çšã§ãã RAM ã®éãå¢å ããŸããããã®åŸããã®ãããªåé¡ããã£ãããšããå¿ããŠããŸããã
åé¡ XNUMX
ã¯ã©ã¹ã¿ãŒã®èµ·åãã 4 ïœ 5 æ¥åŸãããŒã¿ ããŒããå®æçã«ã¯ã©ã¹ã¿ãŒããå€ãã10 ïœ 20 ç§åŸã«ã¯ã©ã¹ã¿ãŒã«å
¥ãå§ããŠããããšã«æ°ä»ããŸããã
ç§ãã¡ããããç解ãå§ãããšãããElasticsearch ã®ãã®ãªãããŒã ã¡ã¢ãªã¯ãŸã£ããå¶åŸ¡ãããŠããªãããšãå€æããŸãããã³ã³ããã«ããã«å€ãã®ã¡ã¢ãªãäžãããšããã€ã¬ã¯ã ãããã¡ ããŒã«ã«ããŸããŸãªæ å ±ãå ¥ããããšãã§ããElasticsearch ããæ瀺ç㪠GC ãèµ·åãããåŸã§ã®ã¿ã¯ãªã¢ãããŸããã
å Žåã«ãã£ãŠã¯ããã®æäœã«ã¯éåžžã«é·ãæéããããããã®éã«ã¯ã©ã¹ã¿ãŒã¯ãã®ããŒãããã§ã«çµäºããŠãããšããŒã¯ããããšãã§ããŸããããã®åé¡ã¯ãã説æãããŠããŸã
解決çã¯æ¬¡ã®ãšããã§ãããããã®æäœã«ããŒãå€ã®ã¡ã¢ãªã®å€§éšåã䜿çšãã Java ã®æ©èœãå¶éããŸãããããã 16 ã®ã¬ãã€ã (-XX:MaxDirectMemorySize=16g) ã«å¶éããæ瀺ç㪠GC ãããé »ç¹ã«åŒã³åºãããããé«éã«åŠçãããããã«ããŸãããããã«ãããã¯ã©ã¹ã¿ãŒãäžå®å®ã«ãªãããšã¯ãªããªããŸããã
åé¡ 3
ãäºæãã¬ç¬éã«ããŒããã¯ã©ã¹ã¿ãŒããé¢è±ããããšããåé¡ã¯è§£æ±ºãããšèããŠãããªããããã¯ééãã§ãã
ã€ã³ããã¯ã¹ã䜿çšããäœæ¥ãæ§æãããšãã«ãmmapfs ãéžæããŸããã
ãã®åäœã解決ããããã«ãæåã«æšæºã® niofs ã«åãæ¿ãã次㫠Elastic ã®ç¬¬ 5 ããŒãžã§ã³ãã第 6 ããŒãžã§ã³ã«ç§»è¡ãããšãã«ãhybridfs ãè©ŠããŸãããããã®åé¡ã¯åçŸãããŸããã§ãããã¹ãã¬ãŒãžã®çš®é¡ã«ã€ããŠè©³ããèªãããšãã§ããŸã
åé¡ 4
次ã«ãå¥ã®éåžžã«èå³æ·±ãåé¡ããããèšé²çãªéãã§åŠçãããŸããããã¿ãŒã³ããŸã£ããç解ã§ããªãã£ãã®ã§ã2ã3ãæãããŠæãŸããŸããã
æã ãã³ãŒãã£ããŒã¿ãŒããã« GC ã«è¡ããéåžžã¯æŒé£åŸãããããæ»ã£ãŠããªãã£ãããšããããŸããåæã«ãGC é 延ããã°ã«èšé²ãããšã次ã®ããã«èŠããŸããããã¹ãŠãé 調ã«é²ãã§ããã®ã«ãçªç¶ãã¹ãŠãéåžžã«æªããªããŸããã
æåãç§ãã¡ã¯ãã³ãŒãã£ããŒã¿ãŒãäœæ¥ã¢ãŒãããå€ãäœããã®ãªã¯ãšã¹ããéå§ããéªæªãªãŠãŒã¶ãŒããããšèããŸãããç§ãã¡ã¯ãäœãèµ·ãã£ãŠããã®ãã解æããããã«ãéåžžã«é·ãéãªã¯ãšã¹ããèšé²ããŸããã
ãã®çµæããŠãŒã¶ãŒã巚倧ãªãªã¯ãšã¹ããéå§ãããããç¹å®ã® Elasticsearch ã³ãŒãã£ããŒã¿ãŒã«å°éããç¬éã«ãäžéšã®ããŒããä»ã®ããŒããããå¿çã«æéããããããšãå€æããŸããã
ãããŠãã³ãŒãã£ããŒã¿ãŒã¯ãã¹ãŠã®ããŒãããã®å¿çãåŸ ã£ãŠããéã«ããã§ã«å¿çããããŒãããéä¿¡ãããçµæãèç©ããŸãã GC ã®å Žåãããã¯ããŒãã®äœ¿çšãã¿ãŒã³ãéåžžã«æ¥éã«å€åããããšãæå³ããŸãããããŠãç§ãã¡ã䜿çšãã GC ã¯ãã®ã¿ã¹ã¯ã«å¯Ÿå¿ã§ããŸããã§ããã
ãã®ç¶æ³ã§ã¯ã©ã¹ã¿ãŒã®åäœãå€æŽããããã«èŠã€ãã£ãå¯äžã®ä¿®æ£ã¯ãJDK13 ãžã®ç§»è¡ãš Shenandoah ã¬ããŒãž ã³ã¬ã¯ã¿ãŒã®äœ¿çšã§ããããã§åé¡ã¯è§£æ±ºããã³ãŒãã£ããŒã¿ãŒã®èœäžã¯æ¢ãŸããŸããã
ãã㧠Java ã®åé¡ã¯çµããã垯åå¹ ã®åé¡ãå§ãŸããŸããã
Elasticsearch ã䜿çšãããããªãŒã: ã¹ã«ãŒããã
ã¹ã«ãŒãããã«åé¡ããããããã¯ã©ã¹ã¿ãŒã¯å®å®ããŠåäœããŸãããã€ã³ããã¯ã¹ä»ãããã¥ã¡ã³ãæ°ã®ããŒã¯æãæäœäžã«ããã©ãŒãã³ã¹ãäžååã«ãªããŸãã
æåã«çºçããçç¶ã¯ãæ¬çªç°å¢ã§ã®ãççºãäžã«ãéåžžã«å€ãã®ãã°ãçªç¶çæãããã€ã³ããã¯ã¹äœæãšã©ãŒ es_rejected_execution ã Graylog ã§é »ç¹ã«ç¹æ» ãå§ããããšã§ãã
ããã¯ãElasticsearch ãã€ã³ããã¯ã¹äœæãªã¯ãšã¹ããåŠçããŠãã£ã¹ã¯äžã®ã·ã£ãŒãã«æ
å ±ãã¢ããããŒãã§ããããã«ãªããŸã§ã200 ã€ã®ããŒã¿ ããŒãäžã® thread_pool.write.queue ãããã©ã«ã㧠XNUMX ãªã¯ãšã¹ããããã£ãã·ã¥ã§ããªããšããäºå®ã«ãããã®ã§ãããããŠã
ãã¡ããããã®å€ãå€æŽããŠæ¬¡ã®ããšãããããŸãããå ·äœçã«ã¯ããã®èšå®ã§ã¯ãæ倧 300 ã®ãªã¯ãšã¹ããéåžžã«ãããã£ãã·ã¥ãããå€ãé«ããªããšãåã³ãã« GC ã«çªå ¥ãããšããäºå®ãçºçããŸãã
ããã«ãããã㯠3 ã€ã®ãªã¯ãšã¹ãå ã§å°çããã¡ãã»ãŒãžã®ãããã§ãããããé »ç¹ã«å°ããªãããã§æžã蟌ãã®ã§ã¯ãªãã倧ããªãããã§æžã蟌ããããããããŸã å®äºããŠããªãå Žå㯠XNUMX ç§ã« XNUMX åæžã蟌ãããã«ãGraylog ã調æŽããå¿ èŠããããŸããããã®å ŽåãElasticsearch ã«æžã蟌ãã æ å ±ã¯ XNUMX ç§ã§ã¯ãªã XNUMX ç§ã§å©çšå¯èœã«ãªãããšãããããŸã (ããã¯ç§ãã¡ã«ãšã£ãŠéåžžã«é©ããŠããŸã)ãæ å ±ã®å±±ãæžããŸãã
ããã¯ãã©ããã§äœããã¯ã©ãã·ã¥ããããã«ã€ããŠççã«å ±åãããããªç¬éã«ãå®å šã«ã¹ãã ã¡ãŒã«ãéä¿¡ããã Elastic ãããã°ãããããšãããã¡ã®è©°ãŸãã«ããåäœäžèœã«ãªã Graylog ããŒããçºçããªãããã«ããããã«ç¹ã«éèŠã§ãã
ããã«ãæ¬çªç°å¢ã§åæ§ã®ççºãçºçãããšããããã°ã©ããŒããã¹ã¿ãŒããèŠæ ãåããŸããããã°ãæ¬åœã«å¿ èŠãªãšãã«ããã°ãæäŸãããã®ãéåžžã«é ãã£ãã®ã§ãã
圌ãã¯ãããç解ãå§ããŸãããäžæ¹ã§ãæ€çŽ¢ã¯ãšãªãšã€ã³ããã¯ã¹äœæã¯ãšãªã®äž¡æ¹ãåºæ¬çã«åãç©çãã·ã³äžã§åŠçãããäœããã®åœ¢ã§äžå®ã®ãããŒããŠã³ãçºçããããšã¯æããã§ããã
ããããElasticsearch ã® 6 çªç®ã®ããŒãžã§ã³ã§ã¯ãã©ã³ãã ãªã©ãŠã³ãããã³åå (ã€ã³ããã¯ã¹ä»ããå®è¡ãããã©ã€ã㪠ããŒã¿ãä¿æããã³ã³ãã) ã«åŸããã«ãé¢é£ããããŒã¿ ããŒãéã§ã¯ãšãªãåæ£ã§ããã¢ã«ãŽãªãºã ãç»å Žãããšããäºå®ã«ãããããã¯éšåçã«åé¿ãããå¯èœæ§ããããŸãã -ã·ã£ãŒãã¯éåžžã«ããžãŒã§ããå¯èœæ§ããããããã«å¿çããæ¹æ³ã¯ãããŸãã)ããã®ãªã¯ãšã¹ããã¬ããªã«ã·ã£ãŒããåããè² è·ã®å°ãªãã³ã³ãããŒã«è»¢éãããšãå¿çãã¯ããã«éããªããŸããã€ãŸããuse_adaptive_replica_selection: true ã«å°éããŸããã
èªæžã®çµµã¯æ¬¡ã®ããã«ãªããŸãã
ãã®ã¢ã«ãŽãªãºã ãžã®ç§»è¡ã«ããã倧éã®ãã°ãæžã蟌ãéã®ã¯ãšãªæéãå€§å¹ ã«ççž®ã§ããããã«ãªããŸããã
æåŸã«ãäž»ãªåé¡ã¯ãããŒã¿ã»ã³ã¿ãŒã®èŠçã䌎ããªãæ€å»ã§ããã
1 ã€ã® DC ãšã®æ¥ç¶ã倱ãããçŽåŸã«ã¯ã©ã¹ã¿ãŒã«æ±ããŠãããã®ã¯æ¬¡ã®ãšããã§ãã
- é害ãçºçããããŒã¿ã»ã³ã¿ãŒã«çŸåšã®ãã¹ã¿ãŒãããå ŽåããããåéžæãããããŒã«ãšããŠå¥ã® DC ã®å¥ã®ããŒãã«ç§»åãããŸãã
- ãã¹ã¿ãŒã¯ãã¢ã¯ã»ã¹ã§ããªããã¹ãŠã®ããŒããã¯ã©ã¹ã¿ãŒããè¿ éã«åé€ããŸãã
- æ®ãã®ã·ã£ãŒãã«åºã¥ããŠã圌ã¯ç解ããã§ãããã倱ãããããŒã¿ ã»ã³ã¿ãŒã«ã¯ããããã®ãã©ã€ã㪠ã·ã£ãŒãããããæ®ãã®ããŒã¿ ã»ã³ã¿ãŒã§è£å®çãªã¬ããªã« ã·ã£ãŒããããã«ææ ŒãããããŒã¿ã®ã€ã³ããã¯ã¹äœæãç¶è¡ããŸãã
- ãã®çµæãã¯ã©ã¹ã¿ãŒã®æžã蟌ã¿ããã³èªã¿åãã®ã¹ã«ãŒãããã¯åŸã ã«äœäžããŸãããäžè¬çã«ã¯ããã£ããã§ã¯ãããŸããããã¹ãŠãå®å®ããŠåäœããŸãã
çµå±ã®ãšãããç§ãã¡ã¯æ¬¡ã®ãããªãã®ãæãã§ããã®ã§ãã
ãããŠã次ã®ãã®ãåŸãããŸããã
ããã¯ã©ãããã®ã§ããïŒ
ããŒã¿ã»ã³ã¿ãŒãããŠã³ãããšãããã¹ã¿ãŒãããã«ããã¯ã«ãªããŸããã
ãªãã§ããïŒ
å®éããã¹ã¿ãŒã«ã¯ãã¯ã©ã¹ã¿ãŒå ã®ç¹å®ã®ã¿ã¹ã¯ãšã€ãã³ããåæ£ãã圹å²ãæ ã TaskBatcher ããããŸããããŒãã®çµäºãã¬ããªã«ãããã©ã€ããªãžã®ã·ã£ãŒãã®ææ Œãã©ããã«ã·ã£ãŒããäœæããã¿ã¹ã¯ - ããããã¹ãŠã¯æåã« TaskBatcher ã«éããããã㧠1 ã€ã®ã¹ã¬ããã§é 次åŠçãããŸãã
1 ã€ã®ããŒã¿ã»ã³ã¿ãŒãæ€éããéãçãæ®ã£ãããŒã¿ã»ã³ã¿ãŒã®ãã¹ãŠã®ããŒã¿ ããŒãããã¹ã¿ãŒã«ãããããã®ã·ã£ãŒããšããããã®ããŒã¿ ããŒãã倱ãããŸããããšéç¥ããããšãèªåãã¡ã®çŸ©åã§ãããšèããŠããããšãå€æããŸããã
åæã«ãçãæ®ã£ãããŒã¿ ããŒãã¯ããããã¹ãŠã®æ å ±ãçŸåšã®ãã¹ã¿ãŒã«éä¿¡ãããã¹ã¿ãŒããããåãå ¥ãããšãã確èªãåŸ æ©ããããšããŸããããã¹ã¿ãŒã¯çãããããæ©ãã¿ã¹ã¯ãåãåã£ãã®ã§ã圌ãã¯ãããåŸ ã¡ãŸããã§ãããããŒãã¯ç¹°ãè¿ãã®ãªã¯ãšã¹ãã§ã¿ã€ã ã¢ãŠãã«ãªãããã®æç¹ã®ãã¹ã¿ãŒã¯ãªã¯ãšã¹ãã«å¿çããããšãããããªã¯ãšã¹ããåªå 床ã«ãã£ãŠåé¡ããäœæ¥ã«å®å šã«æ²¡é ããŠããŸããã
æçµçãªåœ¢åŒã§ã¯ãããŒã¿ ããŒãããã¹ã¿ãŒã«ãã« GC ã«è³ããŸã§ã¹ãã éä¿¡ãè¡ã£ãŠããããšãå€æããŸããããã®åŸããã¹ã¿ãŒã®åœ¹å²ã次ã®ããŒãã«ç§»åããŸãããããŸã£ããåãããšããã®ããŒãã§ãçºçãããã®çµæã¯ã©ã¹ã¿ãŒãå®å šã«åŽ©å£ããŸããã
枬å®ãè¡ã£ããšããããã®åé¡ãä¿®æ£ãããããŒãžã§ã³ 6.4.0 ããåã§ã¯ãã¯ã©ã¹ã¿ãŒãå®å šã«ã·ã£ããããŠã³ããã«ã¯ã10 åã®ããŒã¿ ããŒãã®ãã¡ 360 åã ããåæã«åºåããã ãã§ååã§ããã
次ã®ãããªæãã§ããã
ãã®ã²ã©ããã°ãä¿®æ£ãããããŒãžã§ã³ 6.4.0 以éãããŒã¿ ããŒãã¯ãã¹ã¿ãŒã匷å¶çµäºããªããªããŸãããããããããã§åœŒã¯ãè³¢ããªã£ããããã§ã¯ãããŸãããã€ãŸãã2ã3ããŸã㯠10 (XNUMX 以å€ã®ä»»æã®æ°) ã®ããŒã¿ ããŒããåºåãããšããã¹ã¿ãŒã¯ããŒã A ãé¢è±ãããšããæåã®ã¡ãã»ãŒãžãåãåããããŒã BãããŒã CãããŒã D ã«ãã®ããšãäŒããããšããŸãã
ãããŠçŸæç¹ã§ã¯ãããã«å¯ŸåŠããã«ã¯ã誰ãã«äœããäŒããããšããè©Šã¿ã«çŽ 20 ïœ 30 ç§ã®ã¿ã€ã ã¢ãŠããèšå®ããããŒã¿ã»ã³ã¿ãŒãã¯ã©ã¹ã¿ãŒããå€ã«ç§»åããé床ãå¶åŸ¡ããããšã«ãã£ãŠã®ã¿å¯ŸåŠã§ããŸãã
ååãšããŠãããã¯ãããžã§ã¯ãã®äžéšãšããŠæçµè£œåã«æåã«æ瀺ãããèŠä»¶ã«é©åããŸããããçŽç²ãªç§åŠãã®èŠ³ç¹ããèŠããšãããã¯ãã°ã§ããã¡ãªã¿ã«ãããã¯éçºè ã«ãã£ãŠããŒãžã§ã³ 7.2 ã§æ£åžžã«ä¿®æ£ãããŸããã
ããã«ãç¹å®ã®ããŒã¿ ããŒããåæ¢ãããšãããã®ããŒãã«ããããã®ãã©ã€ã㪠ã·ã£ãŒããããããšãã¯ã©ã¹ã¿ãŒå šäœã«äŒãããããããã®çµäºã«é¢ããæ å ±ãåºããããšã®æ¹ãéèŠã§ããããšãããããŸããïŒå¥ã®ããŒã¿ã®ã¬ããªã« ã·ã£ãŒããææ ŒãããããïŒãã©ã€ããªã®äžå¿ãããã³æ å ±ã«ããããæžã蟌ãããšãã§ããŸãïŒã
ãããã£ãŠããã¹ãŠããã§ã«åæ¢ããŠããå Žåã解æŸãããããŒã¿ ããŒãã¯ããã«ã¯å€ããã®ãšããŠããŒã¯ãããŸããããããã£ãŠã解æŸãããããŒã¿ ããŒããžã®ãã¹ãŠã® ping ãã¿ã€ã ã¢ãŠãã«ãªããŸã§åŸ
ã€ããšãäœåãªãããããã®åŸã«ãªã£ãŠåããŠãã¯ã©ã¹ã¿ãŒããããããã§æ
å ±ã®èšé²ãç¶ããå¿
èŠãããããšãéç¥ãå§ããŸããããã«ã€ããŠè©³ããèªãããšãã§ããŸã
ãã®çµæãä»æ¥ã®ããŒã¿ã»ã³ã¿ãŒã®æ€éäœæ¥ã«ã¯ãã©ãã·ã¥ã¢ã¯ãŒæã« 5 åã»ã©ããããŸãããã®ãããªå€§ãããŠäžåšçšãªå·šåã«ããŠã¯ãããã¯ããªãè¯ãçµæã§ãã
ãã®çµæã次ã®ãããªæ±ºå®ã«è³ããŸããã
- 360 ã®ã¬ãã€ãã®ãã£ã¹ã¯ãåãã 700 ã®ããŒã¿ ããŒãããããŸãã
- ãããã®åãããŒã¿ ããŒããä»ããŠãã©ãã£ãã¯ãã«ãŒãã£ã³ã°ããããã® 60 ã®ã³ãŒãã£ããŒã¿ãŒã
- 40 ããåã®ããŒãžã§ã³ããäžçš®ã®éºç£ãšããŠæ®ãã 6.4.0 åã®ãã¹ã¿ãŒ - ããŒã¿ã»ã³ã¿ãŒã®æ€éåŸãçãæ®ãããã«ãããšãããŒã¿ã»ã³ã¿ãŒã®æ€éã§ãã£ãŠããã¹ã¿ãŒã®ã¯ã©ãŒã©ã ã確ä¿ããããã«æ°å°ã®ãã·ã³ã倱ãããšã¯èŠæããŠããŸãããææªã®ã·ããªãª
- 1 ã€ã®ã³ã³ãããŒã§ããŒã«ãçµåããããšãããšãé ããæ©ããè² è·ãããããšããŒããå£ãããšããäºå®ãçºçããŸãã
- ã¯ã©ã¹ã¿ãŒå šäœã§ 31 ã®ã¬ãã€ãã® heap.size ã䜿çšãããŸãããµã€ãºãåæžããããšãããšãå é ã«ã¯ã€ã«ãã«ãŒãã䜿çšãã倧éã®æ€çŽ¢ã¯ãšãªã§äžéšã®ããŒãã匷å¶çµäºãããããElasticsearch èªäœã§ãµãŒããã ãã¬ãŒã«ãŒãçºçãããã®ã©ã¡ããã«ãªããŸãã
- ããã«ãæ€çŽ¢ããã©ãŒãã³ã¹ã確ä¿ããããã«ããã¹ã¿ãŒã§çºçããããã«ããã¯ã§åŠçããã€ãã³ããã§ããã ãå°ãªãããããã«ãã¯ã©ã¹ã¿ãŒå ã®ãªããžã§ã¯ãã®æ°ãã§ããã ãå°ãªãä¿ã€ããã«ããŸããã
æåŸã«ã¢ãã¿ãªã³ã°ã«ã€ããŠ
ããããã¹ãŠãæå³ãããšããã«æ©èœããããšã確èªããããã«ã以äžãç£èŠããŸãã
- åããŒã¿ ããŒãã¯ããããååšãããã®äžã«ããããã®ã·ã£ãŒããããããšãã¯ã©ãŠãã«å ±åããŸããã©ããã§äœããæ¶æ» ããããšãã¯ã©ã¹ã¿ã¯ 2 ïœ 3 ç§åŸã«ãã»ã³ã¿ãŒ A ã§ããŒã 2ã3ãããã³ 4 ãæ¶æ» ããããšå ±åããŸããããã¯ãä»ã®ããŒã¿ ã»ã³ã¿ãŒã§ã¯ããããªãç¶æ³ã«ãããŠããã·ã£ãŒãã XNUMX ã€ãããªãããŒããæ¶æ» ãããããšã¯ã§ããªãããšãæå³ããŸããå·Šã
- ãã¹ã¿ãŒã®è¡åã®æ§è³ªãç解ããŠããã®ã§ãç§ãã¡ã¯ä¿çäžã®ã¿ã¹ã¯ã®æ°ã泚ææ·±ã調ã¹ãŸãããªããªããã¹ã¿ãã¯ããã¿ã¹ã¯ã 1 ã€ã§ãæéå ã«ã¿ã€ã ã¢ãŠãããªããšãçè«çã«ã¯ç·æ¥äºæ ãçºçããããšãã°ãã©ã€ããªã§ã®ã¬ããªã« ã·ã£ãŒãã®ææ Œãæ©èœããªããªããã€ã³ããã¯ã¹äœæãæ©èœããªããªãåå ãšãªãå¯èœæ§ããããŸãã
- ãŸããæé©åäžã«ãã§ã«å€§ããªåé¡ãçºçããŠãããããã¬ããŒãž ã³ã¬ã¯ã¿ãŒã®é 延ã«ã€ããŠãéåžžã«æ³šææ·±ã芳å¯ããŠããŸãã
- ã¹ã¬ããããšã«æåŠããããšã§ãããã«ããã¯ãã©ãã«ããã®ããäºåã«ææ¡ããŸãã
- ããã§ãããããŒããRAMãI/O ãªã©ã®æšæºçãªã¡ããªã¯ã¹ã§ãã
ã¢ãã¿ãªã³ã°ãæ§ç¯ãããšãã¯ãElasticsearch ã®ã¹ã¬ãã ããŒã«ã®æ©èœãèæ
®ããå¿
èŠããããŸãã
çµè«ãšããŠèšãããã®ã¯ãããã£ãïŒããšããããšã§ããç§ãã¡ã¯ããã°ã©ããŒãšéçºè ã«ãã»ãŒã©ã®ãããªç¶æ³ã§ããæ¬çªç°å¢ã§äœãèµ·ãã£ãŠãããã«é¢ããæ å ±ãè¿ éãã€ç¢ºå®ã«æäŸã§ããããŒã«ãæäŸããããšãã§ããŸããã
ã¯ããçµæçã«ã¯éåžžã«è€éã§ããããšãå€æããŸããããããã§ãç§ãã¡ã¯èªåãã¡ã®åžæãæ¢åã®è£œåã«ããŸãé©åãããããšãã§ããèªåãã¡ã§ããããåœãŠããæžãçŽãããããå¿ èŠã¯ãããŸããã§ããã
åºæïŒ habr.com