Hi,

Taking a closer look at the module (to be honest I do not user it, as drouting does a similar job) I see the module is loading the data into memory. It is doing this during the init stage, holding back the entire OpenSIPS startup. Module doing similar heavy db load were changed to do the load post-startup. Let patch the module to decouple the loading from the startup, so that OpenSIPS will start without delays.

Regards,

Bogdan-Andrei Iancu

OpenSIPS Founder and Developer
  http://www.opensips-solutions.com
OpenSIPS Bootcamp 2018
  http://opensips.org/training/OpenSIPS_Bootcamp_2018/

On 10/02/2018 04:04 PM, Jon Abrams wrote:
OpenSIPs is loading the global blacklist into a digit trie structure into shared memory on startup (or reload_blacklist command). That causes the startup delay.

- Jon

On Tue, Oct 2, 2018 at 7:55 AM Abdul Basit <[email protected] <mailto:[email protected]>> wrote:

    Hi Bogdan,

    I don't think so its translating to DB query on run time, instead
    its caching the blacklist.
    I am saying so because opensips response is quick, where as when I
    query manually from DB, it take some time even prefix col. is indexed.
    Moreover, while opensips restart i get following warnings in syslog:

    Oct 2 12:35:28 srouter-215 SIPSrv[20876]:
    WARNING:core:timer_ticker: timer task <nh-timer> already scheduled
    for 990 ms (now 17920 ms), it may overlap..
    Oct 2 12:35:28 srouter-215 SIPSrv[20876]:
    WARNING:core:timer_ticker: timer task <dlg-reinvite-pinger>
    already scheduled for 990 ms (now 17920 ms), it may overlap..
    Oct 2 12:35:28 srouter-215 SIPSrv[20876]:
    WARNING:core:timer_ticker: timer task <dlg-options-pinger> already
    scheduled for 990 ms (now 17920 ms), it may overlap..
    Oct 2 12:35:28 srouter-215 SIPSrv[20876]:
    WARNING:core:timer_ticker: timer task <dlg-timer> already
    scheduled for 990 ms (now 17920 ms), it may overlap..
    Oct 2 12:35:28 srouter-215 SIPSrv[20876]:
    WARNING:core:timer_ticker: timer task <tm-timer> already scheduled
    for 990 ms (now 17920 ms), it may overlap..
    Oct 2 12:35:28 srouter-215 SIPSrv[20876]:
    WARNING:core:timer_ticker: timer task <blcore-expire> already
    scheduled for 990 ms (now 17920 ms), it may overlap..
    Oct 2 12:35:28 srouter-215 SIPSrv[20876]:
    WARNING:core:utimer_ticker: utimer task <tm-utimer> already
    scheduled for 100 ms (now 18020 ms), it may overlap..
    Oct 2 12:35:28 srouter-215 SIPSrv[20876]:
    WARNING:core:utimer_ticker: utimer task <tm-utimer> already
    scheduled for 100 ms (now 18120 ms), it may overlap..
    Oct 2 12:35:28 srouter-215 SIPSrv[20876]:
    WARNING:core:utimer_ticker: utimer task <tm-utimer> already
    scheduled for 100 ms (now 18220 ms), it may overlap..
    *Oct 2 12:35:28 srouter-215 SIPSrv[20882]:
    INFO:userblacklist:reload_sources: got 1386901 entries from
    'globalblacklist' *
    Oct 2 12:35:28 srouter-215 SIPSrv[20882]:
    WARNING:core:handle_timer_job: utimer job <tm-utimer> has a
    18170000 us delay in execution
    Oct 2 12:35:28 srouter-215 SIPSrv[20882]:
    WARNING:core:handle_timer_job: timer job <nh-timer> has a 17280000
    us delay in execution
    Oct 2 12:35:28 srouter-215 SIPSrv[20882]:
    WARNING:core:handle_timer_job: timer job <dlg-reinvite-pinger> has
    a 17280000 us delay in execution

    Once globalblacklist loaded *1386901 entries* , opensips behave
    normally.
    When I will add more records to globalblacklist, opensips wouldn't
    start due to service timeout.
    One way might be to increase service timeout to allow opensips
    keep loading the entries but it may take ages.

    --
    regards,

    abdul basit

    On Tue, 2 Oct 2018 at 13:19, Bogdan-Andrei Iancu
    <[email protected] <mailto:[email protected]>> wrote:

        Hi Abdul,

        OK, but what is the blacklist related operation you do in
        startup route ?? As far as I know, the blacklist module is not
        doing any kind of caching, so any check you do against the
        blacklists will translate into a DB query, right ?

        Regards,

        Bogdan-Andrei Iancu

        OpenSIPS Founder and Developer
           http://www.opensips-solutions.com
        OpenSIPS Bootcamp 2018
           http://opensips.org/training/OpenSIPS_Bootcamp_2018/

        On 10/01/2018 06:58 PM, Abdul Basit wrote:
        Yes. That's right.
        The code I am using is as below. globalblacklist table has
        complete number as prefixwith and whitelist status.

        route {
        .....
        if ( !check_blacklist("globalblacklist") ) {
        xlog("L_NOTICE","[$fU/$tU/$ci] [$rm] Destination [$rU] is not
        Allowed. Dropping call.\n");
        sl_send_reply("403", "Forbidden");
        exit;
        }
        else {
        xlog("L_INFO", "[$fU/$tU/$ci] [$rm] INBOUND CALL for [$ru]");
        route(10);
        exit;
        }
        .....
        }


        --
        regards,

        abdul basit


        On Mon, 1 Oct 2018 at 19:07, Bogdan-Andrei Iancu
        <[email protected] <mailto:[email protected]>> wrote:

            Hi Abdul,

            IF I understand correctly, you use startup route to load
            (from DB?) some blacklists into localcache ?

            Regards,

            Bogdan-Andrei Iancu

            OpenSIPS Founder and Developer
               http://www.opensips-solutions.com
            OpenSIPS Bootcamp 2018
               http://opensips.org/training/OpenSIPS_Bootcamp_2018/

            On 09/28/2018 04:10 AM, Abdul Basit wrote:
            Hi team,

            I have a opensips 2.4 deployed having 4 children and
            with mysql configured for loading user blacklist to
            opensips local cache on opensips startup.
            Opensips work fine on filtering the call based on user
            blacklist records loaded into local cache.

            While blacklist was growing upto 1.3m records, opensips
            startup was taking ~60 sec on VM of 16GB RAM and 6 CPU.
            I increased shared memory to *6144* and package memory
            to *256.*
            Filter works fine here yet. Call load is not that much
            only blacklist entries are growing.

            But now blacklist has grown to very huge number, up to
            10m records in mysql. Opensips is not starting
            successfully and service startup requests timeout after
            huge CPU spikes while trying to populate local cache
            from mysql.
            I increased shared memory to *12288* and package memory
            to *1024* but no success yet.

            I indexed mysql blacklist table but no luck.

            Please advise what settings I should add to opensips for
            successful startup.

            --
            regards,

            abdul basit


            _______________________________________________
            Users mailing list
            [email protected] <mailto:[email protected]>
            http://lists.opensips.org/cgi-bin/mailman/listinfo/users


    _______________________________________________
    Users mailing list
    [email protected] <mailto:[email protected]>
    http://lists.opensips.org/cgi-bin/mailman/listinfo/users


_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

Reply via email to