Перейти до

Vsevolod

Маглы
  • Всього повідомлень

    26
  • Приєднався

  • Останній візит

Сообщения додав Vsevolod

  1. 11 минут назад, nightfly сказал:

     

     

     

    Бред сивой кобылы.

    Там один и тот же addDeviceByCode() используется во всех местах.

    вот именно так и есть, из лич каба никакие манипуляции с устройствами - удаление, добавление(код или мак) не отрабатывают и в лог файле следа нет.

     

  2. 16 минут назад, nightfly сказал:

    А я вот вижу... ЧЯДНТ?

     

    В FAQ четко сказано, что мы думаем о умении искать файлики.

    ага, он появился только после того как в самом убиллинге открепил/добавил устройство. 

    А если через личный кабинет никаких логов нет.

     

  3. 19 минут назад, nightfly сказал:

    Ну можете разве что включить себе TRINITYTV_DEBUG=1  в alter.ini и детально посмотреть чего у вас там происходит exports/trinitytv.log в моменты общения с их API.

    что-то нигде файла не вижу этого

     

    # grep TRINITYTV_DEBUG config/alter.ini
    TRINITYTV_DEBUG=1

     

    # find /usr/local/www/apache24/data/billing -name "*trinitytv*"
    /usr/local/www/apache24/data/billing/api/libs/api.trinitytv.php
    /usr/local/www/apache24/data/billing/config/taskbar.d/iusers/ztrinitytv.ini
    /usr/local/www/apache24/data/billing/modules/general/pl_trinitytv
    /usr/local/www/apache24/data/billing/modules/general/trinitytv
    /usr/local/www/apache24/data/billing/modules/remoteapi/trinitytvcontrol.php
    /usr/local/www/apache24/data/billing/skins/menuicons/trinitytv.png
    /usr/local/www/apache24/data/billing/skins/pl_trinitytv.png
    /usr/local/www/apache24/data/billing/skins/taskbar/trinitytv.png
    /usr/local/www/apache24/data/billing/userstats/config/modules.d/trinitytv
    /usr/local/www/apache24/data/billing/userstats/modules/engine/api.trinitytv.php
    /usr/local/www/apache24/data/billing/userstats/modules/general/trinitytv
    /usr/local/www/apache24/data/billing/userstats/skins/default/iconz/trinitytv.gif
    /usr/local/www/apache24/data/billing/userstats/skins/old/iconz/trinitytv.gif
    /usr/local/www/apache24/data/billing/userstats/skins/paper/iconz/trinitytv.gif
    /usr/local/www/apache24/data/billing/userstats/skins/red/iconz/trinitytv.gif

     

  4. 8 минут назад, nightfly сказал:

    да нормально вроде удаляется/добавляется...

     

    spacer.png

    /ib/asp24_2020.09.16_2.gif

    подскажите, пожалуйста, куда копать.

    3 минуты назад, nightfly сказал:

    Ну можете разве что включить себе TRINITYTV_DEBUG=1  в alter.ini и детально посмотреть чего у вас там происходит exports/trinitytv.log в моменты общения с их API.

    во, спасибо

  5. Всем привет!

    После обновления на  1.2.0 rev 8127 столкнулись с проблемой, что из личного кабинета не удаляет устройства тринити, а также нельзя добавить устройство по коду.

    425976433_2021-10-0512_34_04.thumb.png.dd0073a2aae74d8f9774463f33a896ac.png

    Через сам убиллинг добавляется устройство и удаляется, но при удалении появляется ворнинг, хотя устройство исчезает:

    1686840341_2021-10-0512_43_39.thumb.png.759678e0666278a26f3737b0d618d03f.png

     

    Кто-нибудь еще сталкивался с этим? Подскажите, пожалуйста, что может быть и как решить?

  6. Только что, nightfly сказал:

    У меня что-то начинает закрадываться подозрение, что это все вы еще и ручками ставили а не из бинарных пакетов UBinstaller-ом.

    Так как memcached и всю нужную инфраструктуру я паковал еще чуть не с времен FreeBSD 8.2 или типа того довольно таки надежно.

    сам memcached есть, нет php модуля

    а сам убиллинг достался по наследству

  7. 2 минуты назад, nightfly сказал:

    ээээ, очень странно.

     

    Ну пробуйте что-то типа

     

    
    memcached_enable="YES"
    memcached_flags="-l 127.0.0.1 -m 512 -I 24M"

    в rc.conf

     

    service memcached start

     

    и UBCACHE_STORAGE=memcached

     

    шо я могу сказать...

     

    с этим у меня небольшая проблемка... может Вы подскажете:

    у меня стоит 10.3-RELEASE-p24

    из портов pecl-memcasced  не ставится так как EOL:

    Ports Collection support for your FreeBSD version has ended, and no ports are
    guaranteed to build on this system. Please upgrade to a supported release.

     

    откуда поставить так и не нашел....

  8. 4 минуты назад, nightfly сказал:

    spacer.png

     

    и как ни сложно заметить, результаты с теми же включенными кладбищами и сигналами в профиле.. ну мягко говоря чуть другие. 0.14с это ниразу не что-то >10с на ровном месте.

    Походу у вас либо это все запущено с FDD 3.5", либо с диском происходит что-то очень страшное, либо ФС сломана... либо кэш наглухо коллапсировал.

     

    Покажите еще скриншотик "состояние системы" => "кэш" => "данные кэша".

    cache.thumb.png.892ecd3ef0c025136ef73c85adca212e.png

  9. В 13.05.2021 в 13:43, nightfly сказал:

    а... эти..

     

    Тоже пи...ец... если честно.

    Сколько должно быть время генерации, на более чем среднем железе я показал на скринах выше. Итого разница в 10-20 раз. У вас явно что-то не так. Причем глобально.

     

    см. выше.

     

    Итого: включаем себе спокойно xhprof и показываем сюда чего он говорит при открытии профиля. Я пока не вижу другого способа, определить причину такой сильной деградации производительности у вас.

     

    Коллграф здорового биллинга выглядит как-то так

    spacer.png

    Очень интересно увидеть, коллграф курильщика :)

    Добрый день!

    Вам наметанным глазом виден корень зла в коллграфе курильщика?

  10. 2 часа назад, nightfly сказал:

    А вообще не важно, так как у нас нету UBCACHE_STORAGE=peftokarta а именно на что-то такое и намекают их тайминги.

     

    тоже вообще монопенисуально, так как скорее всего он не запускал это на дедушкином арифмометре, а на raspberry pi цифры на порядок должны быть ниже.

     

     

    может быть есть мысли куда копать? 

  11. В 13.05.2021 в 13:43, nightfly сказал:

    а... эти..

     

    Тоже пи...ец... если честно.

    Сколько должно быть время генерации, на более чем среднем железе я показал на скринах выше. Итого разница в 10-20 раз. У вас явно что-то не так. Причем глобально.

     

    см. выше.

     

    Итого: включаем себе спокойно xhprof и показываем сюда чего он говорит при открытии профиля. Я пока не вижу другого способа, определить причину такой сильной деградации производительности у вас.

     

    Коллграф здорового биллинга выглядит как-то так

    spacer.png

    Очень интересно увидеть, коллграф курильщика :)

     

    Обычный пользователь без сигнала ону в профиле

     

    callgraph-1.thumb.png.2a8c1020e85b12766ab7cae3298e85eb.png

     

    Вот абонент с сигналом ону:

     

    callgraph-2.thumb.png.777c6da37f729eac64084cb3033b0dbc.png

     

    А вот редактирование ону:

     

    callgraph-3.thumb.png.43240335bca4b2292283aaa32741c2e5.png

  12. 3 часа назад, Vsevolod сказал:

    Подскажите , пожалуйста, после обновления микротика до 6.45.6 перестал автаризовываться старгейзер, в самом убиллинге все отлично - в разделе  Сервера доступа (NAS) показываются расширенные настройки микротика и подтягиваются все данные.

    А вот сам старгейзер:

    2019-10-19 13:33:28 - [Ubilling] - OnConnect started for user `1558511444`:
    2019-10-19 13:33:32 - [Executer] - Error: Cannot establish connection with MikroTik!
    2019-10-19 13:33:32 - [Ubilling] - QC: 2, elapsed time: 3.281 sec.
     

    в скрипте /api/libs/api.routeros.php вижу новый метод обращения по API:

     

    
     if ($UseNewConnMode) {
                        $this->write('/login', false);
                        $this->write('=name=' . $username, false);
                        $this->write('=password=' . $password);
    
                        $response = $this->read(false);
                        if ($response[0] == '!done') {
                            $this->connected = true;
                            break;
                        }
                    } else {
                        $this->write('/login');
                        $response = $this->read(false);
                        if (isset($response[0]) && $response[0] == '!done') {
                            if (preg_match_all('/[^=]+/i', $response[1], $matches)) {
                                if ($matches[0][0] == 'ret' && strlen($matches[0][1]) == 32) {
                                    $this->write('/login', false);
                                    $this->write('=name=' . $username, false);
                                    $this->write('=response=00' . md5(chr(0) . $password . pack('H*', $matches[0][1])));
                                    $response = $this->read(false);
                                    if ($response[0] == '!done') {
                                        $this->connected = true;
                                        break;
                                    }
                                }
                            }
                        }
                    }

    в скрипте самого executer-а старый метод:

     

    
            private function connect() {
                for ($ATTEMPT = 1; $ATTEMPT <= $this->config['attempts']; $ATTEMPT++) {
                    $this->connected = FALSE;
                    $this->log->message(__CLASS__, 'Connection attempt #' . $ATTEMPT . ' to ' . $this->parameters['ip'] . ':' . $this->config['api_port'] . '...', "api");
                    if ( $this->socket = @fsockopen($this->parameters['ip'], $this->config['api_port'], $this->error_no, $this->error_str, $this->config['timeout']) ) {
                        socket_set_timeout($this->socket, $this->config['timeout']);
                        $this->write('/login');
                        $RESPONSE = $this->read(FALSE);
                        if ( $RESPONSE[0] == '!done' ) {
                            if ( preg_match_all('/[^=]+/i', $RESPONSE[1], $MATCHES) ) {
                                if ( $MATCHES[0][0] == 'ret' && strlen($MATCHES[0][1]) == 32 ) {
                                    $this->write('/login', FALSE);
                                    $this->write('=name=' . $this->options['username'], FALSE);
                                    $this->write('=response=00' . md5(chr(0) . $this->options['password'] . pack('H*', $MATCHES[0][1])));
                                    $RESPONSE = $this->read(FALSE);
                                    if ( $RESPONSE[0] == '!done' ) {
                                        $this->connected = TRUE;
                                        break;
                                    }
                               }
                            }
                        }

    Переделываю точб-в точь как в /api/libs/api.routeros.php и глухо.

     

    Подскажите что сделать нужно еще или может кто-то использует уже старгейзер с новым методом API для микротика - покажите вашу функцию connect в старгейзере.

     

    Разобрался, перенес скипты и папки docs в старгейзер. Просто реально этого нигде в документации не нашел.

  13. Подскажите , пожалуйста, после обновления микротика до 6.45.6 перестал автаризовываться старгейзер, в самом убиллинге все отлично - в разделе  Сервера доступа (NAS) показываются расширенные настройки микротика и подтягиваются все данные.

    А вот сам старгейзер:

    2019-10-19 13:33:28 - [Ubilling] - OnConnect started for user `1558511444`:
    2019-10-19 13:33:32 - [Executer] - Error: Cannot establish connection with MikroTik!
    2019-10-19 13:33:32 - [Ubilling] - QC: 2, elapsed time: 3.281 sec.
     

    в скрипте /api/libs/api.routeros.php вижу новый метод обращения по API:

     

     if ($UseNewConnMode) {
                        $this->write('/login', false);
                        $this->write('=name=' . $username, false);
                        $this->write('=password=' . $password);
    
                        $response = $this->read(false);
                        if ($response[0] == '!done') {
                            $this->connected = true;
                            break;
                        }
                    } else {
                        $this->write('/login');
                        $response = $this->read(false);
                        if (isset($response[0]) && $response[0] == '!done') {
                            if (preg_match_all('/[^=]+/i', $response[1], $matches)) {
                                if ($matches[0][0] == 'ret' && strlen($matches[0][1]) == 32) {
                                    $this->write('/login', false);
                                    $this->write('=name=' . $username, false);
                                    $this->write('=response=00' . md5(chr(0) . $password . pack('H*', $matches[0][1])));
                                    $response = $this->read(false);
                                    if ($response[0] == '!done') {
                                        $this->connected = true;
                                        break;
                                    }
                                }
                            }
                        }
                    }

    в скрипте самого executer-а старый метод:

     

            private function connect() {
                for ($ATTEMPT = 1; $ATTEMPT <= $this->config['attempts']; $ATTEMPT++) {
                    $this->connected = FALSE;
                    $this->log->message(__CLASS__, 'Connection attempt #' . $ATTEMPT . ' to ' . $this->parameters['ip'] . ':' . $this->config['api_port'] . '...', "api");
                    if ( $this->socket = @fsockopen($this->parameters['ip'], $this->config['api_port'], $this->error_no, $this->error_str, $this->config['timeout']) ) {
                        socket_set_timeout($this->socket, $this->config['timeout']);
                        $this->write('/login');
                        $RESPONSE = $this->read(FALSE);
                        if ( $RESPONSE[0] == '!done' ) {
                            if ( preg_match_all('/[^=]+/i', $RESPONSE[1], $MATCHES) ) {
                                if ( $MATCHES[0][0] == 'ret' && strlen($MATCHES[0][1]) == 32 ) {
                                    $this->write('/login', FALSE);
                                    $this->write('=name=' . $this->options['username'], FALSE);
                                    $this->write('=response=00' . md5(chr(0) . $this->options['password'] . pack('H*', $MATCHES[0][1])));
                                    $RESPONSE = $this->read(FALSE);
                                    if ( $RESPONSE[0] == '!done' ) {
                                        $this->connected = TRUE;
                                        break;
                                    }
                               }
                            }
                        }

    Переделываю точб-в точь как в /api/libs/api.routeros.php и глухо.

     

    Подскажите что сделать нужно еще или может кто-то использует уже старгейзер с новым методом API для микротика - покажите вашу функцию connect в старгейзере.

  14.  

     

    а что вы анонсите по бгп в сторону isp2?

    ничего не анонсим, у нас нет своих сетей, каждый провайдер выделил по сеточке своей, в них и натим...
    А как оно должно работать? Если вы по бгп ничего не шлете, то и ездить к вам ничего не будет, это же элементарно.

     

    Простите, мы им анонсим их же сеть, которую они нам выделили, но если бы и не анонсили они статик роут этой сеточки просто прописали в нашу сторону и всё...

×
×
  • Створити нове...