TCP
& 소켓을 사용할 때 UDP
연결 중단(느린 연결, 네트워크 재설정 등)을 일으킬 수 있는 많은 시나리오가 있습니다. unix domain socket
외부적인 이유로 자동 연결이 끊기거나 중단될 가능성은 없나요 ? 개발자는 코드에서 발생할 수 있는 중단을 고려해야 합니까?
답변1
사용된 소켓 유형이나 IPC 메커니즘에 관계없이 서버가 예기치 않게 종료될 가능성은 항상 있습니다. 이는 다음과 같은 여러 가지 이유로 발생할 수 있습니다.
분할 오류 또는 어설션 실패로 인한 소프트웨어 버그로 인해 충돌이 발생할 수 있습니다.
너무 많은 메모리를 차지할 수 있으며 Linux OOM Killer에 의해 종료될 수 있습니다. (가상 머신에서 쉽게 재현 가능)
실수로 다른 사용자가 종료했을 수도 있습니다. Linux는 다중 사용자 시스템이므로 누군가가 입력하고 싶었지만 입력했다고 말하면서 실수로 프로세스를 종료할 수
kill 1112
있습니다kill 1111
.
개발자는 코드에서 발생할 수 있는 중단을 고려해야 합니까?
그렇습니다. 항상 그래야 합니다. 사용하려는 함수에 대한 매뉴얼 페이지를 읽고 함수가 설정할 수 있는 모든 가능한 errnos 값에 대해 읽어보고 항상 최악의 시나리오에 대비하십시오.