웹 서버(HTTP)를 지속적으로 모니터링하고 새로 추가된 파일을 최소 속도로 다운로드하는 가장 좋은 방법은 무엇입니까? 지연(이상적으로 < 1분 지연)?
답변1
모니터링
우선 모니터링을 위해 다음을 사용하는 것이 좋습니다.나기오스, 핵심 소스는 무료인데 GUI가 필요하다면 비용을 지불해야 하는데 그만큼 비용을 지불할 가치가 있습니다.
당신은 또한 사용할 수 있습니다이싱가,PRTG, 또는 당신에게 더 적합한 무엇이든.
yum
Collectd(컬렉션 데몬)는 RHEL 파생 제품이나 apt-get
Debian 기반 제품을 사용하여 다운로드할 수 있는 무료 모니터링 도구이기도 합니다 . 당신은 읽을 수있다이 종이Collectd와 함께 가고 싶다면.
x < 1분마다 실행되는 작업
질문의 두 번째 부분에서는 x가 주기적으로 1분 미만 동안 x번마다 작업을 수행하는 것에 대해 설명하는 몇 가지 트릭을 사용할 수 있기 때문에 Cronjob을 사용할 수 없다는 것을 알고 있습니다.질 이 질문에당신이 원하는 것을하기 위해.
필요한 것에 대한 스크립트를 갖고 있고 필요할 경우 부팅 시에도 영원히 실행하는 것이 더 좋습니다. 아래와 같이 간단한 구문을 사용할 수 있습니다.
while true; do yourJob; sleep someTime; done
또는 필요한 사항에 따라 좀 더 복잡한 스크립트를 사용할 수도 있습니다.
명령을 사용할 수도 있습니다 watch
. 예를 들어:
watch -n1 command
그것은 command
매 순간 그리고 영원히 실행될 것입니다.
짐작할 수 있듯이 watch
복잡한 스크립트가 아닌 1분 이내에 x회 실행되는 간단한 스크립트가 필요한 경우 를 사용하여 쉘 스크립트를 실행할 수도 있습니다.
선택은 당신의 것입니다.
답변2
이는 몇 가지 요인에 따라 달라집니다.
웹 서버를 제어할 수 있는 경우 가장 쉬운 방법은 마지막 확인 또는 다운로드 이후 변경된 파일 수를 제공하는 (RESTful?) 서비스를 설치하는 것입니다. 이렇게 하면 클라이언트와 서버 모두에서 데이터 전송과 로드가 최소화됩니다. 서버의 파일 업로드/수정을 파일 시스템에 의존하는 대신 업로드 스크립트에서 직접 추적할 수 있다면 더욱 좋습니다.
후자의 경우 famd
.
서버를 제어할 수 없는 경우 다운로드하기 전에 수정해야 합니다. 가장 쉬운 방법은 일부를 사용하는 것입니다.웹 미러링w3mir와 같은 유틸리티는 이미 ETag 및 Last-Modified / If-Modified-Since 헤더 확인/공급을 담당하고 있기 때문입니다. 이는 더 적은 수의 호출을 실행해야 하므로 유틸리티를 더 자주 실행할 수 있음을 의미합니다.
에 관해서어떻게유틸리티를 실행하는 방법은 실행 위치에 따라 다릅니다. Unix 시스템에서 cron 작업을 사용하거나 루프에서 실행할 수 있습니다.
그러나 전자를 수행하는 경우 이전 인스턴스가 종료되기 전에 미러링 프로세스가 시작되지 않도록 일종의 세마포어를 설치하는 것이 좋습니다. 잠금 파일을 생성하는 것은 매우 간단할 수 있습니다:
if [ -r /tmp/mirror.lock ]; then
echo "lock file found" | logger -t webmirror
exit 0
fi
touch /tmp/mirror.lock
...whatever...
rm /tmp/mirror.lock
그러나 스크립트를 종료할 수 있는 신호도 있어야 합니다 catch
. 그렇지 않으면 일시적인 오류가 발생한 경우 잠금 파일이 그대로 남아 오류가 해결된 후에도 모든 추가 인스턴스가 실행되지 않을 수 있습니다.
또는 잠금 파일이 합리적인 양보다 오래되지 않았는지 확인하고 그렇다면 삭제하거나 ps
(일반적으로 하나, 현재; 더 많으면 현재 인스턴스가 더 나은) 스크립트 인스턴스 수를 확인할 수 있습니다. 중단), 잠금 파일 없이 수행합니다.
답변3
cron 작업에서 간단한 curl
명령을 수행할 수 있지만 웹 모니터링 기능이 있는 모니터링 솔루션을 사용하는 것이 좋습니다. 무료로 제공되는 것들이 많이 있습니다. Google에서 "오픈 소스 웹 모니터링 솔루션"을 검색하면 많이 얻을 수 있습니다!