높은 IO로드에서 rrdgraph 생성에 실패 분이며 최대 4

우리는 4 개의 핵심 CPU 생산 시스템을 가지고 있으며 많은 cronjob을 수행하며 일정한 proc queue와 보통 ~ 1.5의로드를 갖습니다.

야간에는 postgres로 IO 집약적 인 작업을 수행합니다. 로드 / 메모리 사용량을 보여주는 그래프를 생성합니다 (rrd-updates.sh) IO로드가 높은 상황에서 “실패”하는 경우가 있습니다. 거의 매일 밤 일어나고 있지만 모든 높은 IO 상황에서는 그렇지 않습니다.

내 “정상적인”솔루션은 postgres를 멋지게 만들고 이온화하고 그래프 생성의 자존심을 높이는 것입니다. 그러나 이것은 여전히 ​​실패합니다. 그래프 생성은 무리를 가진 반 스레드 방지입니다. 실행 시간을 기록하고 그래프 생성의 경우 IO로드가 높을 때 최대 5 분이며 최대 4 분 동안 그래프가 누락 된 것 같습니다.
기간은 postgres 활동과 정확히 일치합니다 (이것은 때때로 그렇게 자주 발생하지는 않지만 종종 발생합니다) 실시간 prio까지 이온화 (C1 N6 graph_cron 대 C2 N3 postgres) )로 문제가 해결되지 않았습니다.

데이터가 수집되지 않는다고 가정하면 추가 문제는 ionice / nice가 여전히 작동하지 않는 것입니다.
90 % IOwait와 100i의로드에서도 5 초 이상의 지연없이 (적어도 테스트시) 데이터 생성 명령을 자유롭게 사용할 수있었습니다.

슬프게도 테스트에서 정확하게 재현 할 수 없었습니다 (가상화 된 dev 시스템 만 있음)

버전 :

커널 2.6.32-5-686-bigmem
데비안 스퀴즈 rrdtool 1.4.3
하드웨어 : 하드웨어 RAID1
마운트 옵션에 LVM이있는 SAS 15K RPM HDD : ext3 with rw, errors = remount-ro
스케줄러 : CFQ
crontab :

* * * * *               root    flock -n /var/lock/rrd-updates.sh nice -n-1 ionice -c1 -n7 /opt/bin/rrd-updates.sh

rrdcache에 대한 github의 Mr Oetiker의 관련 버그가있는 것 같습니다 :
https://github.com/oetiker/rrdtool-1.x/issues/326

이것은 실제로 내 문제 (동시 쓰기) 일 수 있지만 cronjob이 실패하지 않는다고 설명하지는 않습니다. 가정에서 실제로 2 개의 동시 쓰기 flock -n가 종료 코드 1 (테스트에서 확인 된 맨 페이지 당)을 반환합니다. 출력과 함께 전자 메일을 얻지 못하기 때문에 cronjob이 실제로는 다른 시간마다 정상적으로 실행된다는 관찰 어떻게 든 잃었다.

출력 예 :
누락 된 줄이있는 CPU로드 그래프

의견을 바탕으로 업데이트 스크립트의 중요한 소스를 추가했습니다.

rrdtool update /var/rrd/cpu.rrd $(vmstat 5 2 | tail -n 1 | awk '{print "N:"$14":"$13}')
rrdtool update /var/rrd/mem.rrd $(free | grep Mem: | awk '{print "N:"$2":"$3":"$4}')
rrdtool update /var/rrd/mem_bfcach.rrd $(free | grep buffers/cache: | awk '{print "N:"$3+$4":"$3":"$4}')

무엇을 놓치거나 어디서 더 확인할 수 있습니까?

기억하십시오 : 생산적인 시스템이므로 개발, 스택 추적 또는 유사성이 없거나 설치 가능하지 않습니다.



답변

그래프를 업데이트 할 수없는 rrdtool이 아니라이 시점에서 데이터를 측정 할 수는 없습니다. 그건 그렇고, CPU 및 메모리 통계를 측정하는 방법은 즉각적인 결과를 제공하기 때문에 잘못되었습니다. CPU 및 메모리로드는 60 초 간격으로 크게 변경 될 수 있지만 하나의 값만 사용합니다. 간격마다 평균 데이터를 제공하는 SNMP 데이터를 고려해야합니다. 또한 전체 파이프는 snmpget 호출보다 비싸고 느리게 보입니다. 격차의 주요 원인 일 수 있습니다.


답변