Ненормальное потребление памяти

216
22 октября 2018, 05:40

Есть бот для ВКонтакте на c++, запущенный на Raspbian (aka Debian) linux. Есть также две абсолютно одинаковых платы Raspberry Pi, на которых всё это хостится.

Изначально бот работал один, кушал в среднем 40-60 МБ памяти. Но однажды я запустил второго на этой же плате, тоже на си++, но от другого разработчика. И с этого момента первый бот стал жрать по 200-250, а то и 300 МБ. На другой плате мой бот в одиночку жрёт те же самые 40-60 МБ.

Делал почти всё, что возможно: внимательно анализировал код на утечки, проверял valgrind'ом, обновлял ядра и прочий софт, перекомпилировал с разными настройками -- ноль результата. Самое интересное дало мне cat /proc/pid/maps:

В первом случае (когда утекало 200-300 мб) было очень много анонимных страниц, 4.5 экрана putty, общей суммой как раз на 200 мб.

00010000-00097000 r-xp 00000000 b3:02 253858     /home/pi/vkbot-public/bot
000a6000-000a7000 r--p 00086000 b3:02 253858     /home/pi/vkbot-public/bot
000a7000-000a8000 rw-p 00087000 b3:02 253858     /home/pi/vkbot-public/bot
00fbb000-0326a000 rw-p 00000000 00:00 0          [heap]
63600000-63601000 ---p 00000000 00:00 0
63601000-63e00000 rw-p 00000000 00:00 0
63e00000-63ef7000 rw-p 00000000 00:00 0
63ef7000-63f00000 ---p 00000000 00:00 0
63f00000-64000000 rw-p 00000000 00:00 0
64000000-64200000 rw-p 00000000 00:00 0
64200000-64400000 rw-p 00000000 00:00 0
64400000-644fb000 rw-p 00000000 00:00 0
644fb000-64500000 ---p 00000000 00:00 0
64500000-64600000 rw-p 00000000 00:00 0
64600000-647fc000 rw-p 00000000 00:00 0
647fc000-64800000 ---p 00000000 00:00 0
64800000-64a00000 rw-p 00000000 00:00 0
64a00000-64c00000 rw-p 00000000 00:00 0
64c00000-64e00000 rw-p 00000000 00:00 0
64e00000-65000000 rw-p 00000000 00:00 0
65000000-65200000 rw-p 00000000 00:00 0
65200000-652fd000 rw-p 00000000 00:00 0
652fd000-65300000 ---p 00000000 00:00 0
65300000-653f1000 rw-p 00000000 00:00 0
653f1000-65400000 ---p 00000000 00:00 0
65400000-65600000 rw-p 00000000 00:00 0
65600000-65800000 rw-p 00000000 00:00 0
65800000-658f6000 rw-p 00000000 00:00 0
658f6000-65900000 ---p 00000000 00:00 0
65900000-659ff000 rw-p 00000000 00:00 0
659ff000-65a00000 ---p 00000000 00:00 0
65a00000-65afc000 rw-p 00000000 00:00 0
65afc000-65b00000 ---p 00000000 00:00 0
65b00000-65bfc000 rw-p 00000000 00:00 0
65bfc000-65c00000 ---p 00000000 00:00 0
65c00000-65dff000 rw-p 00000000 00:00 0
65dff000-65e00000 ---p 00000000 00:00 0
65e00000-66000000 rw-p 00000000 00:00 0
66000000-66100000 rw-p 00000000 00:00 0
66200000-662fd000 rw-p 00000000 00:00 0
662fd000-66300000 ---p 00000000 00:00 0
66300000-66400000 rw-p 00000000 00:00 0
66400000-665f5000 rw-p 00000000 00:00 0
665f5000-66600000 ---p 00000000 00:00 0
66600000-66800000 rw-p 00000000 00:00 0
66800000-669fa000 rw-p 00000000 00:00 0
669fa000-66a00000 ---p 00000000 00:00 0
66a00000-66afd000 rw-p 00000000 00:00 0
66afd000-66b00000 ---p 00000000 00:00 0
66b00000-66c00000 rw-p 00000000 00:00 0
66c00000-66e00000 rw-p 00000000 00:00 0
66e00000-670f6000 rw-p 00000000 00:00 0
670f6000-67100000 ---p 00000000 00:00 0
67100000-67200000 rw-p 00000000 00:00 0
67200000-673fd000 rw-p 00000000 00:00 0
673fd000-67400000 ---p 00000000 00:00 0
67400000-67600000 rw-p 00000000 00:00 0
67600000-676f8000 rw-p 00000000 00:00 0
676f8000-67700000 ---p 00000000 00:00 0
67700000-677d9000 rw-p 00000000 00:00 0
677d9000-67800000 ---p 00000000 00:00 0
67800000-678f7000 rw-p 00000000 00:00 0
678f7000-67900000 ---p 00000000 00:00 0
67900000-679f6000 rw-p 00000000 00:00 0
679f6000-67a00000 ---p 00000000 00:00 0
67a00000-67afe000 rw-p 00000000 00:00 0
67afe000-67b00000 ---p 00000000 00:00 0
67b00000-67c00000 rw-p 00000000 00:00 0
67c00000-67d00000 rw-p 00000000 00:00 0
67e00000-67ef3000 rw-p 00000000 00:00 0
67ef3000-67f00000 ---p 00000000 00:00 0
67f00000-67ff0000 rw-p 00000000 00:00 0
67ff0000-68000000 ---p 00000000 00:00 0
68000000-68100000 rw-p 00000000 00:00 0
68200000-682fc000 rw-p 00000000 00:00 0
682fc000-68300000 ---p 00000000 00:00 0
68300000-683c4000 rw-p 00000000 00:00 0
683c4000-68400000 ---p 00000000 00:00 0
68400000-685fd000 rw-p 00000000 00:00 0
685fd000-68600000 ---p 00000000 00:00 0
68600000-68800000 rw-p 00000000 00:00 0
68800000-688f7000 rw-p 00000000 00:00 0
688f7000-68900000 ---p 00000000 00:00 0
68900000-689cb000 rw-p 00000000 00:00 0
689cb000-68a00000 ---p 00000000 00:00 0
68a00000-68af7000 rw-p 00000000 00:00 0
68af7000-68b00000 ---p 00000000 00:00 0
68b00000-68bfb000 rw-p 00000000 00:00 0
68bfb000-68c00000 ---p 00000000 00:00 0
68c00000-68e00000 rw-p 00000000 00:00 0
68e00000-68ffe000 rw-p 00000000 00:00 0
68ffe000-69000000 ---p 00000000 00:00 0
69000000-69200000 rw-p 00000000 00:00 0
69200000-692f4000 rw-p 00000000 00:00 0
692f4000-69300000 ---p 00000000 00:00 0
69300000-693ca000 rw-p 00000000 00:00 0
693ca000-69400000 ---p 00000000 00:00 0
69400000-695f2000 rw-p 00000000 00:00 0
695f2000-69600000 ---p 00000000 00:00 0
69600000-69800000 rw-p 00000000 00:00 0
69800000-698fe000 rw-p 00000000 00:00 0
698fe000-69900000 ---p 00000000 00:00 0
69900000-699f5000 rw-p 00000000 00:00 0
699f5000-69a00000 ---p 00000000 00:00 0
69a00000-69afc000 rw-p 00000000 00:00 0
69afc000-69b00000 ---p 00000000 00:00 0
69b00000-69bf6000 rw-p 00000000 00:00 0
69bf6000-69c00000 ---p 00000000 00:00 0
69c00000-69e00000 rw-p 00000000 00:00 0
69e00000-6a000000 rw-p 00000000 00:00 0
6a000000-6a0fe000 rw-p 00000000 00:00 0
6a0fe000-6a100000 ---p 00000000 00:00 0
6a100000-6a1fb000 rw-p 00000000 00:00 0
6a1fb000-6a200000 ---p 00000000 00:00 0
6a200000-6a400000 rw-p 00000000 00:00 0
6a400000-6a4d8000 rw-p 00000000 00:00 0
6a4d8000-6a500000 ---p 00000000 00:00 0
6a500000-6a600000 rw-p 00000000 00:00 0
6a600000-6a6f8000 rw-p 00000000 00:00 0
6a6f8000-6a700000 ---p 00000000 00:00 0
6a700000-6a7f8000 rw-p 00000000 00:00 0
6a7f8000-6a800000 ---p 00000000 00:00 0
6a800000-6aa00000 rw-p 00000000 00:00 0
6aa00000-6ac00000 rw-p 00000000 00:00 0
6ac00000-6affc000 rw-p 00000000 00:00 0
6affc000-6b000000 ---p 00000000 00:00 0
6b000000-6b0dc000 rw-p 00000000 00:00 0
6b0dc000-6b100000 ---p 00000000 00:00 0
6b200000-6b400000 rw-p 00000000 00:00 0
6b400000-6b600000 rw-p 00000000 00:00 0
6b600000-6b800000 rw-p 00000000 00:00 0
6b800000-6b9fb000 rw-p 00000000 00:00 0
6b9fb000-6ba00000 ---p 00000000 00:00 0
6ba00000-6bafb000 rw-p 00000000 00:00 0
6bafb000-6bb00000 ---p 00000000 00:00 0
6bb00000-6bc00000 rw-p 00000000 00:00 0
6bc00000-6bcfd000 rw-p 00000000 00:00 0
6bcfd000-6bd00000 ---p 00000000 00:00 0
6bd00000-6be00000 rw-p 00000000 00:00 0
6be00000-6bf00000 rw-p 00000000 00:00 0
6c000000-6c021000 rw-p 00000000 00:00 0
6c021000-6c100000 ---p 00000000 00:00 0
6c200000-6c300000 rw-p 00000000 00:00 0
6c400000-6c600000 rw-p 00000000 00:00 0
6c600000-6c6f6000 rw-p 00000000 00:00 0
6c6f6000-6c700000 ---p 00000000 00:00 0
6c700000-6c7f4000 rw-p 00000000 00:00 0
6c7f4000-6c800000 ---p 00000000 00:00 0
6c800000-6ca00000 rw-p 00000000 00:00 0
6ca00000-6caf6000 rw-p 00000000 00:00 0
6caf6000-6cb00000 ---p 00000000 00:00 0
6cb00000-6cc00000 rw-p 00000000 00:00 0
6cc00000-6ccfe000 rw-p 00000000 00:00 0
6ccfe000-6cd00000 ---p 00000000 00:00 0
6cd00000-6ce00000 rw-p 00000000 00:00 0
6ce00000-6ceff000 rw-p 00000000 00:00 0
6ceff000-6cf00000 ---p 00000000 00:00 0
6cf00000-6cffa000 rw-p 00000000 00:00 0
6cffa000-6d000000 ---p 00000000 00:00 0
6d000000-6d1ff000 rw-p 00000000 00:00 0
6d1ff000-6d200000 ---p 00000000 00:00 0
6d200000-6d400000 rw-p 00000000 00:00 0
6d400000-6d600000 rw-p 00000000 00:00 0
6d600000-6d800000 rw-p 00000000 00:00 0
6d800000-6da00000 rw-p 00000000 00:00 0
6da00000-6dafa000 rw-p 00000000 00:00 0
6dafa000-6db00000 ---p 00000000 00:00 0
6db00000-6dc00000 rw-p 00000000 00:00 0
6dc00000-6ddf9000 rw-p 00000000 00:00 0
6ddf9000-6de00000 ---p 00000000 00:00 0
6de00000-6defe000 rw-p 00000000 00:00 0
6defe000-6df00000 ---p 00000000 00:00 0
6df00000-6e000000 rw-p 00000000 00:00 0
6e000000-6e1ff000 rw-p 00000000 00:00 0
6e1ff000-6e200000 ---p 00000000 00:00 0
6e200000-6e400000 rw-p 00000000 00:00 0
6e500000-6e5ff000 rw-p 00000000 00:00 0
6e5ff000-6e600000 ---p 00000000 00:00 0
6e600000-6e6fb000 rw-p 00000000 00:00 0
6e6fb000-6e700000 ---p 00000000 00:00 0
6e700000-6e7ff000 rw-p 00000000 00:00 0
6e7ff000-6e800000 ---p 00000000 00:00 0
6e800000-6e9fe000 rw-p 00000000 00:00 0
6e9fe000-6ea00000 ---p 00000000 00:00 0
6ea00000-6ec00000 rw-p 00000000 00:00 0
6ed00000-6edd8000 rw-p 00000000 00:00 0
6edd8000-6ee00000 ---p 00000000 00:00 0
6ee00000-6eefa000 rw-p 00000000 00:00 0
6eefa000-6ef00000 ---p 00000000 00:00 0
6ef00000-6eff8000 rw-p 00000000 00:00 0
6eff8000-6f000000 ---p 00000000 00:00 0
6f000000-6f0fe000 rw-p 00000000 00:00 0
6f0fe000-6f100000 ---p 00000000 00:00 0
6f100000-6f200000 rw-p 00000000 00:00 0
6f200000-6f400000 rw-p 00000000 00:00 0
6f400000-6f600000 rw-p 00000000 00:00 0
6f600000-6f700000 rw-p 00000000 00:00 0
6f700000-6f800000 rw-p 00000000 00:00 0
6f800000-6f8f7000 rw-p 00000000 00:00 0
6f8f7000-6f900000 ---p 00000000 00:00 0
6f900000-6f9fa000 rw-p 00000000 00:00 0
6f9fa000-6fa00000 ---p 00000000 00:00 0
6fa00000-6fc00000 rw-p 00000000 00:00 0
6fc00000-6fe00000 rw-p 00000000 00:00 0
6fe00000-6fff7000 rw-p 00000000 00:00 0
6fff7000-70000000 ---p 00000000 00:00 0
70000000-70200000 rw-p 00000000 00:00 0
70200000-702fc000 rw-p 00000000 00:00 0
702fc000-70300000 ---p 00000000 00:00 0
70300000-703ff000 rw-p 00000000 00:00 0
703ff000-70400000 ---p 00000000 00:00 0
70400000-70600000 rw-p 00000000 00:00 0
70600000-706f1000 rw-p 00000000 00:00 0
706f1000-70700000 ---p 00000000 00:00 0
70700000-70800000 rw-p 00000000 00:00 0
70800000-709fa000 rw-p 00000000 00:00 0
709fa000-70a00000 ---p 00000000 00:00 0
70a00000-70c00000 rw-p 00000000 00:00 0
70c00000-70cf7000 rw-p 00000000 00:00 0
70cf7000-70d00000 ---p 00000000 00:00 0
70d00000-70dfe000 rw-p 00000000 00:00 0
70dfe000-70e00000 ---p 00000000 00:00 0
70e00000-70efd000 rw-p 00000000 00:00 0
70efd000-70f00000 ---p 00000000 00:00 0
70f00000-70ff8000 rw-p 00000000 00:00 0
70ff8000-71000000 ---p 00000000 00:00 0
71000000-710fd000 rw-p 00000000 00:00 0
710fd000-71100000 ---p 00000000 00:00 0
71100000-71200000 rw-p 00000000 00:00 0
71200000-71400000 rw-p 00000000 00:00 0
71400000-71600000 rw-p 00000000 00:00 0
71600000-716f2000 rw-p 00000000 00:00 0
716f2000-71700000 ---p 00000000 00:00 0
71700000-717f4000 rw-p 00000000 00:00 0
717f4000-71800000 ---p 00000000 00:00 0
71800000-71a00000 rw-p 00000000 00:00 0
71a00000-71af5000 rw-p 00000000 00:00 0
71af5000-71b00000 ---p 00000000 00:00 0
71b00000-71c00000 rw-p 00000000 00:00 0
71c00000-71cf6000 rw-p 00000000 00:00 0
71cf6000-71d00000 ---p 00000000 00:00 0
71d00000-71dfe000 rw-p 00000000 00:00 0
71dfe000-71e00000 ---p 00000000 00:00 0
71e00000-71efd000 rw-p 00000000 00:00 0
71efd000-71f00000 ---p 00000000 00:00 0
71f00000-71ffc000 rw-p 00000000 00:00 0
71ffc000-72000000 ---p 00000000 00:00 0
72000000-721fd000 rw-p 00000000 00:00 0
721fd000-72200000 ---p 00000000 00:00 0
72200000-72400000 rw-p 00000000 00:00 0
72400000-724fb000 rw-p 00000000 00:00 0
724fb000-72500000 ---p 00000000 00:00 0
72500000-72600000 rw-p 00000000 00:00 0
72600000-727fe000 rw-p 00000000 00:00 0
727fe000-72800000 ---p 00000000 00:00 0
72800000-72a00000 rw-p 00000000 00:00 0
72a00000-72af9000 rw-p 00000000 00:00 0
72af9000-72b00000 ---p 00000000 00:00 0
72b00000-72be6000 rw-p 00000000 00:00 0
72be6000-72c00000 ---p 00000000 00:00 0
72c00000-72cfc000 rw-p 00000000 00:00 0
72cfc000-72d00000 ---p 00000000 00:00 0
72d00000-72df6000 rw-p 00000000 00:00 0
72df6000-72e00000 ---p 00000000 00:00 0
72e00000-72efe000 rw-p 00000000 00:00 0
72efe000-72f00000 ---p 00000000 00:00 0
72f00000-72fff000 rw-p 00000000 00:00 0
72fff000-73000000 ---p 00000000 00:00 0
73000000-73200000 rw-p 00000000 00:00 0
73200000-73300000 rw-p 00000000 00:00 0
733ec000-733ed000 ---p 00000000 00:00 0
733ed000-73cd5000 rw-p 00000000 00:00 0
73e00000-73f00000 rw-p 00000000 00:00 0
*тут shared libs и открытые файлы*
7e94a000-7e96b000 rw-p 00000000 00:00 0          [stack]
7eef2000-7eef3000 r-xp 00000000 00:00 0          [sigpage]
7eef3000-7eef4000 r--p 00000000 00:00 0          [vvar]
7eef4000-7eef5000 r-xp 00000000 00:00 0          [vdso]
ffff0000-ffff1000 r-xp 00000000 00:00 0          [vectors]

Во втором случае их было всего около 20.

00010000-00097000 r-xp 00000000 b3:02 258418     /home/pi/vkbot-test/bot
000a6000-000a7000 r--p 00086000 b3:02 258418     /home/pi/vkbot-test/bot
000a7000-000a8000 rw-p 00087000 b3:02 258418     /home/pi/vkbot-test/bot
00d66000-016d7000 rw-p 00000000 00:00 0          [heap]
b0e00000-b0ff4000 rw-p 00000000 00:00 0
b0ff4000-b1000000 ---p 00000000 00:00 0
b1000000-b1200000 rw-p 00000000 00:00 0
b1200000-b1400000 rw-p 00000000 00:00 0
b1400000-b1600000 rw-p 00000000 00:00 0
b1600000-b1800000 rw-p 00000000 00:00 0
b1800000-b1a00000 rw-p 00000000 00:00 0
b1a00000-b1c00000 rw-p 00000000 00:00 0
b1c00000-b1e00000 rw-p 00000000 00:00 0
b1e00000-b2000000 rw-p 00000000 00:00 0
b2000000-b2200000 rw-p 00000000 00:00 0
b2200000-b2400000 rw-p 00000000 00:00 0
b2400000-b2600000 rw-p 00000000 00:00 0
b2600000-b2800000 rw-p 00000000 00:00 0
b2800000-b2a00000 rw-p 00000000 00:00 0
b2a00000-b2c00000 rw-p 00000000 00:00 0
b2c00000-b2cff000 rw-p 00000000 00:00 0
b2cff000-b2d00000 ---p 00000000 00:00 0
b2e00000-b3000000 rw-p 00000000 00:00 0
b3000000-b30ff000 rw-p 00000000 00:00 0
b30ff000-b3100000 ---p 00000000 00:00 0
b3100000-b3200000 rw-p 00000000 00:00 0
b3200000-b32ff000 rw-p 00000000 00:00 0
b32ff000-b3300000 ---p 00000000 00:00 0
b33ec000-b33ed000 ---p 00000000 00:00 0
b33ed000-b3cd5000 rw-p 00000000 00:00 0
b3e00000-b3ef0000 rw-p 00000000 00:00 0
b3ef0000-b3f00000 ---p 00000000 00:00 0
*тут те же самые shared libs & файлы*
be878000-be899000 rw-p 00000000 00:00 0          [stack]
bec09000-bec0a000 r-xp 00000000 00:00 0          [sigpage]
ffff0000-ffff1000 r-xp 00000000 00:00 0          [vectors]

Как это произошло и что делать?

Answer 1

Проблема решена, она оказалась в случайно поставленном пакете libcurl4-gnutls-dev вместо libcurl4-openssl-dev, видимо утечка в нём

READ ALSO
Зачем пишут #ifndef file_h в начале файла

Зачем пишут #ifndef file_h в начале файла

Для каких ситуаций может быть полезно определение именно таким образом?

160
почему мы тут пишем int dist = 252; а на втором классе miles хотя я не могу найти между ними связи

почему мы тут пишем int dist = 252; а на втором классе miles хотя я не могу найти между ними связи

Потому что переменную в одном методе решили назвать dists, а в другом - miles, их имена не обязательно должны совпадать, хотя и хранят одно и то же значение...

146
Как вставить Spring Bean в xml для factory

Как вставить Spring Bean в xml для factory

Без Spring я инициализировал объект так:

162
Как правильно указать путь к файлу lang_rus.properties?

Как правильно указать путь к файлу lang_rus.properties?

Помогите пожалуйста! На главной странице приложения я указал для одной из кнопкок text="%ruth_test_main" в fxml файле, теперь хочу подключить файл с русским...

173