On Mon, 27 Nov 2006, Sunny H. wrote:
Our application servers on our current application run in highly
optimized Coldfusion (sub 100ms page response times) has about a dozen
It depends a LOT on what your are doing in that 100ms, but in general,
once can do a lot in 100ms. Below is an extraction from the logging for
a
current IOWA based site. Timings are in the middle column; the first
number is the amount of time taken to receive the request (which, for
the
mode of operation of this app, should always be 0.0), and the second is
is
the amount of time taken for the application to receive the request,
generate the requested content, and pass it back up to the web server
for
delivery to the client. Bytes transmitted in the response is at the end
of the line.
2006-11-29 11:18:22 :: (0.0/0.002295) :: /index.html “200 OK” 14276B
2006-11-29 11:18:22 :: (0.0/0.001249) :: /homestyles.css “304 Not
Modified” 0B
2006-11-29 11:18:25 :: (0.0/0.003757) :: /index.html “200 OK” 14282B
2006-11-29 11:18:25 :: (0.0/0.001513) :: /homestyles.css “304 Not
Modified” 0B
2006-11-29 11:18:27 :: (0.0/0.002254) :: /index.html “200 OK” 14282B
2006-11-29 11:18:28 :: (0.0/0.001244) :: /homestyles.css “304 Not
Modified” 0B
2006-11-29 11:18:32 :: (0.0/0.008826) :: /about.html “200 OK” 13434B
2006-11-29 11:18:32 :: (0.0/0.001643) :: /styles.css “304 Not Modified”
0B
2006-11-29 11:18:33 :: (0.0/0.016653) :: /funds/xxx_plus_fund.html “200
OK” 18798B
2006-11-29 11:18:34 :: (0.0/0.018764) :: /about/management.html “200 OK”
18405B
2006-11-29 11:18:34 :: (0.0/0.001325) :: /styles.css “304 Not Modified”
0B
2006-11-29 11:18:37 :: (0.0/0.018813) :: /about/investment.html “200 OK”
14089B
2006-11-29 11:18:37 :: (0.0/0.001263) :: /styles.css “304 Not Modified”
0B
2006-11-29 11:18:40 :: (0.0/0.003241) :: /about.html “200 OK” 13434B
2006-11-29 11:18:40 :: (0.0/0.001491) :: /styles.css “304 Not Modified”
0B
2006-11-29 11:18:40 :: (0.0/0.003661) :: / “200 OK” 14276B
2006-11-29 11:18:41 :: (0.0/0.002577) :: /about/management.html “200 OK”
18405B
2006-11-29 11:18:41 :: (0.0/0.001258) :: /styles.css “304 Not Modified”
0B
2006-11-29 11:18:43 :: (0.0/0.001244) :: /styles.css “304 Not Modified”
0B
2006-11-29 11:18:44 :: (0.0/0.018290) :: /about/sales.html “200 OK”
16254B
2006-11-29 11:18:45 :: (0.0/0.001241) :: /styles.css “304 Not Modified”
0B
2006-11-29 11:18:47 :: (0.0/0.002186) :: /index.html “200 OK” 14276B
2006-11-29 11:18:47 :: (0.0/0.001641) :: /homestyles.css “304 Not
Modified” 0B
2006-11-29 11:19:20 :: (0.0/0.010662) :: /products.html “200 OK” 13570B
2006-11-29 11:19:20 :: (0.0/0.001643) :: /styles.css “304 Not Modified”
0B
2006-11-29 11:19:25 :: (0.0/0.004319) :: /products.html “200 OK” 22589B
2006-11-29 11:19:25 :: (0.0/0.001242) :: /styles.css “304 Not Modified”
0B
2006-11-29 11:19:31 :: (0.0/0.008743) :: /products.html “200 OK” 19099B
2006-11-29 11:19:32 :: (0.0/0.001484) :: /styles.css “304 Not Modified”
0B
2006-11-29 11:19:37 :: (0.0/0.003661) :: /products.html “200 OK” 25243B
2006-11-29 11:19:37 :: (0.0/0.001220) :: /styles.css “304 Not Modified”
0B
Every one of these requests is dynamic. The pages all involve content
pulled from a database, with navigation that is dynamically generated
based on db contents, and the products pages all have tables of fund
statistics queried from the database.
Now, admittedly, the app is caching information where it can, but these
logs demonstrate that it’s very reasonable to expect good performance
from
Ruby.
These are the logs from a single process, and when hammered, will handle
as many as 200 requests per second, even with very high concurrency.
The
web server configuration fails due to high concurrency long before the
application has a problem. The server itself is a very mundane, middle
of
the road 32 bit dual processor Athlon box, and is not dedicated to this
one site. It has 60 IOWA based sites/applications on it, currently, in
addition to other duties.
Overall, I’m not really sure what kind of persistence and
non-persistence there is between page requests when Ruby is attached a
web server.
This depends on the architecture of the framework. Generally, for
frameworks that utilize a persistent process type backend, everything
that
is time consuming to deal with can persist from request to request.
application. We have a large amount of good code in ColdFusion but as an
agile company, I can see the benefits of Ruby down the line, especially
after a couple of years. Mostly, I love the clean syntax and the overall
design of the language.
Just an aside, but I spent some time converting ColdFusion pages for
displaying mutual fund information to a Ruby application (a MUCH earlier
version of IOWA) a few years ago, and the end result was both faster and
cleaner.
Kirk H.