[Twisted-Python] Performance issues of twisted.
Andy at NewWorldElectric.com
Sun Apr 13 13:13:45 EDT 2008
I'm not sure about books, but the questions seemed fun. I'm curious how my
answers measure up to the rest of the list here.
2008/4/13 Peter Cai <newptcai at gmail.com>:
> Hi all!
> I am preparing to write a server application (you may think of it as an
> online game server) with twisted, but I am worrying about it's performance
> and how to do it correctly.
> For example..
> 1. UDP or TCP，which should I choose to gain higher performance?
If you want the data to get there even if it's late use TCP, if late data is
not useful to you or needs to be handled some special way use UDP which will
simply lose packets if they happen to not go through. It is possible but
rather unlikely that you can implement a strategy for retrying failures
better than TCP unless you relax the constraint of eventually getting the
2. Should I catch data in memory instead of write it to db immediately?
I wouldn't for local mysql databases. For a more distributed setup you
might consider memcached.
3. Could I make it run on cluster if cache data in memory ―― I think it
> might be quit hard to exchange data between instances of the server if I
> cache data in memory.
that's exactly what memcached will take care of for you.
> 4. How to make hot backup?
for maximum performance use a replicated pair of database servers and take
the spare offline for backups. You could also bring the spare up only to
capture the backup, though it will slow down the primary as it plays
> 5. Garbage collection might make the server halt for a moment
I think this should be less than the latency of a publicly routed IP
network, anyone have figures for gc and twisted?
6. What is happening in a computer when an IP package received?
What do you mean? What specifically do you need to know?
7. Could I get some inspiration from how people write web server?
this one I can suggest a book for, the twisted book
http://www.oreilly.com/catalog/twistedadn/ , or if you're considering
something other than twisted any reasonably thick python book will have an
example web server.
> 8. If i use an separate physical server to deploy the database, could I
> gain some performance improvement? Or the cost of communication between the
> db and the server could hurt the total performance?
could go either way. With the effects of Python's GIL I'd expect a
multi-core server with database and game server on one box would be fine
until you hit a scaling limit and your server is eating a whole core. At
that point you need to develop a distributed application model and probably
use multiple servers. If you hit that before you're running 200 users
recheck your business model, if you hit it before 20 users recheck your
Second Life Name: Ciemaar Flintoff
I am a sig Virus. Please put me in your sig so that I can continue to
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Twisted-Python