[Twisted-Python] newbe twisted xmpp load

Wrene Robyn wrobyn at cox.net
Fri Mar 9 05:04:27 MST 2007


Hi,
Yes I am on os X. Could you show me how to convert my code below to  
use poll? Thanks!
[mport sys
import socket
import time
import resource
from threading import Thread
from twisted.words.protocols.jabber import client, jid
from twisted.words.xish import domish
from twisted.internet import reactor

resource.setrlimit(8,[65000,65000])
class testit():

     def authd(xmlstream):
         print "authenticated"

         presence = domish.Element(('jabber:client','presence'))
         xmlstream.send(presence)
     #xmlstream.addObserver('/message',  debug)
     #xmlstream.addObserver('/presence', debug)
     #xmlstream.addObserver('/iq',       debug)

     def debug(elem):
         print elem.toXml().encode('utf-8')
         print "="*20
     for i in range(981,2000):
         print i
         myJid = jid.JID(str(i)+'@jbrsrvrnamt/twisted_words')
         factory = client.basicClientFactory(myJid, 'test')
         factory.addBootstrap('//event/stream/authd',authd)
         reactor.connectTCP('jbrsrvrname',5222,factory)

     reactor.run()

current = testit()
current.start()

On Mar 6, 2007, at 10:01 AM, Jean-Paul Calderone wrote:

> On Tue, 6 Mar 2007 9:44:49 -0500, wrobyn at cox.net wrote:
>> Hello,
>> I am attempting to write an xmpp load testing thingy in python. I  
>> am hitting big walls with regard to creating concurrent  
>> connections above 250.. I need really 1-n concurrent connections,  
>> the upper limit would be around 500,000 but I would be happy at  
>> this point breaching the 250 ceiling.
>> Would twisted be able to handle this? Can someone post a simple  
>> loop or routine to log in 1-n "people" (i am using the increment  
>> in a counter as username) into a jabber server?
>
>> From the ~250 limit, I would guess you're on OS X and running into  
>> the
> default per-process open file limit.  You can raise this using the  
> `ulimit'
> command. If you're on some other platform, then it'd be helpful if  
> you gave
> more details about the exact failure you're running into.
>
> Overall, if you use the select reactor, you're limited to  
> FD_SETSIZE, which
> varies, but is usually within an order of magnitude of 1000.  If  
> you use the
> poll reactor, then you're limited to the number of TCP connections  
> you can
> have, which is going to be at most 65000 per IP address (and  
> possibly as low
> as 32000).  You might find performance lacking with large numbers  
> of clients
> even with the poll reactor, but the epoll reactor should do  
> somewhat better.
>
> I don't know if you'll be able to do 500k with a single process,  
> but I think
> you should at least be able to get to the point where the limit you  
> hit is
> the CPU, not something related to file descriptors.
>
> Jean-Paul
>
> _______________________________________________
> Twisted-Python mailing list
> Twisted-Python at twistedmatrix.com
> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python





More information about the Twisted-Python mailing list