특정 웹 위치에 대한 회사 전체의 연결 문제를 어떻게 추적합니까?

특정 웹 위치에 대한 회사 전체의 연결 문제를 어떻게 추적합니까?

StackOverflow에 문의했지만 성공하지 못했으므로 이 커뮤니티가 이 문제를 추적하는 데 도움이 되기를 바랍니다. 회사의 많은 사람들이 액세스해야 하는 웹 앱이 있습니다. 때때로 웹 앱이 요청에 응답하지 않는 것 같습니다.

예를 들어 리소스 인덱스 페이지(예: 주문 테이블)가 중단 중에 리소스 목록을 새로 고치려고 하면 API를 통해 데이터를 요청하지만 잠시 후 요청이 자동으로 실패하게 됩니다. 회사의 거의 모든 사람에게 동시에 몇 분 동안 동시에 요청하면 앱에 연결할 수 없게 되지만, 이 중단/부진한 기간 동안 다른 네트워크(예: 모바일 데이터)에서 앱에 액세스하면 작동합니다. 다른 웹사이트도 이 기간 동안 영향을 받지 않는 것 같습니다.

브라우저 네트워크 탭에는 20~40초 후에 요청이 실패한 것으로 표시되지만 상태 코드는 없습니다. 요청이 선택되었을 때의 상태 텍스트는 failed net::ERR_CONNECTION_TIMED_OUT입니다. 요청이 처리되는 동안 클릭하지 않고 나중에 세부 정보를 열면 타이밍 탭에 지연 단계에서 멈췄다는 메시지가 표시되는 것 같습니다. 그러나 처리되는 동안 요청 세부 정보를 열면 대신 초기 연결 단계에서 멈췄다는 메시지가 표시됩니다. 이로 인해 요청 세부 정보의 타이밍 탭이 표시되는 내용이 처리 당시 요청을 검사했는지 여부에 따라 달라지는 것처럼 보이기 때문에 신뢰할 수 없는 것처럼 보입니다.

서버 설정:

이 시간 동안 서버는 큰 과부하를 나타내지 않는 것 같습니다. 최대 30% CPU/메모리 사용량입니다. 서버는 Digital Ocean 드롭릿에서 실행되고 nginx를 사용하여 Laravel 앱을 호스팅합니다.

내가 고려한 것/시도한 것: 회사 연결은 동일한 IP에서 나옵니다. 그러나 앱 자체에는 제한이 활성화되어 있지만 사용자 ID에 바인딩되어 "너무 많은 시도" 오류 메시지와 429 상태 코드를 반환합니다. 제한이 있는 경우 오류 메시지와 상태 코드로 제한을 인식할 수 있으므로 앱 수준에서 설정하면 안 됩니다.

조절이 활성화되어 있는지 찾기 위해 nginx 구성을 검사해 보았지만 nginx가 일종의 기본값을 적용하지 않는 한 명시적으로 활성화되지 않은 것 같습니다. 그러나 활성화된 경우에도 nginx는 내가 읽은 내용에서 이해하는 한 429/503을 반환해야 합니다. 하지만 우리의 경우에는 오류나 코드가 반환되지 않는 것 같습니다.

나는 DigitalOcean과 회사 ISP 모두에 연락을 시도했는데 둘 다 어떤 종류의 조절/속도 제한 메커니즘도 사용하지 않는다고 주장합니다. 회사 네트워크 관리자도 그러한 메커니즘이 실행되고 있지 않다고 말합니다.

문제가 어디서 발생하는지 디버깅/조사하려면 어떻게 해야 합니까? 내가 이해하는 바에 따르면 문제는 nginx 구성에서 ISP 공급자 제한에 이르기까지 어디에서나 발생할 수 있습니다. 나는 이것이 현재 일종의 조절이라고 생각하고 있지만 뭔가 빠졌을 수 있습니까?

답변1

진단 도구를 사용하여 인프라(nginx, Digital Ocean, 내부 네트워크)의 다양한 부분에서 병목 현상이나 오류를 식별하세요. 나중에 분석할 수 있도록 중단 중에 데이터를 기록합니다.

# nginx logs
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log

# Network diagnostics (replace x.x.x.x with server IP)
traceroute x.x.x.x
mtr --report --report-cycles=10 x.x.x.x

# Laravel logs
tail -f /path/to/laravel/storage/logs/laravel.log

# Digital Ocean droplet metrics
# Check droplet metrics via Digital Ocean dashboard

이렇게 하면 문제가 nginx 설정, Digital Ocean 드롭릿, 내부 네트워크 또는 다른 곳에 있는지 정확히 파악하는 데 도움이 됩니다. 로그와 네트워크 진단을 통해 단서를 얻을 수 있습니다.

댓글에 답장하기

tc• 명령을 사용하여 네트워크 트래픽 흐름에 영향을 미칠 수 있는 트래픽 조정 또는 제한 규칙이 적용되었는지 검사하려면 다음을 수행합니다 .

# Display all the traffic control (qdisc) settings on all interfaces:
tc qdisc show dev [interface-name]

# Example for eth0 interface:
tc qdisc show dev eth0

특정 트래픽 제어 규칙이 적용된 경우 여기에 나열됩니다. 보고된 시간 초과에 기여하는지 확인하기 위해 추가로 분석할 수 있습니다.

관련 정보