I'll add my thoughts to the comments here
(I'll try to organize them, but they may come across as being quite random
)
There's lots of really great ideas in this thread!
The only time the pproxy actually runs out of connections is when there are no blocks available (usually due to a failed connection upstream). When the pproxy runs out of blocks, clients are still connecting, trying to download blocks. The problem is that they hold their connection for 30 seconds (I think), and then release the connection, then attempt to connect again (if they are not set to fallback to d.net servers). The connection pool gets used up fairly quickly in this situation.
When the pproxy has a full buffer to supply clients, the number of connections used is rarely more than 6 or 7. The average number of connections used over long period of time is 3 (according to the status line in the pproxy's conlog). Basically, it seems like the problems are not related to the number of connections the pproxy software can handle. The problem appears to be more the way the pproxy handles upstream connections, and when problems with some upstream keyservers occur. Another problem with the pproxy software appears to be the amount of memory used when you have large buffout files, and the amount of cpu consumed (often spikes to consume 1 cpu).
I can actually think of a reason to not have a higher number of connections allowed. The more active connections, the more resources used - cpu, memory, etc.
I really like the idea of a round-robin pproxy, but I certainly think it should be optional for people. Does anyone know definatively how a RR dns works? For example: if I look up a RR record, and my machine fails to resolves it to an IP, what happens? Does my machine even try to resolve it again, or just keep trying to connect to the first IP it resolved even though it is not available. Also, if it does try to resolve the IP again, what keeps it from resolving to the bad IP again? The reason I am curious about this, is because even if I have the d.net RR keyserver set in the pproxy, there have still been problems connecting to an upstream keyserver. There was times when the d.net RR would resolve to the same (unavailable) IP regardless of how many times I pinged it.
Sorry about the length here.
Mika
update: my speeling sucks
There's lots of really great ideas in this thread!
The only time the pproxy actually runs out of connections is when there are no blocks available (usually due to a failed connection upstream). When the pproxy runs out of blocks, clients are still connecting, trying to download blocks. The problem is that they hold their connection for 30 seconds (I think), and then release the connection, then attempt to connect again (if they are not set to fallback to d.net servers). The connection pool gets used up fairly quickly in this situation.
When the pproxy has a full buffer to supply clients, the number of connections used is rarely more than 6 or 7. The average number of connections used over long period of time is 3 (according to the status line in the pproxy's conlog). Basically, it seems like the problems are not related to the number of connections the pproxy software can handle. The problem appears to be more the way the pproxy handles upstream connections, and when problems with some upstream keyservers occur. Another problem with the pproxy software appears to be the amount of memory used when you have large buffout files, and the amount of cpu consumed (often spikes to consume 1 cpu).
I can actually think of a reason to not have a higher number of connections allowed. The more active connections, the more resources used - cpu, memory, etc.
I really like the idea of a round-robin pproxy, but I certainly think it should be optional for people. Does anyone know definatively how a RR dns works? For example: if I look up a RR record, and my machine fails to resolves it to an IP, what happens? Does my machine even try to resolve it again, or just keep trying to connect to the first IP it resolved even though it is not available. Also, if it does try to resolve the IP again, what keeps it from resolving to the bad IP again? The reason I am curious about this, is because even if I have the d.net RR keyserver set in the pproxy, there have still been problems connecting to an upstream keyserver. There was times when the d.net RR would resolve to the same (unavailable) IP regardless of how many times I pinged it.
Sorry about the length here.
Mika
update: my speeling sucks
