Beenslab Blog

๐Ÿ”ฅ Redis ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ์œผ๋กœ ์ธํ•œ ์„œ๋น„์Šค ์žฅ์•  ๋Œ€์‘๊ธฐ(Redis EXECABORT Transaction discarded because of previous errors)

beenchangseoยท2024๋…„ 3์›” 15์ผHits

๐Ÿงจ ๋ฌธ์ œ ์ƒํ™ฉ: ๊ฑฐ๋ž˜์†Œ ๋งˆ์ผ“ ๋ฐ์ดํ„ฐ ๋ชจ๋“ˆ์—์„œ ์žฅ์•  ๋ฐœ์ƒ

์ง€๋‚œ ์ฃผ๋ง, ๊ฑฐ๋ž˜์†Œ ๋งˆ์ผ“ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ชจ๋“ˆ์˜ ์žฅ์• ๋กœ ์ธํ•ด ์ „์ฒด ์„œ๋น„์Šค๊ฐ€ ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ์˜ ๋ชจ๋“ˆ์€ Kubernetes ํ™˜๊ฒฝ์—์„œ ๋ฐฐํฌ๋œ pod์˜€์œผ๋ฉฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ ๋กœ๊ทธ์™€ ํ•จ๊ป˜ ๋ฌดํ•œ ์žฌ๊ธฐ๋™ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

Uahandeled promise rejection occured!
[ErrorReply: EXECABORT Transaction discarded because of previous errors.]

๐Ÿ•ต๏ธ ์›์ธ ๋ถ„์„: Redis ํŠธ๋žœ์žญ์…˜ EXECABORT

์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ์ค‘ ํ•ต์‹ฌ์€ ๋‹ค์Œ ๋ถ€๋ถ„์ด์—ˆ์Šต๋‹ˆ๋‹ค:

EXECABORT Transaction discarded because of previous errors.

Redis์˜ EXECABORT๋Š” ๋ณดํ†ต ํŠธ๋žœ์žญ์…˜ ๋‚ด๋ถ€์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— exec์ด ์ทจ์†Œ๋˜์—ˆ์„ ๋•Œ ๋‚˜ํƒ€๋‚˜๋Š” ๋ฉ”์‹œ์ง€์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ์›์ธ์€ ๋‹ค์Œ ์„ธ ๊ฐ€์ง€ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค:

  1. ์ž˜๋ชป๋œ ๋ช…๋ น ์‹คํ–‰
    • ํŠธ๋žœ์žญ์…˜ ๋ธ”๋ก ๋‚ด์—์„œ ์ž˜๋ชป๋œ Redis ๋ช…๋ น์–ด๊ฐ€ ์‹คํ–‰๋จ
  2. WATCHํ•œ ํ‚ค ๋ณ€๊ฒฝ ์‹œ๋„
    • ํŠธ๋žœ์žญ์…˜ ๋„์ค‘ ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ฐ์‹œ ์ค‘์ธ key๋ฅผ ๋ณ€๊ฒฝํ•จ
  3. Redis ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ
    • ์„ค์ •๋œ ๋ฉ”๋ชจ๋ฆฌ ํ•œ๋„๋ฅผ ์ดˆ๊ณผํ•˜์—ฌ ๋ช…๋ น ์‹คํ–‰์ด ์‹คํŒจํ•จ

์ด๋ฒˆ ์žฅ์• ์—์„œ๋Š” ์ตœ๊ทผ ๊ธฐ๋Šฅ ๋ณ€๊ฒฝ ๋‚ด์—ญ์ด ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ๊ฐ€๋Šฅ์„ฑ์— ๋ฌด๊ฒŒ๋ฅผ ๋‘์—ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Š ๋ฉ”๋ชจ๋ฆฌ ์ƒํƒœ ํ™•์ธ

๋‹ค์Œ ๋ช…๋ น์–ด๋กœ Redis ์ธ์Šคํ„ด์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ์ƒํ™ฉ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค:

redis-cli info | grep memory

๊ฒฐ๊ณผ์ ์œผ๋กœ, Redis ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•œ๊ณ„์— ๋„๋‹ฌํ•œ ์ƒํƒœ์˜€๊ณ , ์ตœ๊ทผ ๋ฐฐํฌ๋œ ๋Œ€์šฉ๋Ÿ‰ ๋ฒŒํฌ ๋ฉ”์ผ ์ฒ˜๋ฆฌ ๋กœ์ง์ด ์ฃผ์š” ์›์ธ์œผ๋กœ ๋ณด์˜€์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ๋กœ์ง์€ Redis๋ฅผ ํ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋ฉฐ ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ์—ˆ๊ณ , ์˜ˆ์ƒ๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์†Œ๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿงฏ ๋ฌธ์ œ ํ•ด๊ฒฐ ๊ณผ์ •

โœ… ์ž„์‹œ ์กฐ์น˜

  1. ์ฒ˜๋ฆฌ๋˜์ง€ ๋ชปํ•œ job๋“ค์„ ๋ฐฑ์—…
    • ์žฌ์ „์†ก์„ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ๋ฐฑ์—… ์ˆ˜ํ–‰
  2. ์žฅ์•  ์œ ๋ฐœ Redis key ์ œ๊ฑฐ
    • ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ๋กœ ์ธํ•ด ๋ˆ„์ ๋œ ๋Œ€๊ธฐ์—ด key ์‚ญ์ œ

๐Ÿ’ก ์˜๊ตฌ ์กฐ์น˜

  • AWS Redis ์ธ์Šคํ„ด์Šค ์šฉ๋Ÿ‰ ์ฆ์„ค
    • ๊ธฐ์กด 2GB โ†’ 4GB๋กœ ํ™•์žฅ
  • ๋‚จ์€ ๋ฒŒํฌ ๋ฉ”์ผ ์ •์ƒ ์ฒ˜๋ฆฌ
    • ์žฅ์• ๋กœ ๋ˆ„์ ๋œ ๋ฐ์ดํ„ฐ ์•ˆ์ •์ ์œผ๋กœ ์†Œ๋น„

๐Ÿ›  ๊ฐœ์„  ๊ณ„ํš

์ด๋ฒˆ ์žฅ์• ๋ฅผ ํ†ตํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฐœ์„  ๋ฐฉํ–ฅ์„ ๋„์ถœํ–ˆ์Šต๋‹ˆ๋‹ค:

  • ๐Ÿ” ์ž๋™ ์Šค์ผ€์ผ ์•„์›ƒ ๋กœ์ง ๋„์ž…

    Redis ์‚ฌ์šฉ๋Ÿ‰์ด ์ผ์ • ๊ธฐ์ค€ ์ด์ƒ์ผ ๊ฒฝ์šฐ, ์ž๋™ ์•Œ๋ฆผ ๋˜๋Š” ์Šค์ผ€์ผ๋ง ์ฒ˜๋ฆฌ

  • ๐Ÿ“ฆ Redis ์ธ์Šคํ„ด์Šค ๋ถ„๋ฆฌ

    ์•Œ๋ฆผ ์„œ๋น„์Šค ์ „์šฉ Redis ์ธ์Šคํ„ด์Šค๋ฅผ ๋ณ„๋„ ์šด์˜ํ•˜์—ฌ ๋ฉ”์ธ ์„œ๋น„์Šค์™€ ๊ฒฉ๋ฆฌ

โœ๏ธ ๋งˆ์น˜๋ฉฐ

์ฃผ๋ง์— ๋ฐœ์ƒํ•œ ๊ฐ‘์ž‘์Šค๋Ÿฌ์šด ์žฅ์• ์˜€์ง€๋งŒ, ๋น ๋ฅธ ๋กœ๊ทธ ํ™•์ธ๊ณผ ์›์ธ ์ถ”์ , ๊ตฌ์กฐ์  ๊ฐœ์„ ๊นŒ์ง€ ์ด์–ด์ง€๋ฉด์„œ ์˜๋ฏธ ์žˆ๋Š” ๊ฒฝํ—˜์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฌด์—‡๋ณด๋‹ค, **ํŠธ๋žœ์žญ์…˜ ์‹คํŒจ ๋ฉ”์‹œ์ง€(EXECABORT)**๋Š” Redis ์šด์˜ ์‹œ ์ž์ฃผ ์ ‘ํ•  ์ˆ˜ ์žˆ๋Š” ์ด์Šˆ์ด๋ฏ€๋กœ, ๋ฏธ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ์ƒํƒœ ๋ชจ๋‹ˆํ„ฐ๋ง๊ณผ ์šฉ๋Ÿ‰ ๊ณ„ํš์„ ์„ธ์›Œ๋‘๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.