커널 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분경에 떨어지기 시작했습니다.
최종 편집:재부팅해야 했고 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