상태에서 send_fail이유
현상:
status 명령을 실행하여 send_fail이 발생한 경우, 그 이유는 무엇인가요?
답변:
send_fail은 보통 큰 문제가 아닙니다. 일반적으로는 클라이언트가 연결을 끊었거나 클라이언트가 데이터를 수신할 수 없어서 데이터 전송이 실패한 경우입니다.
send_fail의 두 가지 이유가 있습니다
-
send 인터페이스를 호출하여 데이터를 클라이언트에게 보낼 때 클라이언트가 이미 끊긴 경우에는 send_fail 횟수가 증가합니다. 클라이언트가 자발적으로 연결을 끊은 것이기 때문에 일반적으로 무시해도 됩니다.
-
서버가 데이터를 보내는 속도가 클라이언트가 받는 속도보다 빠른 경우, 데이터가 서버 버퍼에 계속 쌓이게 되며(workerman은 각 클라이언트마다 보내는 버퍼를 만듭니다), 이 버퍼 크기가 한도를 넘으면 버려지고 onError 이벤트를 발생시키며(send_fail 횟수를 증가시킴) 데이터 전송이 실패됩니다.
예를 들어, 브라우저를 최소화하면 JavaScript가 일시 중지될 수 있어서 브라우저가 서버 데이터를 일시 중지하고 데이터가 오랫동안 버퍼에 쌓이게 되는데, 이것이 제한을 초과하면 send 호출 시마다 send_fail 횟수가 증가합니다.
요약:
클라이언트가 연결을 끊어서 발생한 send_fail
은 일반적으로 걱정할 필요가 없습니다.
클라이언트가 데이터 수신을 중지하여 발생한 send_fail은 클라이언트 상태를 확인해야 합니다.
클라이언트가 지속적으로 데이터를 낮은 속도로 수신하는 경우, 비즈니스 프로세스를 최적화하거나 클라이언트 성능을 최적화해야 합니다. 대역폭으로 인해 전송이 불완전한 경우, 서버 대역폭을 늘리는 것을 고려할 수 있습니다.