Community

๐Ÿ’ปLinux ์˜ Max User Processes, Open Files

Linux ํ™˜๊ฒฝ์—์„œ Java Application ์„ ์šด์˜ํ•˜๋‹ค๋ณด๋ฉด ํ•œ๋ฒˆ์ฏค์€ ๊ฒช๋Š” ์—๋Ÿฌ์ค‘ ํ•˜๋‚˜๊ฐ€ 'OutOfMemoryError' ์™€ 'Too many open files Error' ๊ฐ€ ์•„๋‹๊นŒ ์‹ถ์Šต๋‹ˆ๋‹ค. 'OutOfMemoryError' ์˜ ๊ฒฝ์šฐ Java Heap Size ํ˜น์€ ์žฅ๋น„์˜ Memory ๊ฐ€ ๋ถ€์กฑํ•ด์„œ ๋ฐœ์ƒํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ Thread ์ˆ˜๊ฐ€ Linux ์—์„œ ์ œํ•œํ•˜๋Š” Max User Processes ์ˆ˜๊ฐ€ ์ดˆ๊ณผํ–ˆ์„๋•Œ๋„ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ์ด๋ฆ„๋งŒ ๋“ค์–ด๋ณด๋ฉด ํ”„๋กœ์„ธ์Šค ์ˆ˜๋ฅผ ์ œํ•œํ•œ๋‹ค๊ณ  ์˜คํ•ดํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, Linux ๋Š” Java ์˜ Thread ์™€ Process ๋ฅผ ๋™์ผํ•˜๊ฒŒ ์นด์šดํŠธํ•˜๊ธฐ ๋•Œ๋ฌธ์— Thread ์ˆ˜๋„ Max User Processes ์ˆ˜์— ์ œํ•œ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ Thread ๋ฅผ ๋„‰๋„‰ํ•˜๊ฒŒ ์ƒ์„ฑํ•ด์•ผํ•˜๋Š” ์„œ๋น„์Šค๋ผ๋ฉด Linux ์˜ Max User Processes ์ˆ˜๋ฅผ ์ƒํ™ฉ์— ๋งž๊ฒŒ ๋Š˜๋ฆฌ์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค. 'Too many open files Error' ๋Š” Linux ์—์„œ ์ œํ•œํ•˜๋Š” FD(File Descriptor)์ˆ˜๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ํ–‰์œ„๋ฅผ ํ–ˆ์„ ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์—๋Ÿฌ์ž…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ๋Š” FileSystem ์—์„œ ํŠน์ • File ์„ Open ํ–ˆ์„๋•Œ๋„ ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ๊ณ , Http ํ†ต์‹ ๊ณผ ๊ฐ™์ด ์†Œ์ผ“ ํ†ต์‹ ์„ ํ•  ๋•Œ๋„ ์นด์šดํŠธ ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— FD ์ˆ˜๋ฅผ ๋งŽ์ด ์ฆ๊ฐ€์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์†”๋ฃจ์…˜์ด๋‚˜ ์„œ๋น„์Šค์ผ ๊ฒฝ์šฐ Linux ์—์„œ ์ œํ•œํ•˜๋Š” Open File Count ์ˆ˜๋ฅผ ๋„‰๋„‰ํ•˜๊ฒŒ ๋Š˜๋ฆฌ์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•œ๊ฐ€์ง€ ์žฌ๋ฐŒ๋Š” ์ ์€ JDK ์— MaxFDLimit ๋ผ๋Š” ์˜ต์…˜์ด ์žˆ๋Š”๋ฐ, ํ•ด๋‹น ์˜ต์…˜์„ True ๋กœ ์„ค์ •ํ•˜๋ฉด FD ์ œํ•œ์„ ulimit ๋กœ ์กฐํšŒ๋˜๋Š” Hard ํ•œ๋„(linux ์—์„œ ์ œํ•œํ•˜๋Š” ์ตœ๋Œ€์น˜)๊นŒ์ง€ JDK ๊ฐ€ ์ž๋™์œผ๋กœ ์ฆ๊ฐ€์‹œ์ผœ ์ค๋‹ˆ๋‹ค. ๊ณต์œ ๋“œ๋ฆฐ ๋ธ”๋กœ๊ทธ๋Š” ๊ฝค ์˜ค๋ž˜์ „์— ์ž‘์„ฑ๋œ ๊ธ€์ด์ง€๋งŒ ์ƒ˜ํ”Œ ์ฝ”๋“œ์™€ ๊ฐ Error ๋ฅผ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•œ ๊ณผ์ •์ด ์ƒ์„ธํžˆ ๊ธฐ์ˆ ๋˜์–ด์žˆ์œผ๋‹ˆ ๊ด€์‹ฌ์žˆ์œผ์‹  ๋ถ„๋“ค๊ป˜์„œ๋Š” ํ•œ๋ฒˆ ๋ณด์‹œ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค.

์•Œ๋ฆผ

์•Œ๋ฆผ์ด ์—†์Šต๋‹ˆ๋‹ค