On Mon, 27 Nov 2006, Sunny Hirai 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 Haines