Elasticsearch๋ฅผ ์ฒ์ ์ค์นํ๋ค ๋ณด๋ฉด ํญ์ ๋ณด๋ ์๋ฌ๋ค์ด ๋ช ๊ฐ์ง ์์ต๋๋ค.
1) root ๊ณ์ ์ผ๋ก ์คํํ ์ ์์ผ๋ฉฐ
2) openfiles, max process ๊ฐ์ ์์ ํด์ผํ๊ณ
3) swappiness ๊ฐ ์ค์ ๋ณ๊ฒฝ ์์ฒญ๋ ์์ต๋๋ค.
Elasticsearch ์คํ ์ ๋ฐ์ํ Max user processes Error
๊ทธ ์ค์ elasticsearch๋ openfiles์ max process๋ ์ต์ 65535๋ก ์ค์ ํ๋ผ๋ฉฐ, ์ปค๋์์ ํด์ฃผ๋ ๊ธฐ๋ณธ ์ค์ ๋ณด๋ค ํฐ ๊ฐ์ ์๊ตฌํ๋๋ฐ์,
์ค๋์ ํด๋น ํ๋ผ๋ฏธํฐ๊ฐ ์ ํํ ์ด๋ค ๊ฒ์ ๊ฐ๋ฅดํค๋์ง ๊ทธ๋ฆฌ๊ณ ์ค์ ๋ ๊ฐ ์ด์์ด ๋๋ฉด ์ด๋ค ์ผ์ด ์ผ์ด๋๋์ง ์์๋ณด๊ฒ ์ต๋๋ค.
1. Max user processes
Max user processes์ ์๋ฏธ๋ ํ๋์ ๊ณ์ ์์ ์ต๋๋ก ์คํํ ์ ์๋ process์ ๊ฐ์๋ฅผ ๋งํฉ๋๋ค. OS์์์ ํ์ธ์
# ulimit -a (sofe ulimit)
# ulimit -aH (hard ulimit)
์ ๋ช ๋ น์ผ๋ก ํ์ธ ๊ฐ๋ฅํฉ๋๋ค. (ํ์ฌ ์ ์๋ฒ์ ์ค์ ๊ฐ์ ์๋์ ๊ฐ์ต๋๋ค.)
max user processes
๊ทธ๋ผ ์๋ ํ ์คํธ ์ฝ๋๋ฅผ ํตํด ์ค์ ๋ max user processes์ ๊ฐ์ ๋๊ธฐ๋ฉด ์ด๋ป๊ฒ ๋๋์ง ํ์ธํด๋ณด๊ฒ ์ต๋๋ค.
4000๊ฐ Thread ์์ฑ ํ ์ ์ง
๋๋ต์ ์ธ ์ฝ๋์ ๋ด์ฉ์ HTTP ์์ฒญ์ด ์ค๋ฉด ๋น๋๊ธฐ๋ก 4์ฒ๊ฐ์ Thread๋ฅผ ๋์์ ์์ฑํ๊ณ 20๋ถ๊ฐ ์ ์งํ๋ ์ฝ๋์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ค์ ๋ก Thread๋ฅผ ๋๋ ค๋ณด๋ฉด,
Thread ์์ฑ ์ค OOM ๋ฐ์
๊ทธ๋ฆผ์ฒ๋ผ ulimit -a ๋ช ๋ น์ max user processes ๊ฒฐ๊ณผ์ ๊ฐ์ด ec2-user ๊ณ์ ์ 1024๊ฐ๊น์ง ์ค๋ ๋๋ฅผ ์์ฑํ ํ, OOM ์๋ฌ ๋ฉ์ธ์ง๋ฅผ ๋ฐ์ํ๋ฉฐ ๋ฉ์ถฐ๋ฒ๋ฆฌ๊ฒ ๋ฉ๋๋ค. (์ด ๊ฒฝ์ฐ ec2-user ๊ณ์ ์์๋ ์ ๋ช ๋ น์ด ์ ๋ ฅ ๋ฑ ์ด๋ค ์์ ๋ ๋์ํ์ง ์์ต๋๋ค.)
<๋ฆฌ๋ ์ค์์๋ ์ค๋ ๋์ ํ๋ก์ธ์ค๋ฅผ ๋์ผํ๊ฒ ๋ด ๋๋ค.>
2. Open files
๋ค์์ Open files์ ๋๋ค. ์ด ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ๊ฐ์ง ์ ์๋ ์ต๋ ํ์ผ์ ๊ฐ์๋ฅผ ์๋ฏธํฉ๋๋ค.
๋ฆฌ๋ ์ค๋ ๋ชจ๋ ํ๋ก์ธ์ค๋ ์ธ์ (์์ผ)๋ค์ ํ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์ด ๊ฐ์ ์ค์ ์ ์๋ฒ์์์ Connection์ฐ๊ฒฐ ์์ ์ ๋งค์ฐ ์ค์ํ ๋ด์ฉ์ด ๋ฉ๋๋ค.
(์ค์ ๊ฐ์ ๋์ด๊ฐ๊ฒ ๋๋ฉด ๋ฆฌ๋ ์ค์์ ํ์ผ์ ์ด ์ ์์ด ํ๋ก์ธ์ค ์คํ์ด๋ Connection ์ฐ๊ฒฐ์ด ์๋๊ธฐ ๋๋ฌธ!)
๊ทธ๋ผ ์์ผ์ open files ๊ฐ ๋ณด๋ค ๋ง์ด ๋ง๋ค์ด ํ ์คํธ๋ฅผ ํด๋ณด๊ฒ ์ต๋๋ค.
(1) Java ํ๊ฒฝ TEST
- RestTemplate๋ก ์์ผ ์์ฑ ์์ฒญ์ ๋ณด๋ด๊ณ , ์์ฒญ์ ๋ฐ์ ์๋ฒ์์ 20๋ถ๊ฐ ์๋ต์ ๋๊ธฐ ์ํต๋๋ค.
- ์์ฒญ์ ๋์์ 1100๊ฐ๋ฅผ ๋ณด๋ด open files๊ฐ 1024๋ก ์ ํ์ธ ์๋ฒ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ฉด ํ ์คํธ ์ฑ๊ณต์ ๋๋ค.
(๊ธฐ๋ณธ์ ์ผ๋ก java, spring ๊ด๋ จ file์ด ๋ช ๊ฐ ์คํ๋ฉ๋๋ค.)
์๋๋ ํ ์คํธ ์ฝ๋ ์ผ๋ถ์ ๋๋ค.
connection ์์ผ ์์ฑ ํ ์๋ต ๋๊ธฐ Code
๊ทธ๋ฆฌ๊ณ ๋์์ ์์ฒญ์ ๋ณด๋ผ API ์์ฒญ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํฉ๋๋ค.
API ์์ฒญ ์
์์ ์คํํ์ฌ ํ ์คํธ๋ฅผ ์งํํ๋ฉด…
openfiles ๊ฐ์๊ฐ 1024 ๊ฐ์ ๋์ด 1516๊ฐ ๊น์ง ์ด๋ฆผ!
์ ๊ทธ๋ฆผ์ฒ๋ผ ์์ผ์ด 1024๊ฐ๊ฐ ๋์ด๋ ์๋ฌ ๋ฉ์์ง ์์ด ๋์ํ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ๊ทธ๋ผ ํ๋ฒ ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํด๋ณด๊ฒ ์ต๋๋ค.
2048๊ฐ ๊น์ง ์์ฑ๋ ๋ชจ์ต
์ด์ ์๋ฌ๊ฐ ๋ฐ์ํ์ต๋๋ค. ํ์ผ์ ๋ฑ 2048๊ฐ ๊น์ง๋ง ์ด๋ฆฐ ๊ฒ์ ํ์ธํ ์ ์๋๋ฐ์, openfiles์ ๊ฐ์ soft๋ก ์ค์ ๋ ๊ฐ์ด ์๋
๊ทธ๋ฆผ์ฒ๋ผ Hard ์ต์ ๊ฐ๊น์ง file์ด ์์ฑ๋๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
๊ทธ๋ฐ๋ฐ…! ์๊ณ ๋ณด๋ java ํ๊ฒฝ์์๋ hard ๊ฐ์ ๋ฐ๋ผ๊ฐ๋๊ฒ ๋ง์ง๋ง Python์์๋ ์๋๋ผ๊ณ ํฉ๋๋ค…
(2) Python ํ๊ฒฝ TEST
๋นจ๊ฐ ๋ฐ์ค : 1024๊ฐ์ ์ด๋ฆฐ ํ์ผ ์์ฑ / ํ๋ ๋ฐ์ค : 1024๊ฐ ์ดํ ํ์ผ์ ํ๋ ๋ ์ด์ด๋ณธ๋ค
์ ์ฒ๋ผ ํ์ด์ฌ ์คํฌ๋ฆฝํธ๋ก file์ ์์๋ก ์ด์ด๋ด ๋๋ค. 1021๊ฐ ๊น์ง๋ ํ์ผ์ด ๋ฌธ์ ์์ด ์ด๋ฆฌ์ง๋ง(stdin, stdout, stderr ํ์ค ์ /์ถ๋ ฅ 3๊ฐ ์ ์ธ)
์ดํ๋ก ์ฌ๋ ํ์ผ์์๋ Too many open files ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค!
(3) Java์ Python ํ๊ฒฝ์ ์ฐจ์ด?
ํ ์คํธ ๊ฒฐ๊ณผ Java๋ hard ์ต์ ๊น์ง ํ์ผ์ด ์คํ๋๊ณ Python์ soft ๊ฐ๊น์ง ์คํ๋จ์ ์ ์ ์์์ต๋๋ค. ๊ทธ ์ด์ ๋ฅผ ์ฐพ๊ธฐ ์ํด strace ๋ช ๋ น์ ํตํด java ํ๋ก์ธ์ค ๋์์ ์ถ์ ํด๋ณด๋ฉด
kernel 5.15ver์์ ํ ์คํธ (์ด์ ๋ฒ์ ์ prlimit64 ํจ์ ๋์ getrlimit, setrlimt ํจ์ ์ฌ์ฉ)
์ ๊ทธ๋ฆผ์ฒ๋ผ java ํ๋ก์ธ์ค๊ฐ ์์๋จ๊ณผ ๋์์ prlimit64๋ผ๋ ํจ์๊ฐ rlim_cur=1024๊ฐ์ rlim_max=2*1024(hard limit) ๊ฐ๊น์ง ์ ๋ฐ์ดํธํ๋ ๋ก๊ทธ๊ฐ ์ฐํ์๋ ๊ฒ์ ๋ณผ ์ ์์์ต๋๋ค.
JDK์์ MaxFDLimit ์ต์ ํ์ฑํ (๊ธฐ๋ณธ๊ฐ)
๊ทธ ์ด์ ๋ ์ค์น๋ JVM์์ MaxFDLimit ์ต์ ์ ํตํด limit์ ์ฌ๋ ค์ฃผ์๊ธฐ ๋๋ฌธ์ด๋ผ๊ณ ํฉ๋๋ค! (๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋ ์ต์ )
์ฆ, ๋ฆฌ๋ ์ค OS์์๋ JDK ์คํ ์ ์ปค๋์์ prlimit64 ํจ์๋ฅผ ํตํด ์๋์ผ๋ก limit ์ฌ์ด์ฆ๋ฅผ ์ฆ๊ฐ์์ผ์ค๋ค๋ ๊ฒ์ ์ ์ ์์์ต๋๋ค.
3. ์ ๋ฆฌ
- (Linux ํ๊ฒฝ) JAVA์์ ๋์์ ์์ฑ ๊ฐ๋ฅํ ์ฐ๋ ๋ ์๋ Max user processes๋ฅผ ๋ฐ๋ผ๊ฐ๋ค.
- (Linux ํ๊ฒฝ) JAVA์์ ์์ผ ํต์ (API๋ ๋ชจ๋ Connection)์ open files ์ต์ ์ ๋ฐ๋ผ๊ฐ๋ค.
-> JAVA์์๋ JDK ์ฝ๋์์ ์๋์ผ๋ก soft limit๊ฐ์ hard limit๊ฐ๊น์ง ์ ๋ฐ์ดํธ ๋จ
-> Python์ soft limit ๊ฐ์์ ์ ํ์ด ๊ฑธ๋ฆผ
๋์ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ง๊ฒ, Max user processes์ open files์ ์ ์ ํ ๊ฐ์ ์ฐพ์ ์ค์ ํ๋ ๊ฒ์ด ์ค์ํ๊ฒ ์ต๋๋ค!
<๊ณต๋์ ์>
https://giraffe-lee.tistory.com/7
<์ฐธ์กฐ>
'๐ฅ > OS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ด์์ฒด์ ] IPC Inter-Process Communication (0) | 2021.09.09 |
---|---|
[์ด์์ฒด์ ] ์์คํ ์ฝ System Call (0) | 2021.08.31 |
[์ด์์ฒด์ ] ์ธํฐ๋ฝํธ Interrupt (0) | 2021.08.25 |
[์ด์์ฒด์ ] ํ๋ก์ธ์ค ์ฃผ์ ๊ณต๊ฐ (0) | 2021.08.25 |
[์ด์์ฒด์ ] ํ๋ก์ธ์ค์ ์ค๋ ๋์ ์ฐจ์ด (0) | 2021.08.18 |