콘텐츠로 이동

2022 02 02

2022-02-02

Broken Pipe

  • 원인
    1. 이미 닫힌 Connection을 사용하려고 하는 경우
      • FileInputStream, BufferedOutputStream 등 여닫는 구조의 Connection이 닫혔는데 사용시도하는 경우
    2. Server Side에서 보내는 요청에 대해 Client가 제대로 수신하지 못한 경우
      • Client와 WAS의 통신이 단절되어 발생한 문제
      • 연결이 끊겨 최초 요청한 작업 정보가 없어져 응답할 대상이 없어진 경우
    3. 잦은 입출력이 원인
      • 요청 처리가 끝나기도 전에 새로고침/등록 버튼을 연속으로 눌러 재요청 여러번 보내는 경우
      • 브라우저 <-> 서버 연결... 이때 accept 된 소켓을 HttpThread로 넘김
        • 해당 소켓이 ThreadPool에 들어오고 HttpThread로 수행
  • 해결책
    1. 클라이언트가 Request에 대한 Response를 무조건 기다리도록
    2. Exception을 무시할 것
    3. 중복 요청 확인 후 Block
    4. Timeout 값을 늘리기
    5. 가용 쓰레드 늘리기
  • 시도1. 가용 쓰레드 늘리기
    • Connection reset by peer 란 에러가 나오네...?
  • 시도2. SpringBoot Connection time 늘리기
    • 아.. 이것도 안되네...

Connection reset by peer

  • 해당 블로그 필자의 해결
    • Nginx의 문제: Nginx 설정은 한번 설정해두면 간과하기 쉬움 이를 확인해볼것

도커 Nginx에서 정적 파일 서빙하기