I did a small xmlrpc webservice that basicly expose some methods to interact
(run commands, for example) with a lists of UNIX servers.
At startup, the webservice connects via ssh to all the UNIX servers
(currently 16) and leave the connections open waiting for requests from
The app was designed mostly as a way of learninig how to use twisted ssh
modules, deferreds etc...
Some questions (I'll try to be brief):
1) At startup, the ssh connections to the UNIX servers goes as far as the
client connection step (connection.SSHConnection) and are kept open.
So, each time a client requests (via xmlrpc) a shell command to run, the
webservice opens a channel to this server (channel.SSHChannel) runs the
command, gets the output and closes the channel.
Would it be better to leave a channel open so there is no overhead of
openning a channel each time there is a command to run? What are the pros
2) Supposing that the number of servers grow, how many simultaneous ssh
connections is a reasonable amount?
Let's say a Pentium III 500MHz with 1 GB RAM and a 4 Mbits link. What is a
reasonable amont? 0-50, 50-100, 100-150?
I know it depends on the internet link and server specs but is there a math
that calculate a reasonable amount of tcp/ssh connections?
I guess that's it for now...