[JDEV] Performance

David Waite mass at ufl.edu
Tue Apr 25 15:46:18 CDT 2000

RE: [JDEV] PerformanceThe number of open sockets is indeed a big issue. The
main memory 'eater' with multiple TCP/IP sockets is the kernel-level memory.
At last I heard (which is another way of saying 'don't hold me to these
numbers'), one active client connection took about 50k.

With Linux, you have to do some kernel reconfiguration to get above 1024
file descriptors per process(temas today explained how to do it without
recompiling the kernel, I need to explore this area of l-k more). a TCP
connection is of course represented by a file descriptor.

Note that much of the memory above is stack for each session. Even if you
somehow eliminated the stack and the heap for each open connection, you'd
find that the kernel memory for each client was about 16k (which is
unswapable). You could possibly get this down to 8k (two 4k pages), but one
4k page does not have enough space to handle an active TCP connection.

At least (from the numbers I've seen) the server is not CPU-limited.

So unless you rewrote the Jabber server to not require separate stack
spaces, and rewrote some operating system kernel to somehow 'share' a large
datablock between many 'idle' TCP sockets, I don't know of any way you could
acheive an extremely large number of users on one server. I do not know of
any operating system that can handle an extremely large number of TCP
connections- 10k is ususlly the first real limit a machine hits.

It would seem the only other feasible you can manage this is to rewrite the
Jabber server to allow clusters of machines. You could also attempt to
modify the Jabber protocol to use UDP, but then you would have something new
that wasn't Jabber anyways.

-David Waite
  -----Original Message-----
  From: jdev-admin at jabber.org [mailto:jdev-admin at jabber.org]On Behalf Of
Michael Petras
  Sent: Tuesday, April 25, 2000 10:20 AM
  To: 'jdev at jabber.org'
  Cc: Douglas Petty
  Subject: RE: [JDEV] Performance

  One aspect of performance I was wondering how Jabber addresses is the
number of open sockets. Does the
  Jabber server keep a TCP socket open for each logged in client? What
determines how many sockets can be open
  simulatenously using Linux? Does Jabber or Linux do any tricks to increase
the number of open sockets (such as
  transforming open, but quiet sockets into some placeholder objects that
use minimal memory until the next message)?
  Does anyone know of any implementations that do this? Does anyone know how
big IM/presence servers like Yahoo, ICQ
  or AOL handles this?

  Our applications have to communicate with tens to hundreds of thousands of
fairly low traffic clients. Our servers run on

  Windows NT where the limit on open sockets is a significant issue. Thanks
in advance for any info.


Mike Petras

    -----Original Message-----
    From:   David Waite [SMTP:mass at ufl.edu]
    Sent:   Tuesday, April 25, 2000 8:26 AM
    To:     jdev
    Subject:        RE: [JDEV] Performance

    It sounds more like the test was throttled due to you sending too many
    messages at once, rather than any sort of scalability or other type of
    limitation in the Jabber server.

    -David Waite

    -----Original Message-----
    Hi ,
            The real issue which I want to highlight is not spammers but the
    Scalability of Jabber . The tests which I performed on Jabber clearly
    that it slows down which is definitely not acceptable in real-life
    situations . Jabber has to be more scalable than it is now . Any
    and Ideas ?
    Regards ,
    chetan s . ithal

    jdev mailing list
    jdev at jabber.org

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.jabber.org/pipermail/jdev/attachments/20000425/bd718024/attachment-0002.htm>

More information about the JDev mailing list