Theory is great by practical testing is what you need.
Since you are assuming that bandwidth is not your limiting factor,
write a testing harness on one or more different machines on your
local network and hammer your development server with 100,000 requests
to see how long it takes your server to process them. Be sure each
harness closes its socket connection before making the subsequent
request to force the server to open 100,000 sockets and perform
100,000 data fetches. You need to have a certain portion of your test
harness requests cause your server to fetch data to better simulate
production conditions. The actual proportion of your requests that
return data should be caclulated as follows:
time between data updates
------------------------- = proportion of requests that will return data
time between polls
So 1 minutes polling and hourly data updates means return data to 60/1
= 1.7% of the test requests.
Now you have a benchmark based on your dev server's hardware. If your
server can easily handle 100,000 requests in 1 minute, then a 1 minute
polling interval will work. If the server requires more time, then
set your polling interval to slighly longer than the time it takes to
process all 100,000 requests. Rerun your test with the new proportion
of requests returning data to verify.
If all clients will be getting the same data at the same time, then
your testing should place all of the data-returning requests at the
very end or very beginning of the test. This won't simulate potential
data access concurerrency problems but it will help you determine if
your system is going to become backlogged with requests each time data
arrives, since those requests will take slightly longer to process.
Ideally you would run multiple instances of the test harness on each
computer to better simulate concurrency. Once you have some idea how
this system will behave you can make decisions regarding your
production hardware based on empirical analysis rather than guesswork.
You might want to post another question and see if anyone knows a good
piece of shareware/freeware that can do the hammering for you. That
would save you some development time and good testing software could
help you identify potential concurrency problems. |