Страница 1 из 1

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

Добавлено: 09 окт 2015, 11:14
kontrol
Коллеги, есть IVR-портал на Asterisk, в диалплане которого штук 20 операций MYSQL(Select * ... ) и штук 10 функций SHELL(php kakoyto_script.php )
нагрузка - 20-100 одновременных сеансов
при запуске службы asteisk потребление памяти такое:
(процитировать top не могу, чтобы не перезапускать астер, беру по данным zabbix)
RES 42.37 МБ
VIRT 3380 МБ

через сутки - такое:

Код: Выделить всё

 5293 root      20   0 5235m 533m  13m S 12.4  3.4 284:13.72 asterisk           

вопросы:
1. почему такой перекос в размерах VIRT и RES (минимум в 10 раз) ? OS - Centos 6.5 x64
2. почему потребляемая память только растет, но никогда не уменьшается (синяя и оранжевые линии на приложенном графике)? для примера, голубая линия - выделение памяти под mysql - за сутки ровная, как каток. оператор MYSQL (Clear ${resultid}) стоит в диалплане после каждого MYSQL(Fetch ... )
3.Почему при ОЗУ 16 ГБ , при достижении VIRT 8 ГБ у астериска начинает рваться (джиттерить) голос ?
aster.png

Re: Потребление памяти

Добавлено: 09 окт 2015, 11:35
ded
Потому что писано криво. Это частный случай общей проблемматики кривонаписаных приложений с утечкой памяти.
Человек, который писал 20 операций MYSQL(Select * ... ) и штук 10 функций SHELL(php kakoyto_script.php) торопился, не изучал встроенные возможности диалплана, вместо того, чтобы использовать AGI наваял SHELL(php kakoyto_script.php). Скорблю.
Разбор полёта (почему именно эта структура диалплана жрёт память) - трудоёмко, дорого, неоправдано.

Re: Потребление памяти

Добавлено: 09 окт 2015, 12:08
kontrol
а почему такой перекос в распределении памяти? почему VIRT в 10 раз больше RES, причем сразу при старте?

Re: Потребление памяти

Добавлено: 09 окт 2015, 12:23
ded
A почему Вы пишете оперируя только 2-3 функциями? А почему Вы не почитете про все другие функции Астериск?

Re: Потребление памяти

Добавлено: 09 окт 2015, 12:32
MIKS
В VIRT у вас весь астер "с блекджеком и ..." и тем что им возможно в будущем понадобится. Отключите модули звуки, скрипты и сравните. Да и еще можно реально уменьшить покрутив asterisk.conf(попробуйте, например, maxcalls=1 :) ) А RES это реальная память выделяемая в озу под текущие процессы. Причина роста во втором посте темы.

Re: Потребление памяти

Добавлено: 09 окт 2015, 12:41
kontrol
понятно, спасибо!