Автор Тема: Куда уходит память? [Решено]  (Прочитано 2877 раз)

Оффлайн Cool_Lamer

  • Участник
  • *
  • Сообщений: 473
#uname -a
Linux .local 3.14.54-std-def-alt0.M70P.1 #1 SMP Fri Oct 2 10:46:35 UTC 2015 i686 GNU/Linux
Поставил zabbix и сразу "ушла" вся память. Насколько я понял, всё скушал мускуль. Куда смотреть, какие настройки крутить? (скрин htop во вложениях)
А ещё кто такие polkitd и libvirtd? libvirtd, нашёл, почитал используется для виртуальных сред. Если я не создаю никаких виртуальных машин на сервере, нужен ли он мне?

#pstree -p
# pstree -p
init(1)─┬─ModemManager(1877)─┬─{ModemManager}(2032)
        │                    └─{ModemManager}(2034)
        ├─acpid(1396)
        ├─automount(2684)─┬─{automount}(2685)
        │                 ├─{automount}(2686)
        │                 ├─{automount}(2689)
        │                 └─{automount}(2692)
        ├─avahi-daemon(2741)───avahi-daemon(2742)
        ├─bluetoothd(1925)
        ├─crond(2526)
        ├─dbus-daemon(1445)
        ├─gpm(2471)
        ├─httpd2(32458)─┬─httpd2(4208)
        │               ├─httpd2(4254)
        │               ├─httpd2(4456)
        │               ├─httpd2(4465)
        │               ├─httpd2(4466)
        │               ├─httpd2(5680)
        │               ├─httpd2(8151)
        │               ├─httpd2(12115)
        │               ├─httpd2(12831)
        │               └─httpd2(22818)
        ├─icecast(3848)─┬─{icecast}(3849)
        │               ├─{icecast}(3850)
        │               ├─{icecast}(3851)
        │               ├─{icecast}(3852)
        │               ├─{icecast}(3853)
        │               └─{icecast}(9931)
        ├─klogd(2348)
        ├─libvirtd(4034)─┬─{libvirtd}(4035)
        │                ├─{libvirtd}(4036)
        │                ├─{libvirtd}(4037)
        │                ├─{libvirtd}(4038)
        │                ├─{libvirtd}(4039)
        │                ├─{libvirtd}(4040)
        │                ├─{libvirtd}(4041)
        │                ├─{libvirtd}(4042)
        │                ├─{libvirtd}(4043)
        │                └─{libvirtd}(4044)
        ├─master(3570)─┬─pickup(13179)
        │              └─qmgr(3585)
        ├─mingetty(4152)
        ├─mingetty(4153)
        ├─mingetty(4154)
        ├─mingetty(4155)
        ├─mingetty(4156)
        ├─mingetty(4157)
        ├─mrtg(4688)
        ├─mysqld_wrapper(12790)───mysqld(12797)─┬─{mysqld}(12804)
        │                                       ├─{mysqld}(12805)
        │                                       ├─{mysqld}(12806)
        │                                       ├─{mysqld}(12807)
        │                                       ├─{mysqld}(12808)
        │                                       ├─{mysqld}(12809)
        │                                       ├─{mysqld}(12810)
        │                                       ├─{mysqld}(12811)
        │                                       ├─{mysqld}(12812)
        │                                       ├─{mysqld}(12813)
        │                                       ├─{mysqld}(12816)
        │                                       ├─{mysqld}(12817)
        │                                       ├─{mysqld}(12818)
        │                                       ├─{mysqld}(12819)
        │                                       ├─{mysqld}(12820)
        │                                       ├─{mysqld}(12821)
        │                                       ├─{mysqld}(12822)
        │                                       ├─{mysqld}(12823)
        │                                       ├─{mysqld}(12828)
        │                                       ├─{mysqld}(12830)
        │                                       ├─{mysqld}(12837)
        │                                       ├─{mysqld}(12850)
        │                                       ├─{mysqld}(12851)
        │                                       ├─{mysqld}(12852)
        │                                       └─{mysqld}(12860)
        ├─named(2221)
        ├─ntpd(3925)
        ├─ntpd(3923)
        ├─polkitd(2038)─┬─{polkitd}(2125)
        │               ├─{polkitd}(2128)
        │               ├─{polkitd}(2130)
        │               ├─{polkitd}(2131)
        │               └─{polkitd}(2170)
        ├─rpc.idmapd(2172)
        ├─rpc.statd(2088)
        ├─rpcbind(2040)
        ├─smartd(2575)
        ├─sshd(2839)───sshd(10371)───sshd(10410)───bash(10411)───su(10455)───bash(10464)───pstree(13705)
        ├─syslogd(16703)
        ├─systemd-udevd(315)
        ├─virtlockd(4139)───{virtlockd}(4140)
        ├─xinetd(2790)
        └─zabbix_mysql(3978)─┬─zabbix_mysql(4045)
                             ├─zabbix_mysql(4046)
                             ├─zabbix_mysql(4047)
                             ├─zabbix_mysql(4048)
                             ├─zabbix_mysql(4050)
                             ├─zabbix_mysql(4051)
                             ├─zabbix_mysql(4052)
                             ├─zabbix_mysql(4053)
                             ├─zabbix_mysql(4054)
                             ├─zabbix_mysql(4055)
                             ├─zabbix_mysql(4056)
                             ├─zabbix_mysql(4057)
                             ├─zabbix_mysql(4058)
                             ├─zabbix_mysql(4059)───sh(13703)───fping(13704)
                             ├─zabbix_mysql(4060)
                             ├─zabbix_mysql(4061)
                             ├─zabbix_mysql(4062)
                             ├─zabbix_mysql(4063)
                             ├─zabbix_mysql(4064)
                             ├─zabbix_mysql(4065)
                             ├─zabbix_mysql(4066)
                             ├─zabbix_mysql(4067)
                             ├─zabbix_mysql(4068)
                             ├─zabbix_mysql(4069)
                             ├─zabbix_mysql(4070)
                             └─zabbix_mysql(4071)

P.S. Аналогичная ситуация на ещё одном сервере, но уже не с забиксом, а с запущеным на сервере сайтом (для управления оборудования с базой mysql). Потребление памяти выросло с 17% до 60 после запуска.
« Последнее редактирование: 16.02.2016 15:32:44 от Cool_Lamer »

Оффлайн Cool_Lamer

  • Участник
  • *
  • Сообщений: 473
Re: Потребление памяти веб-сервером
« Ответ #1 : 01.12.2015 14:33:16 »
Из-за общего молчания, у меня такое чувство, что ответ очевиден. Но день гугления и яндексения, кроме как добавить skip-innodb в my.conf, внятных ответов не дают. Допустим с сервером который на скрине с забиксом, мускуль память просто кэширует, но не использует. Но тогда не вяжется с этим сервером

Оффлайн Koi

  • alt linux team
  • ***
  • Сообщений: 1 893
  • валар дохаэрис
    • Канал на youtube
Re: Потребление памяти веб-сервером
« Ответ #2 : 01.12.2015 15:58:40 »
Допустим с сервером который на скрине с забиксом, мускуль память просто кэширует, но не использует. Но тогда не вяжется с этим сервером
A Вы посмотрите pmap -d PID
Там сразу будет видно сколько кэшируется или разделяемые библиотеки.

Оффлайн Koi

  • alt linux team
  • ***
  • Сообщений: 1 893
  • валар дохаэрис
    • Канал на youtube
Re: Потребление памяти веб-сервером
« Ответ #3 : 01.12.2015 17:35:53 »
Еще нашел статью по обнаружению утечек памяти.
http://www.ibm.com/developerworks/ru/library/l-memory-leaks/index.html
Если найдется утечка можно попробовать сменить версию базы.

Оффлайн Cool_Lamer

  • Участник
  • *
  • Сообщений: 473
Re: Куда уходит память?
« Ответ #4 : 15.02.2016 19:47:13 »
Koi, из статьи ничего не понял, она скорее на программиста базы ориентирована, чем на того кто с ней будет работать.
В чью сторону копать ума не приложу.
« Последнее редактирование: 15.02.2016 20:17:42 от Cool_Lamer »

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Re: Куда уходит память?
« Ответ #5 : 15.02.2016 20:09:24 »
Koi, из статьи ничего не понял, она скорее на программиста базы ориентирована, чем на того кто с ней будет работать.
В чью сторону копать ума не приложу.
А что там понимать. Приложение может забирать у операционки память на свои нужды, а потом когда память становится ей не нужна, приложение не сообщает, что память освободилась, потом берёт новый кусок. и опять не сообщает. В результате "по ниточке"  "съедает" всю свободную память. Приложение об этой памяти не помнит, а операционка  считает её занятой приложением. Там описан механизм как найти какое приложение "съедает" память. И как писать приложение, что-бы память не утекала.

Оффлайн Cool_Lamer

  • Участник
  • *
  • Сообщений: 473
Re: Куда уходит память?
« Ответ #6 : 15.02.2016 20:18:05 »
Upd. Если обрисовать проблему на данный момент, то
Есть спец.софтина astra. Конфиг для неё пишется в базу mysql. При запуске софтины она "гребёт" параметры из базы и запускается с ними. Сжирание памяти с 30% до 67% уходит после их запуска. Но судя по мониторилкам, память никто не потребляет особо, кому верить, куда смотреть?
На скринах выводы с запущеным мускулем и без (с остановленым апачем аналогично).

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Re: Куда уходит память?
« Ответ #7 : 15.02.2016 20:43:53 »
Что выдаёт
cat /proc/meminfo   

Оффлайн yaleks

  • Мастер
  • ***
  • Сообщений: 6 242
Re: Куда уходит память?
« Ответ #8 : 15.02.2016 22:51:34 »
Так а в чем у вас проблема-то?
Нормальные скрины, памяти достаточно, дисковый кэш как и положено занял излишки.
Если ваши эстетические чувства нарушены, то
sync && echo 3 > /proc/sys/vm/drop_caches

Оффлайн Cool_Lamer

  • Участник
  • *
  • Сообщений: 473
Re: Куда уходит память?
« Ответ #9 : 16.02.2016 15:26:46 »
Что выдаёт
cat /proc/meminfo   
# cat /proc/meminfo
MemTotal:        4002152 kB
MemFree:          302696 kB
Buffers:          146476 kB
Cached:           906996 kB
SwapCached:         4348 kB
Active:           816860 kB
Inactive:         863984 kB
Active(anon):     236240 kB
Inactive(anon):   394976 kB
Active(file):     580620 kB
Inactive(file):   469008 kB
Unevictable:        7568 kB
Mlocked:            7580 kB
SwapTotal:      15358908 kB
SwapFree:       15054984 kB
Dirty:               440 kB
Writeback:             0 kB
AnonPages:        632600 kB
Mapped:            34332 kB
Shmem:               320 kB
Slab:             211964 kB
SReclaimable:     169324 kB
SUnreclaim:        42640 kB
KernelStack:        3248 kB
PageTables:        21388 kB
KsmZeroPages:          0 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    17359984 kB
Committed_AS:    1947780 kB
VmallocTotal:   34359738367 kB
VmallocUsed:     1848772 kB
VmallocChunk:   34357800564 kB
HardwareCorrupted:     0 kB
AnonHugePages:    503808 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      120060 kB
DirectMap2M:     4018176 kB
Свободная память это MemFree + Buffers + Cached? Т.е. Загруженная память это MemTotal - (MemFree + Buffers + Cached)? Значит по сути можно верить тому что показывает htop, у меня занято 2,6Гб?

Так а в чем у вас проблема-то?
Нормальные скрины, памяти достаточно, дисковый кэш как и положено занял излишки.
Если ваши эстетические чувства нарушены, то
sync && echo 3 > /proc/sys/vm/drop_caches
Вот я и пытаюсь понять, всё нормально или нет. Меня напрягает то, что я вижу что вся память забита, а я ещё нагрузил только процентов 20 из нужного. Не понимаю, есть у ещё память или она используется.

Upd.
Спасибо, теперь вижу. Теперь зазобрался, что же мне не нравится. То, что при заборе конфигов из мускуля программа берёт значительно больше памяти, чем если писать конфиг в .lua файлы.
sync && echo 3 > /proc/sys/vm/drop_caches
« Последнее редактирование: 16.02.2016 18:45:25 от sb »

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Re: Куда уходит память? [Решено]
« Ответ #10 : 16.02.2016 15:47:39 »
Ну cached можно выбросить из занятой памяти. Это кеш диска, для ускорения работы файловой системы. Так и задумана, что практически вся свободная память должна уйти в кэш.