Predis: ์„œ๋ฒ„์—์„œ ์ค„์„ ์ฝ๋Š” ๋™์•ˆ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2011๋…„ 06์›” 16์ผ  ยท  21์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: predis/predis

PHP 5.2 ๋ธŒ๋žœ์น˜์— redis ์‚ฌ์šฉํ•˜๊ธฐ. ์ž„์˜์˜ "์„œ๋ฒ„์—์„œ ์ค„์„ ์ฝ๋Š” ๋™์•ˆ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค" ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•œ ๋ช…๋ น์€ ์ง๋ ฌํ™”๋œ ๋ฌธ์ž์—ด lpush์ž…๋‹ˆ๋‹ค.

์ €๋Š” PHP ๋ฐ๋ชฌ ์Šคํฌ๋ฆฝํŠธ์—์„œ predis๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ํ•ญ์ƒ ์ž‘๋™ ์ค‘์ž…๋‹ˆ๋‹ค. redis.conf์˜ ์‹œ๊ฐ„ ์ œํ•œ์„ ์ด๋ฏธ 0์œผ๋กœ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋ฐ๋ชฌ๊ณผ ๊ฐ™์€ ์Šคํฌ๋ฆฝํŠธ์—์„œ Predis๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ œํ•œ ์‹œ๊ฐ„์„ ์™„์ „ํžˆ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด read_write_timeout ๋ฅผ -1 ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์ด ๊ฐ’์€ Predis์˜ ์ด์ „ ๋ฐ ์ตœ์‹  ๋ฒ„์ „์—์„œ ์ž‘๋™ํ•จ). ๋˜ํ•œ redis.conf ์—์„œ timeout = 0 ๋ฅผ ์„ค์ •ํ•˜์—ฌ Redis์˜ ๊ธฐ๋ณธ ์‹œ๊ฐ„ ์ดˆ๊ณผ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด Redis๋Š” 300์ดˆ ๋™์•ˆ ํ™œ๋™์ด

๋ชจ๋“  21 ๋Œ“๊ธ€

๋™์ผํ•œ ์ œ๋ชฉ์˜ ์ƒˆ ๋ฌธ์ œ๋ฅผ ์—ด๊ธฐ ์ „์— ์—ฌ๊ธฐ ์— ์ด ์Šค๋ ˆ๋“œ ๋„ ์ฐธ์กฐํ•˜์„ธ์š”. ํด๋ผ์ด์–ธํŠธ ์ธก ๋ฌธ์ œ์™€ ๊ด€๋ จ์ด ์—†๋Š” ๊ฒƒ์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

nrk๋‹˜ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. socket_timeout ๋ฐ read_write_timeout์„ ์„ค์ •ํ•˜๊ณ  ๋‚˜์ค‘์— ์—ฌ๊ธฐ์—์„œ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฐ๋ชฌ๊ณผ ๊ฐ™์€ ์Šคํฌ๋ฆฝํŠธ์—์„œ Predis๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ œํ•œ ์‹œ๊ฐ„์„ ์™„์ „ํžˆ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด read_write_timeout ๋ฅผ -1 ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์ด ๊ฐ’์€ Predis์˜ ์ด์ „ ๋ฐ ์ตœ์‹  ๋ฒ„์ „์—์„œ ์ž‘๋™ํ•จ). ๋˜ํ•œ redis.conf ์—์„œ timeout = 0 ๋ฅผ ์„ค์ •ํ•˜์—ฌ Redis์˜ ๊ธฐ๋ณธ ์‹œ๊ฐ„ ์ดˆ๊ณผ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด Redis๋Š” 300์ดˆ ๋™์•ˆ ํ™œ๋™์ด

nrk, ์–ธ๊ธ‰ํ•œ ๋Œ€๋กœ ์‹œ๋„ํ–ˆ์œผ๋ฉฐ ์ด์ œ ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๊ทธ๋Ÿฌ๋‚˜ ๋•Œ๋•Œ๋กœ ์—ฐ๊ฒฐ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ timeout = 0 ๋ฐ read_write_timeout์„ -1๋กœ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ด๋ฅผ ๋””๋ฒ„๊ทธํ•˜๊ธฐ ์œ„ํ•ด ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

timeout ๋Š” Predis์—์„œ ์ธ์‹ํ•˜๋Š” ์—ฐ๊ฒฐ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ connection_timeout ๋Œ€์‹  ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. connection_timeout ์˜ ๊ธฐ๋ณธ๊ฐ’์€ 5์ดˆ์ž…๋‹ˆ๋‹ค. ๊ฐ’์„ ๋†’์ผ ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์€ ์•„๋‹Œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์„œ๋ฒ„์—์„œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์‹ค์ œ๋กœ ๊ท€ํ•˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋ฏ€๋กœ ์ œ๊ฐ€ ๋„์›€์„ ๋“œ๋ฆด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‹œ๊ฐ„ ์ดˆ๊ณผ์˜ ๊ฐ€๋Šฅํ•œ ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. Redis ์„œ๋ฒ„๊ฐ€ localhost์— ์—†๋Š” ๊ฒฝ์šฐ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ๋ฌธ์ œ
  2. ์Šคํฌ๋ฆฝํŠธ ์–ด๋”˜๊ฐ€์—์„œ KEYS ๋ช…๋ น์— ๊ฐ’๋น„์‹ผ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๊นŒ? Redis์˜ ํ‚ค ์ €์žฅ์†Œ ์ˆ˜์— ๋”ฐ๋ผ KEYS ๊ฐ€ ์„œ๋ฒ„๋ฅผ ์ฐจ๋‹จํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ทธ ๋™์•ˆ ๋‹ค๋ฅธ ์š”์ฒญ์ด๋‚˜ ๋“ค์–ด์˜ค๋Š” ์—ฐ๊ฒฐ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ์€ ์ด ๋ฌธ์ œ๋ฅผ ์—ด์–ด ๋‘ก๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Predis์™€ ๊ด€๋ จ๋œ ๋ฌธ์ œ๊ฐ€ ์•„๋‹Œ ๊ฒƒ์€ ํ™•์‹คํ•ฉ๋‹ˆ๋‹ค.

nrk. ์กฐ์–ธํ•œ ๋Œ€๋กœ ๋‚˜๋Š” connection_timeout์„ 30์œผ๋กœ ์˜ฌ๋ ธ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  1. ์˜ˆ, ์šฐ๋ฆฌ๋Š” localhost๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ ์‚ฌ์„ค ๋„คํŠธ์›Œํฌ์— ์žˆ๋Š” ์—ฌ๋Ÿฌ redis ๋…ธ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(์ ์–ด๋„ ๋” ์•ˆ์ •์ ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?)
  2. ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” 900์ดˆ๋งˆ๋‹ค ์Šค๋ƒ…์ƒท์„ ์ฐ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ์—์„œ ์‹œ์Šคํ…œ์ด HD๋กœ ์ €์žฅํ•˜๋Š” ๋ฐ 8์ดˆ๊ฐ€ ๊ฑธ๋ฆฌ๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ ์‹œ๊ฐ„ ์ดˆ๊ณผ์˜ ์›์ธ์ด ๋˜์–ด์•ผ ํ•˜์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๊นŒ?
  3. ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ์„œ๋ฒ„๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์กฐ์–ธ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์‹œ๊ฐ„ ์ดˆ๊ณผ๋Š” ๊ฝค ๋ฌด์ž‘์œ„์ž…๋‹ˆ๋‹ค. redis ๋กœ๊ทธ๋ฅผ ํ™•์ธํ–ˆ๋Š”๋ฐ ๋Œ€๋ถ€๋ถ„ ๋ฉ”์‹œ์ง€ ์Šค๋ƒ…์ƒท์ž…๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ์—…๋ฐ์ดํŠธ๋กœ ์—ฐ๊ฒฐ์„ ์ธก์ •ํ–ˆ๋Š”๋ฐ ์‹ค์ œ๋กœ 5์ดˆ ํ›„์— ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ์„ ํ†ตํ•ด connection_timeout์„ ์ˆ˜์ •ํ•˜๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด Predis_Client($param, array('read_write_timeout' => -1, 'connection_timeout' => 30));

๊ทธ ๋งž์Šต๋‹ˆ๊นŒ? 30์ดˆ connection_timeout์ด ์ ์šฉ๋˜์ง€ ์•Š๊ณ  ์—ฌ์ „ํžˆ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ ์˜ต์…˜์ด ์•„๋‹Œ ์—ฐ๊ฒฐ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ด๋ฏ€๋กœ read_write_timeout ๋ฐ connection_timeout ๋Š” $param ์—์„œ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. Amazon EC2์˜ ์‚ฌ์„ค ๋„คํŠธ์›Œํฌ๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ(๋†’์€ ์ง€์—ฐ ์‹œ๊ฐ„ ๋ฐ ๋•Œ๋•Œ๋กœ ๋‹ค์–‘ํ•œ ๋ฌธ์ œ), ๊ทธ๋ ‡์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋‚ด๊ฐ€ ์•„๋Š” ํ•œ ์Šค๋ƒ…์ƒท์ด ์„œ๋ฒ„๋ฅผ ์ฐจ๋‹จํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.
  3. ์Šค๋ƒ…์ƒท ๋กœ๊ทธ์— ๋Œ€ํ•ด ์‹œ๊ฐ„ ์ดˆ๊ณผ์˜ ํƒ€์ด๋ฐ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์™ธ์—๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์•„ํ‚คํ…์ฒ˜์™€ ์ธํ”„๋ผ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์ฃ„์†กํ•˜์ง€๋งŒ ์ด์— ๋Œ€ํ•œ ์ง€์›์€ ๋“œ๋ฆด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์†”์งํžˆ ๋งํ•ด์„œ, Predis๋Š” ํ˜ธ์ŠคํŠธ์— ์—ฐ๊ฒฐํ•  ๋•Œ ์†Œ์ผ“ ๋ฆฌ์†Œ์Šค๋กœ ๋ฉ‹์ง„ ์ž‘์—…์„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ฑฐ์˜ ์ „์ ์œผ๋กœ PHP์˜ ๋‚ด๋ถ€์— ์œ„์ž„๋œ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— PHP์˜ ๋ฒ„๊ทธ(๊ฐ€๋Šฅ์„ฑ์€ ๋‚ฎ์ง€๋งŒ ์—ฌ์ „ํžˆ ๊ฐ€๋Šฅ์„ฑ ์žˆ์Œ) ๋˜๋Š” ์ผ๋ถ€ ๊ตฌ์„ฑ/๋Ÿฐํƒ€์ž„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„์— ๋ฌธ์ œ๊ฐ€ ์žˆ๊ฑฐ๋‚˜ Redis๊ฐ€ ์ž ์‹œ ๋™์•ˆ ์„œ๋ฒ„๋ฅผ ์ฐจ๋‹จํ•˜๋Š” ๊ณผ์ค‘ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

nrk๋‹˜, ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋‹ต๋ณ€ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ๋Š”๋ฐ ip_conntrack ๋ฌธ์ œ๊ฐ€ ์„œ๋ฒ„์—์„œ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค. conntrack์ด ์ˆ˜์ •๋˜๋ฉด ์—ฐ๊ฒฐ ์‹œ๊ฐ„ ์ดˆ๊ณผ๋„ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

์‹œ๊ฐ„ ์ดˆ๊ณผ ๋’ค์— ์ˆจ๊ฒจ์ง„ ์‹ค์ œ ๋ฌธ์ œ๋ฅผ ๋งˆ์นจ๋‚ด ์ฐพ์•˜๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž์—๊ฒŒ ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ์ดˆ๊ธฐ ๊ฒ€์‚ฌ ๋ชฉ๋ก์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด FAQ์˜ ์–ด๋”˜๊ฐ€์— ์ด๊ฒƒ์„ ์ถ”๊ฐ€ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

read_write_timeout์„ 0์œผ๋กœ ์„ค์ •ํ•˜์—ฌ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
๋‚˜๋Š” predis์—์„œ ๊ทธ๋ ‡๊ฒŒ ํ–ˆ๋Š”๋ฐ predis ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋˜‘๊ฐ™์ด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
์—ฌ๊ธฐ์— ํ‘œ์‹œ๋œ ๋Œ€๋กœ http://code.google.com/p/dires/source/browse/trunk/predis/examples/PubSubContext.php?r=4
๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ predis ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. $redis = new Predis\Client("tcp://".$turboConfig->getActivitiesRedisHost()); ๋‚ด ๊ตฌํ˜„์—์„œ ์–ด๋–ป๊ฒŒ read_write_timeout์„ ์ „๋‹ฌํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ?

@amitchhajer ํด๋ผ์ด์–ธํŠธ๋Š” ๋ช…๋ช…๋œ ๋ฐฐ์—ด ๋˜๋Š” URI ๋ฌธ์ž์—ด ๋ชจ๋‘์™€ ๋™์ผํ•œ ์—ฐ๊ฒฐ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ—ˆ์šฉํ•˜๋ฏ€๋กœ URI ๋ฌธ์ž์—ด์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ฟผ๋ฆฌ ๋ฌธ์ž์—ด์ธ ๊ฒƒ์ฒ˜๋Ÿผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. tcp://127.0.0.1:6379?read_write_timeout=0 .

@nrk ์ •๋ณด ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค, ์ง€๊ธˆ์€ ๊ฝค ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋Ÿฐํƒ€์ž„์— read_write_timeout์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ํ•ฉ๋‹ˆ๊นŒ? ํƒ€์ž„์•„์›ƒ ๋งค๊ฐœ๋ณ€์ˆ˜(์ƒ์„ฑ์ž ์ œ์™ธ)์— ๋Œ€ํ•œ ์„ค์ •์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

@bondeg ์—ฐ๊ฒฐ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์˜๋„์ ์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์—ฐ๊ฒฐ์ด ์ดˆ๊ธฐํ™”๋˜๋ฉด ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์ง€๋งŒ ํด๋ผ์ด์–ธํŠธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์—ฐ๊ฒฐ ๊ฐœ์ฒด์—์„œ ๊ธฐ๋ณธ ์ŠคํŠธ๋ฆผ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€์ ธ์™€์„œ ์ŠคํŠธ๋ฆผ ์˜ต์…˜์„ ์ ์ ˆํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•˜์—ฌ ์ด ์ œํ•œ์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ํด๋Ÿฌ์Šคํ„ฐ ๋˜๋Š” ๋ณต์ œ ๋ชจ๋“œ์—์„œ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๊ฐ€์ •ํ•œ ์ž‘์€ ์Šค๋‹ˆํŽซ์ž…๋‹ˆ๋‹ค.

$connection = $client->getConnection();
$stream = $connection->getResource();
stream_set_timeout($stream, 2);

$connection->getResource() ์ˆ˜ํ–‰ํ•˜๋ฉด Redis์— ๋Œ€ํ•œ connect() ์ž‘์—…์ด ํšจ๊ณผ์ ์œผ๋กœ ํŠธ๋ฆฌ๊ฑฐ๋˜๋ฏ€๋กœ ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ ์ง€์—ฐ ์—ฐ๊ฒฐ์˜ ์ด์ ์„ ์žƒ๊ฒŒ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

connection_timeout ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” Predis์˜ ์ƒˆ ๋ฒ„์ „์—์„œ timeout ๋กœ ์ด๋ฆ„์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ' h ํ‚ค'๋ฅผ ๊ฝค ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ž ๊ธˆ์œผ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ฐ๋ชฌ๊ณผ ๊ฐ™์€ ์Šคํฌ๋ฆฝํŠธ์—์„œ Predis๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ œํ•œ ์‹œ๊ฐ„์„ ์™„์ „ํžˆ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด read_write_timeout ๋ฅผ -1 ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์ด ๊ฐ’์€ Predis์˜ ์ด์ „ ๋ฐ ์ตœ์‹  ๋ฒ„์ „์—์„œ ์ž‘๋™ํ•จ). ๋˜ํ•œ redis.conf ์—์„œ timeout = 0 ๋ฅผ ์„ค์ •ํ•˜์—ฌ Redis์˜ ๊ธฐ๋ณธ ์‹œ๊ฐ„ ์ดˆ๊ณผ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด Redis๋Š” 300์ดˆ ๋™์•ˆ ํ™œ๋™์ด

redis.conf์—์„œ timeout=0์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ๋œ ๋‹จ์ ์ด๋‚˜ ์ฃผ์˜ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚ด๊ฐ€ ์˜์‹ฌํ•˜๋Š” ๊ฒƒ์€ ..์—ฐ๊ฒฐ์ด ๋Š๊ธฐ์ง€ ์•Š์„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
Redis ์‚ฌ์šฉ๋ฅ ์€ ๋†’๊ฒŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

nrk๋‹˜, ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋‹ต๋ณ€ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ๋Š”๋ฐ ip_conntrack ๋ฌธ์ œ๊ฐ€ ์„œ๋ฒ„์—์„œ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค. conntrack์ด ์ˆ˜์ •๋˜๋ฉด ์—ฐ๊ฒฐ ์‹œ๊ฐ„ ์ดˆ๊ณผ๋„ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

์ด ๊ณ„์•ฝ์„ ์ˆ˜์ •ํ•˜๋Š” ๋ฐฉ๋ฒ• .. ์–ด๋””๋ฅผ ์ฐพ์•„์•ผํ•ฉ๋‹ˆ๊นŒ?

redis.conf์—์„œ timeout=0์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ๋œ ๋‹จ์ ์ด๋‚˜ ์ฃผ์˜ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@aditya-rewari-cb ์‹ค์ œ๋กœ redis.conf์˜ timeout = 0 ๋Š” Redis 2.4(๋ช‡ ๋…„ ์ „์— ๋ฆด๋ฆฌ์Šค๋จ) ์ดํ›„ ๊ธฐ๋ณธ๊ฐ’์ด๋ฏ€๋กœ ๋‹จ์ ์ด ์—†๋‹ค๊ณ  ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋ฐ๋ชฌ๊ณผ ๊ฐ™์€ ์Šคํฌ๋ฆฝํŠธ์—์„œ Predis๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ œํ•œ ์‹œ๊ฐ„์„ ์™„์ „ํžˆ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด read_write_timeout ๋ฅผ -1 ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์ด ๊ฐ’์€ Predis์˜ ์ด์ „ ๋ฐ ์ตœ์‹  ๋ฒ„์ „์—์„œ ์ž‘๋™ํ•จ). ๋˜ํ•œ redis.conf ์—์„œ timeout = 0 ๋ฅผ ์„ค์ •ํ•˜์—ฌ Redis์˜ ๊ธฐ๋ณธ ์‹œ๊ฐ„ ์ดˆ๊ณผ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด Redis๋Š” 300์ดˆ ๋™์•ˆ ํ™œ๋™์ด

@nrk ์ €๋Š” ๋ฐ๋ชฌ ํ”„๋กœ์„ธ์Šค (laravel ๊ฐ๋…์ž ์ž‘์—…์ž)์™€ ํ•จ๊ป˜ Redis๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ผ๋ฐ˜ ์บ์‹ฑ ๊ณผ ํ•จ๊ป˜
'read_write_timeout' => -1 ์‚ฌ์šฉ ์‹œ ์ฃผ์˜ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๊นŒ?
์ด ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•ด Redis์˜ ์ •๊ธฐ์ ์ธ ์บ์‹ฑ ์‚ฌ์šฉ์—์„œ ํŒŒ์†์ด๋‚˜ ๋ฒ„๊ทธ์˜ ๊ฐ€๋Šฅ์„ฑ์„ ํ™•์ธํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค!

๊ฐ์‚ฌ ํ•ด์š” !

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰