๐ŸงจBroken pipe Exception์„ ํ•ด๊ฒฐํ•ด๋ณด์ž

Y_Sevinยท2023๋…„ 11์›” 5์ผ
0
post-thumbnail

๐Ÿ˜… ํ•„์ž๊ฐ€ ๊ฐœ์ธ์ ์œผ๋กœ ๊ณต๋ถ€ํ•˜๊ณ  ๋‚จ๊ธฐ๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ •๋ณด๊ฐ€ ๋ฏธํกํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž˜๋ชป๋œ ๋‚ด์šฉ์ด ์žˆ์„๊ฒฝ์šฐ ์ง€์ ํ•ด์ฃผ์‹ ๋‹ค๋ฉด ๊ฐ์‚ฌํžˆ ๋ฐ›๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ๊ฐœ๋ฐœ๋งŒ ํ•˜๊ณ  ๋๋‚ฌ๋˜ ์˜ˆ์ „๊ณผ ๋‹ฌ๋ฆฌ ์‹ค์ œ ์‚ฌ์šฉ์ž์—๊ฒŒ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์šด์˜๊นŒ์ง€ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋‹ค.
๋•Œ๋ฌธ์— ํ˜ผ์ž ๊ฐœ๋ฐœํ• ๋•Œ์™€ ๋‹ฌ๋ฆฌ ์ •๋ง ๋‹ค์–‘ํ•œ exception์„ ๋งˆ์ฃผํ•˜๊ณค ํ•˜๋Š”๋ฐ, ๋ฐ”๋กœ ์–ด์ œ ๋ฐœ์ƒํ•œ ๋”ฐ๋ˆ๋”ฐ๋ˆํ•œ exception์ธ Broken pipe์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ณ  ํ”„๋กœ์ ํŠธ์—์„œ ํ•ด๊ฒฐํ•œ ๋ฐฉ๋ฒ•์„ ๊ธ€๋กœ ์ ์–ด๋ณด๊ณ ์ž ํ•œ๋‹ค.

ํ  Broken pipe..?
๊ทธ๋ƒฅ ๋‚ด์šฉ๋งŒ ๋ณด์ž๋ฉด ์—ฐ๊ฒฐ์ด ๋Š์–ด์กŒ๋‹ค ๋ผ๋Š” ๋ง๊ฐ™์€๋ฐ ๋Œ€์ฒด ์™œ ์ด๋Ÿฐ exception์ด ๋‚ฌ๋Š”์ง€ ์•Œ์ˆ˜๊ฐ€ ์—†์—ˆ๋‹ค.

๋จผ์ € Broken pipe ๋ž€ ๋ฌด์—‡์ผ๊นŒ?

java.net.SocketException: Broken pipe
java.io.IOException: Broken pipe

์ฐพ์•„๋ณด๋‹ˆ ๋‘๊ฐ€์ง€์˜ Broken pipe Exception์ด ์กด์žฌํ–ˆ๋‹ค. ํ•„์ž์˜ ๊ฒฝ์šฐ I/O ์ž‘์—… ์ค‘์— ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜์˜€์ง€๋งŒ, ๊ธฐ์™• ์•Œ์•„๋ณด๋Š” ๊น€์— SocketException๊นŒ์ง€ ์•Œ์•„๋ณด๋ ค ํ•œ๋‹ค.

Brokenย pipe Exception์ด ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ์ƒํ™ฉ์€ ์–ธ์ œ์ผ๊นŒ?

๐Ÿงจ java.io.IOException: Broken pipe

  1. ๋ฐ์ดํ„ฐ ์†ก์ˆ˜์‹  ์ค‘์— ์—ฐ๊ฒฐ์ด ๋Š์–ด์ง„ ๊ฒฝ์šฐ
    ์†Œ์ผ“ ์—ฐ๊ฒฐ ๋˜๋Š” ํŒŒ์ดํ”„ ์—ฐ๊ฒฐ์—์„œ ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์™€ ์—ฐ๊ฒฐ๋˜์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ณ  ์žˆ๋Š” ๋„์ค‘์— ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—ฐ๊ฒฐ์„ ๊ฐ•์ œ๋กœ ์ข…๋ฃŒํ•˜๋ฉด ๋ฐœ์ƒํ•œ๋‹ค.

  2. ๋„คํŠธ์›Œํฌ๋‚˜ ์„œ๋ฒ„ CPU๋ฌธ์ œ๋กœ ์†ก์‹  ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•  ๊ฒฝ์šฐ
    ์†ก์‹ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๋•Œ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•˜๋Š” ์ƒํ™ฉ์—์„œ ๊ณ„์†ํ•ด์„œ ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

๐Ÿงจ java.net.SocketException: Broken pipe

  1. ์žฆ์€ ์ž…์ถœ๋ ฅ์„ ํ•  ๊ฒฝ์šฐ (ex) ๋”ฐ๋‹ฅ)
    ์š”์ฒญ ์ฒ˜๋ฆฌ๊ฐ€ ๋๋‚˜๊ธฐ๋„ ์ „์— ์ƒˆ๋กœ๊ณ ์นจ์ด๋‚˜ ๋“ฑ๋ก ๋ฒ„ํŠผ์„ ์—ฐ์†์œผ๋กœ ๋ˆŒ๋Ÿฌ ์žฌ์š”์ฒญ์„ ์—ฌ๋Ÿฌ๋ฒˆ ๋ณด๋‚ด๋Š” ๊ฒฝ์šฐ ์†Œ์ผ“์ด ๋Š์–ด์ง€๋ฉด์„œ Exception์ด ๋ฐœ์ƒํ•œ๋‹ค.

    ์›น๋ธŒ๋ผ์šฐ์ €์—์„œ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ผ๋•Œ accept๋œ ์†Œ์ผ“์„ HttpThread๋กœ ๋„˜๊ธฐ๊ฒŒ ๋œ๋‹ค.
    ํ•ด๋‹น ์†Œ์ผ“์ด ThreadPool์— ๋“ค์–ด์˜ค๊ณ  ์ด HttpThread๋กœ ์ˆ˜ํ–‰๋˜๋Š”๋ฐ, ์ด ๋•Œ HttpThread๊ฐ€ ์™„๋ฃŒ๋˜์ง€ ์ „์— ์žฌ์š”์ฒญ์„ ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์ฒ˜์Œ ์š”์ฒญ ๋‹น์‹œ ์ƒ์„ฑ๋œ ์†Œ์ผ“์˜ ์ž์›์„ HttpThread.run์—์„œ ์ˆ˜ํ–‰์ด ์™„๋ฃŒ๋˜๊ธฐ๋„ ์ „์— ๋‘๋ฒˆ์งธ ์š”์ฒญ์ด ๋“ค์–ด์™€์„œ ์ฒซ๋ฒˆ์งธ ์ˆ˜ํ–‰์ด ์ข…๋ฃŒ๊ฐ€ ๋œ๋‹ค. ๋•Œ๋ฌธ์— ์ด ๋•Œ ์†Œ์ผ“์€ ๋‹น์—ฐํžˆ ๋Š์–ด์ง€๊ณ  Broken pipe๋ผ๋Š” ๋ฉ”์„ธ์ง€๊ฐ€ ๋‚˜ํƒ€๋‚˜๊ฒŒ ๋œ๋‹ค.

์ด์™ธ์—๋„ ์ด๋ฏธ ๋‹ซํžŒ Connection์„ ์‚ฌ์šฉํ•˜๋ คํ•  ๋•Œ "Broken pipe" ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.(ex. ํŒŒ์ผ, ์ŠคํŠธ๋ฆผ)


ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

  1. Exception ๋ฌด์‹œํ•˜๊ธฐ
    • ํด๋ผ์ด์–ธํŠธ์˜ ๋น„์ •์ƒ์ ์ธ ์ข…๋ฃŒ๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์—†์Œ..
  2. ์ค‘๋ณต ์š”์ฒญ ๋ฐฉ์ง€
    • ์žฌ์š”์ฒญ์„ ํ†ตํ•ด ์†Œ์ผ“์ด ๋Š์–ด์ง€๋Š” ๊ฒฝ์šฐ ๋ฐฉ์ง€
  3. Timeout๊ฐ’ ๋Š˜๋ฆฌ๊ธฐ
    • ๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ์„ ์ „์†กํ• ๋•Œ ์ „์†ก์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ ค ์‘๋‹ต์ด ์—†๋‹ค ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํ™ฉ์„ ๋ฐฉ์ง€
  4. Connection ์ž˜ ๋‹ซ์•„์ฃผ๊ธฐ
    ๋“ฑ๋“ฑ.....

๋‚˜์˜ ๋ฌธ์ œ์™€ ๋‚ด๊ฐ€ ์„ ํƒํ•œ ๋ฐฉ๋ฒ• ๐Ÿค”


Breadcrumbs๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž์˜ ํ–‰์ ์„ ๋ณด์•˜๋‹ค.
ํ•จ๊ป˜ ๋ฐœ์ƒํ•œ exception์œผ๋กœ ๋ณด์•„ ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ์ด ์ข‹์ง€ ์•Š์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์–ผ๊ตดํ˜•๋ถ„์„์„ ์œ„ํ•ด ์„œ๋ฒ„์— ํŒŒ์ผ์„ ์ „์†กํ•˜๋Š” ๋„์ค‘ ๋„คํŠธ์›Œํฌ๊ฐ€ ๋Š๊ฒจ exception์ด ๋ฐœ์ƒํ•œ ๊ฒƒ์œผ๋กœ ์˜ˆ์ธกํ–ˆ๋‹ค.
์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ์ด ๋Š๋ฆฐ ํด๋ผ์ด์–ธํŠธ์ผ ๊ฒฝ์šฐ๋Š” ์ƒ๊ฐํ•˜์ง€ ๋ชปํ•œ ๋ถ€๋ถ„์ด๊ธฐ์— Timeout์‹œ๊ฐ„์„ ์กฐ๊ธˆ ๋” ๋Š˜๋ ค์ฃผ์—ˆ๋‹ค.

์ถ”๊ฐ€์ ์œผ๋กœ java.net.SocketException: Broken pipe ์ด ์•„์ง ๋ฐœ์ƒํ•˜์ง„ ์•Š์•˜์ง€๋งŒ ์•ž์œผ๋กœ ์ถฉ๋ถ„ํžˆ ๋ฐœ์ƒ ๊ฐ€๋Šฅํ•œ ์ƒํ™ฉ์ด๋ผ ํŒ๋‹จํ–ˆ๋‹ค.
๋•Œ๋ฌธ์— redis๋ฅผ ์ด์šฉํ•ด ๊ฐ™์€ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ™์€ ์š”์ฒญ์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋ณด๋‚ผ ์ˆ˜ ์—†๋„๋ก ์ค‘๋ณต์š”์ฒญ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค.

์ฐธ๊ณ 
https://webprogrammer.tistory.com/1793

profile
๋งค์ผ์€ ์•„๋‹ˆ๋”๋ผ๋„ ๊พธ์ค€ํžˆ ์˜ฌ๋ฆฌ์ž๋Š” ๋งˆ์Œ์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฐœ๋ฐœ๋ธ”๋กœ๊ทธ๐Ÿ˜Ž

0๊ฐœ์˜ ๋Œ“๊ธ€