У меня эта проблема тоже переодически возникает
У некоторых пользователей, трафик начинает падать на 0-ой класс трафика. Однажды из-за этого 20 Гб ушло мимо кассы. Теперь стараюсь каждый день контролировать, но это не дело ...
Проблему решал, путем рестарта коры.
Эта проблема решена в 005 релизе???
Правильная классификация и отсутствие тарификации !!!
Вот еще одна причина в копилку
ERROR : Apr 08 10:53:03 DBAGlukError: DBAccess::__delete_service, service_id=141, links_count 1
?Trace : Apr 08 10:53:03 trace: Obtained 5 stack frames.
?Trace : Apr 08 10:53:03 trace: /netup/utm5/bin/utm5_core(_Z15print_backtracev+0x1d) [0x83072dd]
?Trace : Apr 08 10:53:03 trace: /netup/utm5/bin/utm5_core(_ZN3UTM8DBAccess16__delete_serviceEib+0x174e) [0x81c815e]
?Trace : Apr 08 10:53:03 trace: /netup/utm5/bin/utm5_core(_ZN3UTM11BusPeriodic7processEPv+0x52e) [0x82f9e3e]
?Trace : Apr 08 10:53:03 trace: /lib/libpthread.so.0 [0xf7e0f3db]
?Trace : Apr 08 10:53:03 trace: /lib/libc.so.6(clone+0x5e) [0x4899406e]
ERROR : Apr 08 10:53:03 DBAGlukError: DBAccess::__delete_service, service_id=141, links_count 1
Закончился срок действия периодической услуги на одном тарифе и биллинг начал тарифицировать трафик всем пользователям, на всех тарифных планах лишь "частично" (т.е. тарифицирует процентов 20) ....
ERROR : Apr 08 10:53:03 DBAGlukError: DBAccess::__delete_service, service_id=141, links_count 1
?Trace : Apr 08 10:53:03 trace: Obtained 5 stack frames.
?Trace : Apr 08 10:53:03 trace: /netup/utm5/bin/utm5_core(_Z15print_backtracev+0x1d) [0x83072dd]
?Trace : Apr 08 10:53:03 trace: /netup/utm5/bin/utm5_core(_ZN3UTM8DBAccess16__delete_serviceEib+0x174e) [0x81c815e]
?Trace : Apr 08 10:53:03 trace: /netup/utm5/bin/utm5_core(_ZN3UTM11BusPeriodic7processEPv+0x52e) [0x82f9e3e]
?Trace : Apr 08 10:53:03 trace: /lib/libpthread.so.0 [0xf7e0f3db]
?Trace : Apr 08 10:53:03 trace: /lib/libc.so.6(clone+0x5e) [0x4899406e]
ERROR : Apr 08 10:53:03 DBAGlukError: DBAccess::__delete_service, service_id=141, links_count 1
Закончился срок действия периодической услуги на одном тарифе и биллинг начал тарифицировать трафик всем пользователям, на всех тарифных планах лишь "частично" (т.е. тарифицирует процентов 20) ....
-
- Сообщения: 1612
- Зарегистрирован: Пт ноя 10, 2006 15:23
Впоролся в эту ошибку. благодаря тыканью носом в топик от Aleks(спасибо! очень помог!), моральной поддержке Magnum72 в аське(тоже огромная благодарность!) выяснил, что наличествует 400+ дублей в табличке.
Дубли были полностью идентичные. То есть не было такого, чтоб id разный, количество трафика разное, он одинаковый класс и downloaded_id.
Вручную править дубли устал быстро...
для себя нарисовал вот такой вот скриптец:
Собсно, после прогона вроде все нормализовалось. Надеюсь, еще кому-нибудь поможет.
ЗЫ: алгоритм задуман как:
1. выбираем все записи с дублями.
2. Для каждой комбинации downloaded_id и tclass_id запоминаем первый id
3. удаляем все записи из таблицы, где id не равно тому, что мы запомнили и при этом downloaded_id и tclass_id совпадают с текущими.
Дубли были полностью идентичные. То есть не было такого, чтоб id разный, количество трафика разное, он одинаковый класс и downloaded_id.
Вручную править дубли устал быстро...
для себя нарисовал вот такой вот скриптец:
Код: Выделить всё
#!/usr/bin/perl -w
use DBI;
my $db='UTM5';
my $host='127.0.0.1';
my $user='root';
my $password='пароль_от_СУБД';
my $dbh=DBI->connect("DBI:mysql:$db:$host", "$user", "$password", { PrintError => 0}) || die $DBI::errstr;
my $select = "SELECT `downloaded_id`, `tclass_id`, COUNT(*) AS count FROM `downloaded` WHERE `is_deleted` = 0 GROUP BY `downloaded_id`, `tclass_id` HAVING count > 1;";
my $sth = $dbh->prepare($select);
$sth->execute();
while (my $ary=$sth->fetchrow_hashref())
{
$downloaded_id= $ary->{'downloaded_id'};
$tclass_id= $ary->{'tclass_id'};
print "cleaning ".$downloaded_id ." and ".$tclass_id ."\r\n";
$select="SELECT id from downloaded where downloaded_id=".$downloaded_id ." and tclass_id=". $tclass_id;
my $sth1=$dbh->prepare($select);
$sth1->execute();
if (my $ary1=$sth1->fetchrow_hashref())
{
my $id=$ary1->{'id'};
my $sth2=$dbh->prepare("delete from downloaded where id!=". $id ." and downloaded_id=". $downloaded_id ." and tclass_id=". $tclass_id);
$sth2->execute();
$sth2->finish;
};
$sth1->finish;
}
$sth->finish;
$dbh->disconnect;
ЗЫ: алгоритм задуман как:
1. выбираем все записи с дублями.
2. Для каждой комбинации downloaded_id и tclass_id запоминаем первый id
3. удаляем все записи из таблицы, где id не равно тому, что мы запомнили и при этом downloaded_id и tclass_id совпадают с текущими.