<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Hello,</p>
    <p>do you need to fetch for all users at the same time? If not, you
      can fetch for one user at a time, like it is done by:</p>
    <p>kamctl ul show user@domain</p>
    <p>Regarding storing to database, of course it is open source and
      pretty much anything can be implemented, however if you talk about
      millions of active users, probably the database system will become
      overloaded by doing updates to all records during the rather-short
      keepalive interval: say you have 10mil active users and keepalive
      every 20-30secs (for keeping nat pinhole open), then there are
      quire some updates performed to db.</p>
    <p>If someone wants to add db persistency for keepalive attributes,
      it is fine for me, just make it based on a modparam.</p>
    <p>Cheers,<br>
      Daniel<br>
    </p>
    <p><br>
    </p>
    <div class="moz-cite-prefix">On 08.10.20 13:10, Ilie Soltanici
      wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CAJQ6-U2cM4YiWE_6x25qoDFE6QCGxDSpb6ijV+yA64NEK3F_jA@mail.gmail.com">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <div dir="ltr">
        <div dir="ltr">
          <div>Hello,</div>
          <div><br>
          </div>
          <div>OK, so the reason to dump all contacts periodically from
            the Kamailio memory is that I have a task to monitor the
            network latency for every extension, which in this case we
            can do with the KA function from the usrloc module. <br>
          </div>
          <div>This information it's not in the DB, we can get this
            information either from the kamailio memory, or by parsing
            the log file. I was thinking that the first option can be
            better because for the second one Kamailio will have to do a
            lot of IO operation to the disk, which can affect somehow
            the performance, even if the local storage it's based on
            SSD's.</div>
          <div>I was trying to use dgram for this case - but I'm not
            getting any output from the kamailio by sending any request.</div>
          <div><br>
          </div>
          <div>For ex the following command:<br>
          </div>
          <div><br>
          </div>
          <blockquote class="gmail_quote" style="margin:0px 0px 0px
            0.8ex;border-left:1px solid
            rgb(204,204,204);padding-left:1ex">
            <div>echo '{"id": "1", "jsonrpc": "2.0", "method":
              "core.psx" }' > /dev/udp/<a
                href="http://127.0.0.1/8090" moz-do-not-send="true">127.0.0.1/8090</a></div>
          </blockquote>
          <div><br>
          </div>
          <div>gave the following output to the log file:<br>
          </div>
          <div><br>
          </div>
          <blockquote class="gmail_quote" style="margin:0px 0px 0px
            0.8ex;border-left:1px solid
            rgb(204,204,204);padding-left:1ex">
            <div>Oct  8 11:20:47 devsrv devsrv[11468]: DEBUG: jsonrpcs
              [jsonrpcs_sock.c:608]: jsonrpc_dgram_server(): received
              {"jsonrpc": "2.0", "method": "<a href="http://core.ps"
                moz-do-not-send="true">core.ps</a>", "id": 1}<br>
              Oct  8 11:20:47 devsrv devsrv[11468]: DEBUG: jsonrpcs
              [jsonrpcs_sock.c:620]: jsonrpc_dgram_server(): buf is
              {"jsonrpc": "2.0", "method": "<a href="http://core.ps"
                moz-do-not-send="true">core.ps</a>", "id": 1}#012 and we
              have received 48 bytes<br>
              Oct  8 11:20:47 devsrv devsrv[11468]: DEBUG: jsonrpcs
              [jsonrpcs_sock.c:629]: jsonrpc_dgram_server(): command
              executed - result: [200] [0x18b5430]
              [{#012#011"jsonrpc":#011"2.0",#012#011"result":#011[11432,
              "main process - attendant", 11434, "udp receiver child=0
              sock=<a href="http://127.0.0.1:5060"
                moz-do-not-send="true">127.0.0.1:5060</a>", 11435, "udp
              receiver child=1 sock=<a href="http://127.0.0.1:5060"
                moz-do-not-send="true">127.0.0.1:5060</a>", 11436, "udp
              receiver child=0 sock=<a href="http://172.16.50.231:5060"
                moz-do-not-send="true">172.16.50.231:5060</a>", 11437,
              "udp receiver child=1 sock=<a
                href="http://172.16.50.231:5060" moz-do-not-send="true">172.16.50.231:5060</a>",
              11438, "udp receiver child=2 sock=<a
                href="http://172.16.50.231:5060" moz-do-not-send="true">172.16.50.231:5060</a>",
              11439, "udp receiver child=3 sock=<a
                href="http://172.16.50.231:5060" moz-do-not-send="true">172.16.50.231:5060</a>",
              11440, "udp receiver child=4 sock=<a
                href="http://172.16.50.231:5060" moz-do-not-send="true">172.16.50.231:5060</a>",
              11441, "udp receiver child=5 sock=<a
                href="http://172.16.50.231:5060" moz-do-not-send="true">172.16.50.231:5060</a>",
              11442, "udp receiver child=6 sock=<a
                href="http://172.16.50.231:5060" moz-do-not-send="true">172.16.50.231:5060</a>",
              11443, "udp receiver child=7 sock=<a
                href="http://172.16.50.231:5060" moz-do-not-send="true">172.16.50.231:5060</a>",
              11444, "udp receiver child=0 sock=<a
                href="http://192.168.0.10:5060" moz-do-not-send="true">192.168.0.10:5060</a>",
              11445, "udp receiver child=1sock=<a
                href="http://192.168.0.10:5060" moz-do-not-send="true">192.168.0.10:5060</a>",
              11446, "udp receiver child=2 sock=<a
                href="http://192.168.0.10:5060" moz-do-not-send="true">192.168.0.10:5060</a>",
              11447, "udp receiver child=3 sock=<a
                href="http://192.168.0.10:5060" moz-do-not-send="true">192.168.0.10:5060</a>",
              11448, "udp receiver child=4 sock=<a
                href="http://192.168.0.10:5060" moz-do-not-send="true">192.168.0.10:5060</a>",
              11449, "udp receiver child=5 sock=<a
                href="http://192.168.0.10:5060" moz-do-not-send="true">192.168.0.10:5060</a>",
              11450, "udp receiver child=6 sock=<a
                href="http://192.168.0.10:5060" moz-do-not-send="true">192.168.0.10:5060</a>",
              11451, "udp receiver child=7 sock=<a
                href="http://192.168.0.10:5060" moz-do-not-send="true">192.168.0.10:5060</a>",
              11452, "udp receiver child=0 sock=<a
                href="http://192.168.0.10:5090" moz-do-not-send="true">192.168.0.10:5090</a>",
              11453, "udp receiver child=1 sock=<a
                href="http://192.168.0.10:5090" moz-do-not-send="true">192.168.0.10:5090</a>",
              11454, "udp receiver child=2 sock=<a
                href="http://192.168.0.10:5090" moz-do-not-send="true">192.168.0.10:5090</a>",
              11455, "udp receiver child=3 sock=<a
                href="http://192.168.0.10:5090" moz-do-not-send="true">192.168.0.10:5090</a>",
              11456, "udp receiver child=4 sock=<a
                href="http://192.168.0.10:5090" moz-do-not-send="true">192.168.0.10:5090</a>",
              11457, "udp receiver child=5 sock=<a
                href="http://192.168.0.10:5090" moz-do-not-send="true">192.168.0.10:5090</a>",
              11458, "udp receiver child=6 sock=<a
                href="http://192.168.0.10:5090" moz-do-not-send="true">192.168.0.10:5090</a>",
              11459, "udp receiver child=7 sock=<a
                href="http://192.168.0.10:5090" moz-do-not-send="true">192.168.0.10:5090</a>",
              11460, "slow timer", 11461, "timer", 11462, "secondary
              timer", 11463, "Async Task Worker", 11464, "Async Task
              Worker", 11465, "Async Task Worker", 11466, "Async Task
              Worker", 11467, "JSONRPCS FIFO", 11468, "JSONRPCS
              DATAGRAM", 11469, "USRLOC Timer", 11470, "USRLOC Timer",
              11471, "USRLOC Timer", 11472, "USRLOC Timer", 11473,
              "Dialog Clean Timer", 11474, "ctl handler", 11475, "TIMER
              UAC REG", 11476, "SNMP AgentX", 11478, "Http Async
              Worker", 11479, "tcp receiver (generic) child=0", 11480,
              "tcp receiver (generic) child=1", 11481, "tcp receiver
              (generic) child=2", 11482, "tcp receiver (generic)
              child=3", 11483, "tcp receiver (generic) child=4", 11484,
              "tcp receiver (generic) child=5", 11485, "tcp receiver
              (generic) child=6", 11486, "tcp receiver (generic)
              child=7", 11487, "tcp main
              process"],#012#011"id":#0111#012}]</div>
          </blockquote>
          <div><br>
          </div>
          <div>I expected to receive this output back to the udp client
            in this case. <br>
          </div>
          <div><br>
          </div>
          <div>Also, the following request it's not getting anything
            even in the log file:<br>
          </div>
          <div><br>
          </div>
          <div>
            <blockquote class="gmail_quote" style="margin:0px 0px 0px
              0.8ex;border-left:1px solid
              rgb(204,204,204);padding-left:1ex">
              <div>echo '{"id": "1", "jsonrpc": "2.0", "method":
                "ul.dump" }' > /dev/udp/<a
                  href="http://127.0.0.1/8090" moz-do-not-send="true">127.0.0.1/8090</a></div>
            </blockquote>
          </div>
        </div>
        <div><br>
        </div>
        <div>If there is a way to have all this data directly in the
          database - that would be perfect (I already created a feature
          request for that, maybe in the next versions that will be
          implemented).<br>
        </div>
        <div><br>
        </div>
        <div class="gmail_quote">
          <div class="gmail_attr">Regards,<br>
          </div>
          <div dir="ltr" class="gmail_attr"><br>
          </div>
          <div dir="ltr" class="gmail_attr">On Wed, 7 Oct 2020 at 21:27,
            Henning Westerholt <<a href="mailto:hw@skalatan.de"
              moz-do-not-send="true">hw@skalatan.de</a>> wrote:<br>
          </div>
          <blockquote class="gmail_quote" style="margin:0px 0px 0px
            0.8ex;border-left:1px solid
            rgb(204,204,204);padding-left:1ex">
            <div lang="DE">
              <div class="gmail-m_-8129590545166823329WordSection1">
                <p class="MsoNormal"><span>Hello,</span></p>
                <p class="MsoNormal"><span lang="EN-GB"> </span></p>
                <p class="MsoNormal"><span lang="EN-GB">Your requirement
                    to frequently dump millions of user location entries
                    on a loaded production system sounds a bit odd to
                    me. Maybe you can elaborate a bit on your
                    requirements. If you have the requirement to access
                    this data frequently, maybe getting it from the
                    database directly is the better idea. If you want to
                    get it from kamailio, choose a module that provides
                    the option to configure the number of children (e.g.
                    like dgram_workers in jsonrpcs) and set it to a
                    sufficient number.</span></p>
                <p class="MsoNormal"><span lang="EN-GB"> </span></p>
                <p class="MsoNormal"><span lang="EN-GB">Cheers,</span></p>
                <p class="MsoNormal"><span lang="EN-GB"> </span></p>
                <p class="MsoNormal"><span lang="EN-GB">Henning</span></p>
                <p class="MsoNormal"><span lang="EN-GB"> </span></p>
                <p class="MsoNormal"><span lang="EN-GB">-- </span></p>
                <p class="MsoNormal"><span lang="EN-GB">Henning
                    Westerholt –
                  </span><span><a href="https://skalatan.de/blog/"
                      target="_blank" moz-do-not-send="true"><span
                        style="color:rgb(5,99,193)" lang="EN-GB">https://skalatan.de/blog/</span></a></span><span
                    lang="EN-GB"></span></p>
                <p class="MsoNormal"><span lang="EN-GB">Kamailio
                    services –
                  </span><span><a href="https://gilawa.com/"
                      target="_blank" moz-do-not-send="true"><span
                        style="color:rgb(5,99,193)" lang="EN-GB">https://gilawa.com</span></a></span><span>
                    <span lang="EN-GB"></span></span></p>
                <p class="MsoNormal"><span lang="EN-GB"> </span></p>
                <div style="border-color:rgb(225,225,225) currentcolor
                  currentcolor;border-style:solid none
                  none;border-width:1pt medium medium;padding:3pt 0cm
                  0cm">
                  <p class="MsoNormal" style="margin-left:35.4pt"><b>From:</b>
                    sr-users <<a
                      href="mailto:sr-users-bounces@lists.kamailio.org"
                      target="_blank" moz-do-not-send="true">sr-users-bounces@lists.kamailio.org</a>>
                    <b>On Behalf Of </b>Ilie Soltanici<br>
                    <b>Sent:</b> Tuesday, October 6, 2020 12:29 AM<br>
                    <b>To:</b> Kamailio (SER) - Users Mailing List <<a
                      href="mailto:sr-users@lists.kamailio.org"
                      target="_blank" moz-do-not-send="true">sr-users@lists.kamailio.org</a>><br>
                    <b>Subject:</b> [SR-Users] jsonrpcs - safest way to
                    get data</p>
                </div>
                <p class="MsoNormal" style="margin-left:35.4pt"> </p>
                <div>
                  <div>
                    <p class="MsoNormal" style="margin-left:35.4pt">Hello,</p>
                  </div>
                  <div>
                    <p class="MsoNormal" style="margin-left:35.4pt"> </p>
                  </div>
                  <div>
                    <p class="MsoNormal" style="margin-left:35.4pt">I'm
                      trying to periodically get all registered contacts
                      from the Kamailio memory in the json format.</p>
                  </div>
                  <div>
                    <p class="MsoNormal" style="margin-left:35.4pt">JSONRPCS
                      module have 3 different types of transport to get
                      this data. I just wonder what will be the safest
                      transport for the Kamailio to get all this data?
                      Because all this data it's not so important, I
                      want to gather it without affecting the main
                      process or with the minimal effect on the Kamailio
                      SIP Processing module.</p>
                  </div>
                  <div>
                    <p class="MsoNormal" style="margin-left:35.4pt"> </p>
                  </div>
                  <div>
                    <p class="MsoNormal" style="margin-left:35.4pt">1.
                      The HTTP transport - very useful, working async,
                      but because it depends on the xhttp module - which
                      works synchronously I'm afraid that for big data
                      with contacts this type of transport can affect
                      the kamailio performance.</p>
                  </div>
                  <div>
                    <p class="MsoNormal" style="margin-left:35.4pt"> </p>
                  </div>
                  <div>
                    <p class="MsoNormal" style="margin-left:35.4pt">2.
                      FIFO - this transport also is very fast, working
                      locally - but it's synchronous, I'm not sure how
                      it will affect Kamailio SIP Processing when the
                      local database will have few millions of users
                      registered.</p>
                  </div>
                  <div>
                    <p class="MsoNormal" style="margin-left:35.4pt"> </p>
                  </div>
                  <div>
                    <p class="MsoNormal" style="margin-left:35.4pt">3.
                      DGRAM - also seems to be very fast, working
                      locally or remotely through the UDP protocol, but
                      again it's synchronous and I'm not sure that this
                      transport is returning any output for the request,
                      I tried - but didn't get back anything, while for
                      changing something it worked fine. Maybe it was a
                      misconfiguration in my config file.</p>
                  </div>
                  <div>
                    <p class="MsoNormal" style="margin-left:35.4pt"> </p>
                  </div>
                  <div>
                    <p class="MsoNormal" style="margin-left:35.4pt">What
                      would be your recommendation for this case?</p>
                  </div>
                  <div>
                    <p class="MsoNormal" style="margin-left:35.4pt"> </p>
                  </div>
                  <div>
                    <p class="MsoNormal" style="margin-left:35.4pt">Thank
                      you.</p>
                  </div>
                </div>
              </div>
            </div>
          </blockquote>
        </div>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
Kamailio (SER) - Users Mailing List
<a class="moz-txt-link-abbreviated" href="mailto:sr-users@lists.kamailio.org">sr-users@lists.kamailio.org</a>
<a class="moz-txt-link-freetext" href="https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users">https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users</a>
</pre>
    </blockquote>
    <pre class="moz-signature" cols="72">-- 
Daniel-Constantin Mierla -- <a class="moz-txt-link-abbreviated" href="http://www.asipto.com">www.asipto.com</a>
<a class="moz-txt-link-abbreviated" href="http://www.twitter.com/miconda">www.twitter.com/miconda</a> -- <a class="moz-txt-link-abbreviated" href="http://www.linkedin.com/in/miconda">www.linkedin.com/in/miconda</a>
Funding: <a class="moz-txt-link-freetext" href="https://www.paypal.me/dcmierla">https://www.paypal.me/dcmierla</a></pre>
  </body>
</html>