We do not know the answer to this question. What we DO know is the first limit which you are likely to encounter. We also have some feelings about the reasonable maximum.
Adding 2, 3, or 4 additional domains to a TSX system rarely causes problems. However, as ISPs discover the financial windfalls of selling "virtual domains" (which I place in quotes because there is nothing more virtual about these domains than any others, except that their TCP/IP interface is a virtual terminal), they may run the network server out of channels.
Look in SY:SERVICES.NET, if you will. This defines the services which your system is to provide. It provides these services by having daemon programs listen for connections. A TCP/IP connection is made to a specific IP address and port number. Example: to telnet to SANDH.COM, your telnet client makes a connection to IP address 204.181.142.11, port number 23.
Most, but not all, of these services are provided by the network server program, NETSERVE.EXP. Which ones? Look in SY:INETD.NET, if you will. This includes specifications for the program to invoke when the network server receives Telnet connections, FTP connections, POP connections, and so forth.
When you have a single interface defined in your system (probably either an ethernet card or a PTY line to your provider), the network server accepts connections for that one interface, on behalf of each service defined in SY:INETD.NET. Each time it does this, it must allocate a channel (socket) to accept the connections on. Let's assume there are 7 services defined. For your single interface, that's 7 channels.
Hosting multiple domains is accomplished by creating virtual terminals, which are then set as serial network lines. This causes the network server to begin listening for connections on these additional interfaces. Following our example, defining 5 virtual domains eats up 35 more channels, 7 for each of the 5 interfaces.
This is all fine untill you sell more and more interfaces, let's say 10. Now you have used up 77 channels, which is getting pretty close to the 100 channel limit TSX imposes on each job. What to look for: when the system first boots, look in the NETSERVE event log. It will complaining about running out of channels.
Method one for overcoming this limitation: increase NUMALCHN from the default of 100. This is OK, and most ISPs end up doing just this. However, you have to bear in mind that TSX must allocate memory for each channel a job can have, and must furthermore preallocate these channels for each of the VMAXJOBS jobs which your system is set to support. All these things multiply together -- VMAXJOBS times NUMALCHN times the size of a channel structure, don't ask me what that is, but suffice it to say that Krazy Dan gets nervous when NUMALCHN goes over 200. Now, this buys you some additional domains, but if you want, say, 100, you are still out of luck.
Method two for overcoming the channel limitation: split the SY:INETD.NET file into two files, called SY:INETD.NET and SY:INETD.2. Run two copies of the network server, one of which is responsible for the services defined in SY:INETD.NET, and the other of which is responsible for the services defined in SY:INETD.2. How to do this? To direct the network server to process a file different than SY:INETD.NET, simply place the name of the file on the NETSERVE command line.
Even if you do this, you may run into another problem which prevents you from running more than, say, 50 domains on a single computer. This is the fact that virtual terminals themselves require a fair amount of memory. We don't think that it is practical to run TSX with more than 150 terminal lines defined (although it has been done).
Usually these limitations prompt people to ask me the same questions. I'm gonna save you the trouble of the phone call or e-mail message:
"What are you guys going to do to overcome these limitations?". Nothing. We think that, when you reach these limits, you are pushing a single computer, not to mention a single licensed copy of TSX, to its reasonable limits, and you need to expand by adding another node.
"But that's another 500 bucks, at least. Why should I have to pay for that?". I'm sorry, I thought we were having this conversation because you are MAKING MONEY NOW and want to MAKE EVEN MORE MONEY by supporting EVEN MORE DOMAINS. Don't you think we deserve to make a living too?
"Well, Unix can do more domains than you." Well, different operating systems have different strengths and different weaknesses.
"Well, Unix is better, and Linux is free.". Then what the @(#*& are you doing talking to me?