rsyslogd는 20GB(!) 이상의 RAM을 사용합니다. 수집할 증거는 무엇입니까?

rsyslogd는 20GB(!) 이상의 RAM을 사용합니다. 수집할 증거는 무엇입니까?

커널 3.13.0-74 및 32GB RAM을 실행하는 Ubuntu 14.04.3 시스템이 있고 미쳐가는 rsyslogd 프로세스가 있습니다.

$ ps -auxww | grep rsyslog
syslog   16212  0.7 64.0 27966168 21070336 ?   Ssl  Jan04 180:31 rsyslogd -c 5 -x

$ free -m
             total       used       free     shared    buffers     cached
Mem:         32142      31863        278        228          9        363
-/+ buffers/cache:      31490        651
Swap:        16383      11937       4446

나는 ps의 출력이 등을 완전히 신뢰할 수 없다는 것을 알고 있지만 확실히 약간 높습니다! 또한 동일한 소프트웨어(동일한 시간에 실행)를 사용하는 두 개의 형제 컴퓨터가 있고 두 형제 컴퓨터 모두에서 rsyslogd의 성능이 더 좋습니다(각 컴퓨터는 여전히 약 3.5GB를 사용합니다).

이것은 rsyslogd 7.4.4입니다. 알아요새 버전에서는 메모리 누수가 수정되었습니다..

내 질문:서둘러 업그레이드하기 전에 가능하다면 실제로 취약점이 발생하고 있다는 몇 가지 증거를 수집하고 싶습니다. 지금은 rsyslogd를 실행 상태로 두었지만 곧 모든 스왑이 완료될 예정이므로 곧 조치를 취해야 합니다...

내가 증거를 수집하는 것 중 하나는 atop. 이는 언제 누출이 발생하기 시작했는지 명확하게 보여줍니다(그 당시 상자에 특별한 작업을 수행한 기억이 없습니다). 흥미롭게도 메모리가 증가하기 시작하는 동시에 디스크 쓰기 활동이 완전히 중단되지는 않았지만 극적으로 감소했습니다. 파일 시스템은 용량 측면에서 좋은 성능을 발휘합니다.

$ atop -r atop_20160117 | grep rsyslogd
  PID  SYSCPU  USRCPU  VGROW  RGROW  RDDSK  WRDSK ST EXC S  CPU CMD            
16212   0.03s   0.06s     0K     0K     0K    96K --   - S   0% rsyslogd       
16212   0.11s   0.22s     0K     0K     0K  1844K --   - S   2% rsyslogd       
16212   0.03s   0.12s     0K     0K     0K   564K --   - S   1% rsyslogd       
16212   0.04s   0.06s     0K     0K     0K    96K --   - S   1% rsyslogd       
16212   0.08s   0.19s     0K     0K     0K  1808K --   - S   1% rsyslogd       
16212   0.04s   0.11s     0K     0K     0K   608K --   - S   1% rsyslogd       
16212   0.02s   0.07s     0K     0K     0K   116K --   - S   0% rsyslogd       
16212   0.06s   0.04s     0K  2640K     0K   144K --   - S   1% rsyslogd       
16212   0.02s   0.02s     0K  1056K     0K     0K --   - S   0% rsyslogd       
16212   0.01s   0.01s     0K   264K     0K     0K --   - S   0% rsyslogd       
16212   0.02s   0.04s     0K  2904K     0K     0K --   - S   0% rsyslogd       
16212   0.02s   0.02s     0K  1056K     0K     0K --   - S   0% rsyslogd       
16212   0.02s   0.00s     0K   264K     0K     0K --   - S   0% rsyslogd       
16212   0.06s   0.09s 75868K  3532K   208K     0K --   - S   1% rsyslogd       
16212   0.02s   0.02s     0K   792K     0K     0K --   - S   0% rsyslogd       
16212   0.01s   0.01s     0K   264K     0K     0K --   - S   0% rsyslogd       
16212   0.05s   0.03s     0K  3168K     0K     0K --   - S   0% rsyslogd       
16212   0.02s   0.02s     0K  1056K     0K     0K --   - S   0% rsyslogd       
16212   0.00s   0.01s     0K   264K     0K     0K --   - S   0% rsyslogd       
16212   0.03s   0.10s     0K  2904K     0K     0K --   - S   1% rsyslogd       
16212   0.02s   0.02s     0K   792K     0K     0K --   - S   0% rsyslogd       
16212   0.00s   0.02s     0K   264K     0K     0K --   - S   0% rsyslogd       
16212   0.04s   0.03s     0K  2904K     0K   160K --   - S   0% rsyslogd       
16212   0.02s   0.02s     0K   792K     0K     0K --   - S   0% rsyslogd       

편집하다:다음은 Zabbix가 상자에 제공한 사용 가능한 메모리에 대한 그래프입니다. atop위의 출력과 일치하여 1월 17일 9시 30분경에 떨어지기 시작했습니다.

Zabbix 사용 가능한 메모리 그래프(8d)

최종 편집:재부팅해야 했고 rsyslogd, 20GB라는 엄청난 공간이 확보되어 의심스러운 경우 이것이 범인임을 확인했습니다.

free -m
             total       used       free     shared    buffers     cached
Mem:         32142      11325      20817        282         56        473
-/+ buffers/cache:      10795      21347
Swap:        16383       5638      10745

아쉽게도 12시간 동안만 실행되었으며 이제 다시 4GB를 넘었습니다. 확실히 뭔가 문제가 있는 것 같습니다. 업그레이드 경로를 시도해 봐야 할 것 같습니다...

답변1

문서/lib/systemd/system/rsyslog.services

[Service]
MemoryAccounting=yes
MemoryCurrent=8192000
MemoryLimit=8192000

답변2

내 경우에는(centos 7 서버) 서비스를 다시 시작해도 rsyslog문제가 없었습니다! rsyslogd프로세스거주자메모리 사용량이 5GB에서 9MB로 감소했습니다!

systemctl restart rsyslog

관련 정보