[Linux] ์Šค์™‘ ๋ฉ”๋ชจ๋ฆฌ(Swap Memory)์˜ ๊ฐœ๋…๊ณผ ์ ์šฉ๋ฐฉ๋ฒ•

[Linux] ์Šค์™‘ ๋ฉ”๋ชจ๋ฆฌ(Swap Memory)์˜ ๊ฐœ๋…๊ณผ ์ ์šฉ๋ฐฉ๋ฒ•

1. ๋ฆฌ๋ˆ…์Šค Swap ๋ฉ”๋ชจ๋ฆฌ ์„ค์ • (์˜ˆ์ œ๋Š” EC2 ํ™˜๊ฒฝ์—์„œ ์ง„ํ–‰) 1-1. Swap ๋ฉ”๋ชจ๋ฆฌ ํ™•์ธ swapon -s free -h shared = ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค์—์„œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ๋ฐ์ดํ„ฐ์— ํšจ์œจ์ ์œผ๋กœ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ buff/cache = ๋ฒ„ํผ์™€ ์บ์‹œ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ, ์ปค๋„์ด ์„ฑ๋Šฅํ–ฅ์ƒ์„ ์œ„ํ•ด ์บ์‹œ ์˜์—ญ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ buff = ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ด ์•„๋‹Œ ์‹œ์Šคํ…œ ์„ฑ๋Šฅํ–ฅ์ƒ์„ ์œ„ํ•ด ์ปค๋„์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์˜์—ญ cache = ์บ์‹œ์˜์—ญ์˜ ๋ฉ”๋ชจ๋ฆฌ, I/O ์ž‘์—…์„ ๋” ๋น ๋ฅด๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์ปค๋„์—์„œ ์‚ฌ์šฉ ...

[Spring] ์Šคํ”„๋ง๋ถ€ํŠธ + Mybatis ๋ฐ์ดํ„ฐ์†Œ์Šค ์—ฌ๋Ÿฌ๊ฐœ ์—ฐ๊ฒฐ (์Šคํ”„๋ง ๋‹ค์ค‘ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ)

[Spring] ์Šคํ”„๋ง๋ถ€ํŠธ + Mybatis ๋ฐ์ดํ„ฐ์†Œ์Šค ์—ฌ๋Ÿฌ๊ฐœ ์—ฐ๊ฒฐ (์Šคํ”„๋ง ๋‹ค์ค‘ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ)

๋‹ค์Œ์€ ์Šคํ”„๋ง๋ถ€ํŠธ + ๋งˆ์ด๋ฐ”ํ‹ฐ์Šค ํ”„๋กœ์ ํŠธ์— 2๊ฐœ ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ์†Œ์Šค๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ์˜ˆ์ œ์ด๋‹ค.ย ๊ธฐ์กด ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๋™์ด ๋˜์–ด์žˆ๋‹ค๊ณ  ๊ฐ€์ • ํ›„ ์ง„ํ–‰๋˜๋ฉฐ, ์‹ ๊ทœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๊ตฌ๋ณ„์ด ์‰ฝ๋„๋ก new ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ๋ช…์นญ ํ•œ๋‹ค. 1. ์‹ ๊ทœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘์†์ •๋ณด ์ถ”๊ฐ€ ์ถ”๊ฐ€๋  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ย ์†์„ฑ์„ application.properties์— ์ถ”๊ฐ€ #๊ธฐ์กด DB Setting spring.datasource.url={url} spring.datasource.driverClassName={driverClassName} spring.datasource.username={username} spring.datasource.password={password} spring.datasource.schema={schema} #์ถ”๊ฐ€๋  DB Setting new.datasource.url={url} new.datasource.driverClassName={driverClassName} new.datasource.username={username} new.datasource.password={password} new.datasource.schema={schema} 2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ๋นˆ ์†์„ฑ ์ถ”๊ฐ€ ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์„ค์ •์„ ํ•˜๋Š” DatabaseConfig.java ์™ธ์— NewDatabaseConfig.java์‹ ๊ทœ๋กœ ์ถ”๊ฐ€ํ•œ๋‹ค. ๊ธฐ์กด DatabaseConfig.java ...

[Spring] ์Šคํ”„๋ง ๋ฐฐ์น˜ ItemReader์˜ ๊ฐœ๋…, (MybatisCursorItemReader, MybatisPagingItemReader ๊ตฌํ˜„)

[Spring] ์Šคํ”„๋ง ๋ฐฐ์น˜ ItemReader์˜ ๊ฐœ๋…, (MybatisCursorItemReader, MybatisPagingItemReader ๊ตฌํ˜„)

1. ItemReader๋ž€? ์Šคํ”„๋ง ๋ฐฐ์น˜์˜ ItemReader๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์„ ๊ฑฐ์ณ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๋ฐ์ดํ„ฐ ํ˜•ํƒœ๋Š” ์ด๋ฏธ ItemReader๋กœ ์ œ๊ณตํ•˜๊ณ  ์žˆ๊ธฐ์— ItemReader, ItemStream ์ธํ„ฐํŽ˜์ด์Šค ์ž์ฒด๋ฅผ ๊ตฌํ˜„ํ•  ํ•„์š”๋Š” ์—†๋‹ค. ItemReader๋Š” Chunk ๊ธฐ๋ฐ˜ ํŠธ๋žœ์žญ์…˜์„ ๋‹ค๋ฃจ๋ฉฐ Cursor, Paging ๊ฐ€ ๋Œ€ํ‘œ์ ์ธ 2๊ฐ€์ง€ ๋ฐฉ์‹์ด๋‹ค. 2. Cursor, Paging ํ˜•์‹ 2-1. Cursor๊ธฐ๋ฐ˜ ItemReader JDBC ResultSet์˜ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์ด๋‹ค. ResultSet์ด Open ๋  ๋•Œ๋งˆ๋‹ค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์—ฐ๊ฒฐ ๋งบ์€ ํ›„ ๋ฐ์ดํ„ฐ๋ฅผ Streaming ๋ฐฉ์‹์œผ๋กœ I/O์ด๋‹ค. ํ˜„์žฌ ํ–‰์—์„œCursor๋ฅผ ์œ ์ง€ํ•˜๋ฉฐ ๋‹ค์Œ ๋ฐ์ดํ„ฐ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด Cursor๋ฅผ ํ•œ ์นธ์”ฉ ์˜ฎ๊ธฐ๋ฉด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค. ํ•˜๋‚˜์˜ Connection์œผ๋กœ ๋ฐฐ์น˜๊ฐ€ ๋๋‚ ๋•Œ๊นŒ์ง€ ์‚ฌ์šฉ๋˜๊ธฐ์— Batch๊ฐ€ ๋๋‚˜๊ธฐ ์ „์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์—ฐ๊ฒฐ์ด ๋จผ์ € ๋Š์–ด์งˆ ์ˆ˜ ์žˆ์–ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ SocketTimeout์„ ์ถฉ๋ถ„ํ•œ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜์—ฌ์•ผ ํ•œ๋‹ค. ๋ชจ๋“  ๊ฒฐ๊ณผ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๋งŽ์•„์ง„๋‹ค. Chunk ์‚ฌ์ด์ฆˆ ๋งŒํผ์˜ ํŠธ๋žœ์žญ์…˜ ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค. Cursor ๊ธฐ๋ฐ˜ ItemReader ๊ตฌํ˜„์ฒด ...

[๋„คํŠธ์›Œํฌ] TCP/IP์˜ ๊ฐœ๋…

[๋„คํŠธ์›Œํฌ] TCP/IP์˜ ๊ฐœ๋…

1. TCP/IP ๋ž€? ํŒจํ‚ท ์ „์†ก๋ฐฉ์‹์˜ ์ธํ„ฐ๋„ท ํ”„๋กœํ† ์ฝœ์ธ IP์™€ ์ „์†ก ์กฐ์ ˆ ํ”„๋กœํ† ์ฝœ์ธ TCP๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. IP๋Š” ํŒจํ‚ท ์ „๋‹ฌ ์—ฌ๋ถ€๋ฅผ ๋ณด์ฆํ•˜์ง€ ์•Š๊ณ , ํŒจํ‚ท์„ ๋ณด๋‚ธ ์ˆœ์„œ๋Œ€๋กœ ๋ฐ›๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•˜์ง€ ์•Š์ง€๋งŒ, TCP๋Š” IP ์œ„์—์„œ ๋™์ž‘ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ๋กœ ๋ฐ์ดํ„ฐ์˜ ์ „๋‹ฌ์„ ๋ณด์ฆํ•˜๊ณ  ๋ณด๋‚ธ ์ˆœ์„œ๋Œ€๋กœ ๋ฐ›๊ฒŒ ํ•ด ์ค€๋‹ค. IP๊ฐ€ ํŒจํ‚ท ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๊ณ  ๋ชฉ์ ์ง€๋ฅผ ์ฐพ์•„๊ฐ€๋Š” ๋ฐ๋งŒ ์ง‘์ค‘ํ•œ๋‹ค๋ฉด TCP๋Š” Endpoint ๊ฐ„ ํ†ต์‹ ํ•  ์ค€๋น„๊ฐ€ ๋˜์–ด์žˆ๋Š”์ง€, ๋ฐ์ดํ„ฐ ์ „์†ก์ด ์ œ๋Œ€๋กœ ๋˜์—ˆ๋Š”์ง€, ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€์งˆ๋˜์ง€ ์•Š์€์ง€, ๋ฐ์ดํ„ฐ ์œ ์‹ค์€ ์—†๋Š”์ง€ ๋“ฑ์„ ์ ๊ฒ€ํ•œ๋‹ค. ์ฆ‰ IP์ฃผ์†Œ ์ฒด๊ณ„๋ฅผ ๋”ฐ๋ฅด๊ณ  IP Routing์„ ํ†ตํ•ด ๋ชฉ์ ์ง€์— ๋„๋‹ฌํ•˜์—ฌย TCP์˜ ํŠน์„ฑ์„ ํ™œ์šฉํ•˜์—ฌ ์†ก์‹ ์ž์™€ ์ˆ˜์‹ ์ž์˜ ๋…ผ๋ฆฌ์  ์—ฐ๊ฒฐ์„ ์ƒ์„ฑ, ์‹ ๋ขฐ์„ฑ ์œ ์ง€ํ•œ๋‹ค. ...

[๋„คํŠธ์›Œํฌ] ์†Œ์ผ“(SOCEKT) ํ†ต์‹ , 3-way handshake์˜ ๊ฐœ๋…

[๋„คํŠธ์›Œํฌ] ์†Œ์ผ“(SOCEKT) ํ†ต์‹ , 3-way handshake์˜ ๊ฐœ๋…

1. ์†Œ์ผ“(Socket)์ด๋ž€ ์†Œ์ผ“์€ ๋–จ์–ด์ ธ ์žˆ๋Š” ๋‘ ํ˜ธ์ŠคํŠธ๋ฅผ ์—ฐ๊ฒฐํ•ด ์ฃผ๋Š” ๋„๊ตฌ๋กœ์จ ์ธํ„ฐํŽ˜์ด์Šค ์—ญํ• ์„ ํ•œ๋‹ค. TCP/IP ๊ธฐ๋ฐ˜ ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์—์„œ ๋ฐ์ดํ„ฐ ์†ก์ˆ˜์‹ ์˜ ์•ค๋“œํฌ์ธํŠธ์ด๋ฉฐ ์•ค๋“œํฌ์ธํŠธ๋Š” IP, Port์กฐํ•ฉ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ชฉ์ ์ง€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์„œ๋ฒ„-ํด๋ผ์ด์–ธํŠธ ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ์–‘๋ฐฉํ–ฅ ์—ฐ๊ฒฐ ์ง€ํ–ฅ์„ฑ ํ†ต์‹ ์œผ๋กœ ์ง€์†์ ์œผ๋กœ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ์†Œ์ผ“์€ ์„œ๋ฒ„ ์†Œ์ผ“๊ณผ ํด๋ผ์ด์–ธํŠธ ์†Œ์ผ“์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋ฉฐ, ๋‹ค์Œ์€ ์†Œ์ผ“ ๊ฐ„ ํ†ต์‹ ์ด ์ด๋ฃจ์–ด์ง€๋Š” ๊ณผ์ •์ด๋‹ค. 1-1. ์„œ๋ฒ„ ์†Œ์ผ“ ํด๋ผ์ด์–ธํŠธ์—์„œ ์—ฐ๊ฒฐ์š”์ฒญ์ด ์˜ค๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ์—ฐ๊ฒฐ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ํด๋ผ์ด์–ธํŠธ์™€ ์—ฐ๊ฒฐ์„ ๋งบ๊ณ  ์ƒˆ๋กœ์šด ์†Œ์ผ“์„ ๋งŒ๋“ ๋‹ค. ...