Простите, не возьмусь, своей работы дофига.alexus писал(а): Можете со мной связаться. есть небольшая работа удалённо, если возьмётесь.
kepby@prtelecom.ru
Опыт установки 5.3 на боевом сервере
с утечкой памяти вроде решили:
еще проблема:
очень долго генерируется отчет по диал-ап и впн сессиям клиента из админки (около 80-90 секунд за текущий месяц) и отчет по трафику(около 40-50 секунд за текущий месяц)
другие отчеты тоже не быстрые, но эти самые востребованные на текущий момент.
кто юзает 5.3.001, сравните плиз, как у Вас?
Код: Выделить всё
Выставленные параметры interim_update_interval=61 и
radius_ippool_timeout=120 являются слишком маленькими, что приводило к аномально большой нагрузке на ядро.
Рекомендуем выставить эти параметры в более адекватные
значения(interim_update_interval=600 и radius_ippool_timeout=86400). Это должно решить вашу проблему с утечками. Проблема утечек при таких параметрах будет решена в будущих обновлениях.
очень долго генерируется отчет по диал-ап и впн сессиям клиента из админки (около 80-90 секунд за текущий месяц) и отчет по трафику(около 40-50 секунд за текущий месяц)
другие отчеты тоже не быстрые, но эти самые востребованные на текущий момент.
кто юзает 5.3.001, сравните плиз, как у Вас?
из хотлайна, по проблеме назначена задача разработчикам № 0002190
Последний раз редактировалось Point Чт ноя 28, 2013 20:06, всего редактировалось 1 раз.
аптайм 10 часов, утечка памяти не прекратилась 

Код: Выделить всё
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
40309 root 45 44 0 266M 225M select 2 29:33 0.39% utm5_core
Я бы вообще разработчикам рекомендовал сократить список поддерживаемых операционок до Windows и Centos 6 x64. Ядро биллинга должно стоят на отдельной машине, поэтому можно сразу собрать нужный протестированный образ.Point писал(а):аптайм 10 часов, утечка памяти не прекратилась
Код: Выделить всё
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND 40309 root 45 44 0 266M 225M select 2 29:33 0.39% utm5_core
Без разницы, речь идет о том что выбрать одну операционку и под нее затачивать биллинг. Смысла поддерживать кучу дистров нет никакого, мне лично все равно под чем будет запущено ядро биллинга, главное чтобы стабильно работало.ZeM писал(а):Magnum72
Не согласен. Сюда же Freebsd 9.X или уже 10. И Debian 7.X
Чем Centos лучше остальных я не пойму.
глупость спросил, удалено.
Последний раз редактировалось Rico-X Пт ноя 29, 2013 20:31, всего редактировалось 1 раз.
Ситуация прояснилась: после разбора с техподдержкой выяснилось
Ждем решения.
Код: Выделить всё
происходящая у вас не приводит к утечкам памяти. Из-за того,
что у вас нагенерировалось очень много открытых и закрытых
радиус-сессий, то при работе с отчетами ядру требуется много памяти для
обработки. Однако выделенная для таких операций память не является
утекшей, она только страновится зарезервированной системой и будет
освобождена, если другим процессам будет не хватать.
Из за того, что SQL запрос к такой базе получается очень "тяжелым" время
для генерации отчета так же велико. Сделайте бекап вашей базы. В
ближайшее время мы предложим вам решение проблемы долгого формирования
отчетов.
Всем привет!
Народ, гуру, помогите пожалуйста!
Обновился до utm5.3.1-update3
а там функцию rpcf_get_free_ips_for_house(0x2813) заменили на новую rpcf_get_free_ips_for_house(0x15101).
Функция нужна, чтобы искать свободные ip-адреса в пуле по ID дома.
вот старая функция на php
а вот, что я нашел в новом xml/api.xml
(добавилась маска)
Не долго думая я решил подправить старую функцию на php и выглядеть она стала так:
И вроде бы почти правильно работает, но криво
получается вот такая байда:
хотя должны получаться адреса типа 172.16.0.152 172.16.0.153 172.16.0.154 и так далее...
как-то криво преобразует. последний октет пропал, а в начале добавилась 4-ка у всех адресов.
Соответственно залез в DataGetIPAddress()
поэкспеременировав слегка понял что long2ip работает правильно, но она уже получает неверные значения....
Подскажите пожалуйста куда копнуть? Может быть гуру смогут подправить код? у меня не хватает ума совсем )
Народ, гуру, помогите пожалуйста!
Обновился до utm5.3.1-update3
а там функцию rpcf_get_free_ips_for_house(0x2813) заменили на новую rpcf_get_free_ips_for_house(0x15101).
Функция нужна, чтобы искать свободные ip-адреса в пуле по ID дома.
вот старая функция на php
Код: Выделить всё
function rpcf_get_free_ips_for_house($house_id) { //0x2813
$ret=array();
if (!$this->connection->urfa_call(0x2813)) {
print "Error calling function ". __FUNCTION__ ."\n";
return FALSE;
}
$packet = $this->connection->getPacket();
$packet->DataSetInt($house_id);
$this->connection->urfa_send_param($packet);
if ($x = $this->connection->urfa_get_data()){
$ret['ips_size']=$x->DataGetInt();
for ($i=0;$i<$ret['ips_size'];$i++) {
$set['ips_ip']=$x->DataGetIPAddress();
$set['zone_name']=$x->DataGetString();
$ret['free_ips'][]=$set;
}
}
return $ret;
(добавилась маска)
Код: Выделить всё
<function name="rpcf_get_free_ips_for_house" id="0x15101">
<input>
<integer name="house_id" />
</input>
<output>
<integer name="ips_size" />
<for name="i" from="0" count="ips_size">
<ip_address name="ips_ip" array_index="i" />
<integer name="mask" array_index="i" />
<string name="zone_name" array_index="i" />
</for>
<string name="error" />
</output>
</function>
Код: Выделить всё
function rpcf_get_free_ips_for_house($house_id) { //0x15101
$ret=array();
if (!$this->connection->urfa_call(0x15101)) {
print "Error calling function ". __FUNCTION__ ."\n";
return FALSE;
}
$packet = $this->connection->getPacket();
$packet->DataSetInt($house_id);
$this->connection->urfa_send_param($packet);
if ($x = $this->connection->urfa_get_data()){
$ret['ips_size']=$x->DataGetInt();
for ($i=0;$i<$ret['ips_size'];$i++) {
$set['ips_ip']=$x->DataGetIPAddress();
$set['mask']=$x->DataGetInt();
$set['zone_name']=$x->DataGetString();
$ret['free_ips'][]=$set;
}
}
return $ret;
}
получается вот такая байда:
Код: Выделить всё
Array ( [ips_size] => 30 [free_ips] => Array ( [0] => Array ( [ips_ip] => 4.172.16.0 [mask] => 32 [zone_name] => ННГАСУ ) [1] => Array ( [ips_ip] => 4.172.16.0 [mask] => 32 [zone_name] => ННГАСУ ) [2] => Array ( [ips_ip] => 4.172.16.0 [mask] => 32 [zone_name] => ННГАСУ ) [3] => Array ( [ips_ip] => 4.172.16.0 [mask] => 32 [zone_name] => ННГАСУ )
как-то криво преобразует. последний октет пропал, а в начале добавилась 4-ка у всех адресов.
Соответственно залез в DataGetIPAddress()
Код: Выделить всё
function DataGetIPAddress()
{
$num = $this->iterator;
$this->iterator++;
return long2ip($this->bin2int($this->data[$num]) & 0xFFFFFFFF );
}
Подскажите пожалуйста куда копнуть? Может быть гуру смогут подправить код? у меня не хватает ума совсем )
Вот вывод старой функции:
Вот новой (странно что для одного и того же адреса разные результаты):
Код: Выделить всё
<?xml version="1.0"?>
<urfa>
<session key="74099b52c432e741fa140e3baa3563a9"/>
<call function="rpcf_get_free_ips_for_house">
<output>
<integer name="ips_size" value="5"/>
<array name="i">
<item>
<ip_address name="ips_ip" value="178.75.32.181"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="217.76.189.90"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="92.248.197.214"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="178.75.16.4"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="10.3.25.50"/>
<string name="zone_name" value="Заречный 10.3.25.0"/>
</item>
</array>
<string name="error" value=""/>
</output>
</call>
</urfa>
Код: Выделить всё
<?xml version="1.0"?>
<urfa>
<session key="d6099b52000000007dcd35669c2cce36"/>
<call function="rpcf_get_free_ips_for_house">
<output>
<integer name="ips_size" value="52"/>
<array name="i">
<item>
<ip_address name="ips_ip" value="178.75.34.238"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="178.75.35.31"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="178.75.35.147"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="178.75.35.149"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="178.75.35.151"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="178.75.35.153"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="178.75.35.154"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="178.75.35.155"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="178.75.35.157"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="178.75.35.158"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="217.76.176.13"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="217.76.176.15"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="217.76.176.27"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="217.76.176.28"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="217.76.176.36"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="217.76.176.45"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="217.76.176.81"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="217.76.176.96"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="217.76.176.211"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="217.76.176.245"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="80.83.242.102"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="77.223.64.152"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="92.248.215.254"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="92.248.216.2"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="92.248.216.3"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="92.248.216.4"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="92.248.216.6"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="92.248.216.9"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="92.248.216.10"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="92.248.216.11"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="92.248.216.13"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="92.248.216.14"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="178.75.16.2"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="178.75.16.4"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="178.75.16.5"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="178.75.16.6"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="178.75.16.7"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="178.75.16.8"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="178.75.16.9"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="178.75.16.10"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="178.75.16.11"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="178.75.16.12"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="!Внешние IP"/>
</item>
<item>
<ip_address name="ips_ip" value="10.3.25.7"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="Заречный 10.3.25.0"/>
</item>
<item>
<ip_address name="ips_ip" value="10.3.25.19"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="Заречный 10.3.25.0"/>
</item>
<item>
<ip_address name="ips_ip" value="10.3.25.43"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="Заречный 10.3.25.0"/>
</item>
<item>
<ip_address name="ips_ip" value="10.3.25.46"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="Заречный 10.3.25.0"/>
</item>
<item>
<ip_address name="ips_ip" value="10.3.25.48"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="Заречный 10.3.25.0"/>
</item>
<item>
<ip_address name="ips_ip" value="10.3.25.50"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="Заречный 10.3.25.0"/>
</item>
<item>
<ip_address name="ips_ip" value="10.3.25.54"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="Заречный 10.3.25.0"/>
</item>
<item>
<ip_address name="ips_ip" value="10.3.25.61"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="Заречный 10.3.25.0"/>
</item>
<item>
<ip_address name="ips_ip" value="10.3.25.62"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="Заречный 10.3.25.0"/>
</item>
<item>
<ip_address name="ips_ip" value="10.3.25.70"/>
<integer name="mask" value="32"/>
<string name="zone_name" value="Заречный 10.3.25.0"/>
</item>
</array>
<string name="error" value=""/>
</output>
</call>
</urfa>