2023.02.08 - [๐ป ํ๋ก๊ทธ๋๋ฐ/Shell] - Redis ์ค์น ์๋ํ ์คํฌ๋ฆฝํธ (1) - binary ๋ฐฉ์
์์ ํฌ์คํ ์ ์ด์ฉํด์ Redis๋ฅผ ์ค์นํ์ ๋ ์ด๊ธฐ ์คํ ํ๋ฉด์ ๋๋ค.
ํ์ง๋ง ๋ญ๊ฐ ๊น๋ํ์ง ์๊ณ ๋ค์๊ณผ ๊ฐ์ ๋ฉ์์ง๋ค์ด ๋ ์๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
Warning: no config file specified, using the default config. In order to specify a config file use src/redis-server /path/to/redis.conf
WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
๊ตฌ๊ธ๋ง์ ํ๋ฉด ๊ธ๋ฐฉ ํด๊ฒฐํ ์ ์์ง๋ง ์ด๋ค ์๋ฏธ๋ฅผ ๊ฐ์ง๋์ง ํ๋ฒ ์์ธํ ์์๋ณด๊ฒ ์ต๋๋ค.
๋ฉ์์ง๋ฅผ ์ฝ์ด๋ณด๋ฉด ์ด๋ค ๋ด์ฉ์ธ์ง, ์ด๋ป๊ฒ ํด์ผ ๋๋์ง ์น์ ํ๊ฒ ์ ํ ์๊ธฐ ๋๋ฌธ์ ํ๋์ฉ ์งํํด๋ณด๊ฒ ์ต๋๋ค!
์ค์น ํ๊ฒฝ
- NHN Cloud
- CentOS 7.9
- Redis 7.0.11
1. config ํ์ผ ์ง์
- ๋ฌธ์
Warning: no config file specified, using the default config. In order to specify a config file use src/redis-server /path/to/redis.conf
warning ๋ฉ์์ง ๊ทธ๋๋ก config ํ์ผ์ด ์ธ๋ถ์ ์ผ๋ก ์ง์ ๋์ด ์์ง ์์์ default config๋ฅผ ์ฌ์ฉํ๊ณ ์์์ ์ ์ ์์ต๋๋ค.
- ํด๊ฒฐ ๋ฐฉ๋ฒ
๋ฉ์์ง์์ ์๋ ค์ฃผ๋๋๋ก ์๋์ฒ๋ผ config ํ์ผ์ ์ง์ ํด์ ์คํํฉ๋๋ค.
src/redis-server redis.conf
2. TCP backlog ์ค์ ๊ฐ ์ค๋ฅ
- ๋ฌธ์
WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
๋ฆฌ๋ ์ค ์ค์ (/proc/sys/net/core/somaxconn)์ 128๋ก ๋์ด ์๋๋ฐ redis.conf์ TCP backlog๋ 511๋ก ์ค์ ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋ฆฌ๋ ์ค ์ค์ ๊ฐ์ ์ฆ๊ฐํ๋ผ๋ ๋ฉ์์ง์ ๋๋ค.
- backlog๋? ๋ฌผ๋ฆฌ์ ๋คํธ์ํฌ ํฌํธ์์ ํจํท์ ์์๋๋ ์ปค๋์ ํ ํฌ๊ธฐ
- TCP backlog๋? Redis ์๋ฒ์ ์ด๋น ํด๋ผ์ด์ธํธ ์ฐ๊ฒฐ ์
- somaxconn์ด๋? socket max connection์ ์ฝ์๋ก ๋คํธ์ํฌ ์ฐ๊ฒฐ ์ต๋ ์
- somaxconn ๊ฐ ํ์ธํ๊ธฐ
$ sysctl -a | grep somaxconn
net.core.somaxconn = 128
- ํด๊ฒฐ ๋ฐฉ๋ฒ
sysctl.conf ํ์ผ์ somaxconn ๊ฐ์ ๋ณ๊ฒฝํด์ค๋๋ค.
$ sudo vi /etc/sysctl.conf
net.core.somaxconn = 4096
์ค์ ์ด ์๊ตฌ์ ์ผ๋ก ์ ์ฉ๋๊ฒ ํ๊ธฐ ์ํด์ ์ธ์คํด์ค๋ฅผ ์ฌ๋ถํ ํ๊ฑฐ๋ ์๋ ๋ช ๋ น์ด๋ฅผ ์คํํด์ค๋๋ค.
$ sudo sysctl net.core.somaxconn=4096
3. Memory overcommit ๋ฏธ์ค์
- ๋ฌธ์
WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
Memory overcommit์ด ๋ฐ๋์ ์คํ๋์ด์ผ ํ๋ค๊ณ ์ ํ์์ต๋๋ค.
๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ๋ฉด ๋ฐฑ๊ทธ๋ผ์ด๋ ์ ์ฅ์ด๋ ๋ณต์ ๊ฐ ์คํจํ ์ ์๊ณ , ์ฅ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
- ํด๊ฒฐ ๋ฐฉ๋ฒ
sysctl.conf ํ์ผ์ vm.overcommit_memory ๊ฐ์ 1๋ก ๋ณ๊ฒฝํด์ค๋๋ค.
$ sudo vi /etc/sysctl.conf
vm.overcommit_memory = 1
์ค์ ์ด ์๊ตฌ์ ์ผ๋ก ์ ์ฉ๋๊ฒ ํ๊ธฐ ์ํด์ ์ธ์คํด์ค๋ฅผ ์ฌ๋ถํ ํ๊ฑฐ๋ ์๋ ๋ช ๋ น์ด๋ฅผ ์คํํด์ค๋๋ค.
$ sudo sysctl vm.overcommit_memory=1
๊ฒฐ๊ณผ
warning ๋ฉ์์ง ์์ด ๊น๋ํ๊ฒ ์คํ๋์์ต๋๋ค!