🗣 기술면접 대비

api broken pipe 발생원인과 해결 방법은 무엇인가?

놀러와요 버그의 숲 2022. 1. 7. 00:49
728x90
반응형

 

 

발생원인

 

1)잦은 입출력 호출로 인하여 발생한다.

요청 처리가 끝나기도 전에  새로고침이나 등록 버튼을 연속으로 눌러 재요청을 여러번 보내는 경우가 그러하다.

이 경우 소켓이 끊어지면서 발생한다.

 

2) 클라이언트가 받은 응답 데이터를 적절한 타이밍에 처리하지 못하면 발생하는 Excepiton이다.

네트워크가 느리거나 서버의 cpu 이슈로 느리게 처리되는 경우가 그러하다.

 

두 원인 모두 공통점이 있다.

두 소켓상의 통신에서 소켓을 담당하는 프로세서(혹은 스레드)가 어떤 이상이 생겨서 종료가 된 상황이다.

또한 상대 소켓은 이를 알지 못해서 데이터를 전송하려는데 문제가 생긴 상황이다.

 

 

해결 방법: 

 

1) request 후 response 기다리기

: 클라이언트에서 보낸 데이터를  받고 응답을 기다리도록 설정한다. 

 

2) Exception 무시해버리기

:클라이언트가 비정상적인 종료를 했을 때 Broken pipe Signal이 발생하고 클라이언트의 종료를

서버에서 제어가 불가능하므로, 시그널을 무시한다.

 

3) 중복 요청 막기 

: 클라이언트에서 연속적인 버튼 클릭을 방지하거나 Exception 처리 부분에서 오류를 뱉지 않게 한다.

 

 

<대답>

 api broken pipe가 발생하는 원인은 크게 두가지가 있습니다.

첫번째는 잦은 입출력 호출로 인해서 발생합니다. 요청 처리가 끝나기도 전에 새로고침이나 등록버튼을 연속으로 눌러 재요청을 보내는 상황 같은 것이고요. 이 경우 소켓이 끊어지면서 발생합니다.

두번째는 클라이언트가 받은 응답데이터를 적절한 타이밍에 처리하지 못해서 생기는 Exception인데요

이는 네트워크가 느리거나 서버의 cpu 이슈로 느리게 처리되는 경우가 그러합니다.

 

이에 대한 해결책은 크게 세가지가 있습니다.

첫번째는 클라이언트에서 보낸 데이터를 받고 응답을 기다리도록 설정하거나, 

두번째는 Exception 시그널을 무시하는 방법,

세번째는 클라이언트의 연속적인 버튼 클릭 방지를 하거나 Exception 처리 부분에서 오류를 뱉지 않게 하는것입니다.

 

 

긴장했을 때 ver.

 

api broken pipe는 요청 처리가 끝나기전에 새로고침을 여러번하거나 버튼을 여러번 누를때 소켓이 끊어지면서 발생합니다.

또 하나는 네트워크, cpu 문제로 응답 데이터를 적절한 타이밍에 처리하지 못해서 발생합니다.

 

이에 대한 해결책은 Exception 시그널을 무시하거나 클라이언트의 연속적인 버튼 클릭을 방지하는 방법 등이 있습니다.