워크플로 전체에서 특정 시스템 호출이 호출되는지 어떻게 감지합니까?

워크플로 전체에서 특정 시스템 호출이 호출되는지 어떻게 감지합니까?

편집자 No.1

내 작업은 미러링, 즉 rsync 및 rsh를 사용하여 업데이트된 데이터를 마스터에서 모든 미러로 복사하는 것입니다. 그러나 rsync 및 rsh 중에 약간의 지연이 발견되었습니다. 내 생각에는 지연의 원인이 역방향 DNS 조회 때문인 것 같습니다. 그래서 메인 서버가 미러 서버에 연결되었을 때 역방향 DNS 조회 과정에 소요된 시간을 기록하고 싶습니다.

내 애플리케이션에서 역방향 DNS 조회 시스템 호출이 호출되는지 여부를 감지하고 싶습니다. 그렇다면 어떤 명령이 도움이 될까요?

역방향 DNS 조회의 경우 시스템 호출은 getnameinfo()입니다. 다른 사람이 있으면 알려주세요.

내 프로젝트에서 이 시스템 호출을 추적하고 싶습니다. 어떤 명령을 사용할 수 있나요?

나는 ltrace/strace 명령이 스크립트가 종료될 때까지 호출되는 모든 시스템 호출을 추적할 수 있다는 것을 알고 있지만 내 프로젝트에서는 모든 시스템 호출 추적이 사용되지 않기 때문에 이로 인해 추가 오버헤드가 발생합니다.

rsync 및 rsh 중에 역방향 DNS 조회에 소요된 시간을 기록하고 싶습니다.

내 문제를 해결하도록 도와주세요.

답변1

첫째, getnameinfo시스템 호출이 아니라 glibc 함수입니다.

그러나 어쨌든 wireshark트래픽 모니터링을 실행하면 DNS 쿼리에 작동합니다.

편집하다

애플리케이션을 프로파일링하려면 gprof아마도이 가이드를 읽어보세요

답변2

일반적으로 서버는 클라이언트 IP의 역방향 DNS 조회를 수행하며, 클라이언트가 추적을 몇 번 수행하더라도 이를 알려주지 않습니다.

당신이 해야 할 일은 서버의 구성이나 네트워크 활동을 확인하는 것입니다. strace그리고 이와 유사한 것은 tcpdumpWireshark 또는 Wireshark를 사용하여 네트워크 활동을 보는 것과는 완전히 일치하지 않습니다.

관련 정보