Hello Everyone, Mongrel is due for a 0.3.12 release which will feature some pretty insane goodies for everyone. There''s talk of IOWA support, lots of speed improvements (including sendfile support), a great Configurator which makes configuring Mongrel a snap (especially for framework implementers), and a ton of debugging stuff. WARNING This is a pre-release announcement for the Mongrel Web Server 0.3.12. That''s ****PRE-release*** not release, not gold, not stable, not will-keep-your-children-alive-in-a-snow-storm release. PRE. PRE means it will not work for you. PRE means you will test and tell me what''s wrong because you like me and Mongrel. PRE means you will not run this release on your MoneyMakerWeb2OhMatic 6000 web site and then complain to me that you have lost billions in the baby trafficking market. DON''T CRY Now that everyone is sufficiently scared, the list of what''s changed is given at: http://mongrel.rubyforge.org/news.html Go ahead and do this to try out the 0.3.12 release for me (pretty please): $ gem uninstall mongrel $ gem uninstall gem_plugin $ gem install mongrel --source=http://mongrel.rubyforge.org/releases/ And if you want to play with the deadly edge you can also do: $ gem install sendfile This will give you a sendfile send for all of your static files. Even though everyone was raving about sendfile speed being like setting a cat on fire, it''s actually only about 20% faster. Let me know what you find (and if it works). CHANGES * A more complete Configurator and RailsConfigurator. These make setting up Rails super easy but is mostly for framework implementers to use. Still, it''s wicked neat API. * The mongrel_rails script is implemented using the new Configurator scheme and works much better. * You can pass a config file to mongrel_rails start and it will load that (command line options override) using the -C option. * Graceful restart works more reliably (not in Win32 since it uses services). * Reload works better and doesn''t break the restart. * More logging of the start-up process. * There is a wicked nice debugging framework that logs object counts, open files, and request params between each request. Try mongrel_rails start -B and look in log/mongrel_debug. * The Rails specific components are now in Mongrel::Rails modules. * More examples using the Mongrel::Configurator. * Dramatic speed improvements on FreeBSD, especially if you install the ruby18-nopthreads version. * Slight speed improvements on Mac OSX. OSX is like shoving a slug through a cheese grater. What''s wrong with Apple? * Platforms that can install ruby-sendfile will get an estimated 20% speed boost in static file serving. This is currently FreeBSD, Linux, and Solaris. * Lots of little bug fixes and minor speed tweaks. Try out the release and let me know if I missed anything. It should work with Rails 1.1RC1 but I haven''t tested extensively. SPONSORSHIP Mongrel now has sponsorship from Eastmedia (http://www.eastmedia.com) in partnership with Verisign (http://www.verisign.com/) to make Mongrel fast and stable enough for enterprise class loads (meaning "gigantic", not "Java style"). Their sponsorship has made it possible to get large pools of test servers, payment to work on Mongrel, and a real application to use Mongrel on. Everyone should toss out a thanks to them since this may mean I''ll get to work on Mongrel full time in the near future and it will raise the quality of Ruby application hosting in general. Not to mention the fact that they are letting all of my Mongrel work stay LGPL licensed and open source. Other companies benefiting from Ruby should take this as an example. I can think of quite a few things (Ruby 1.9 and a real virtual machine are just two) that need some serious commercial cash to get them in gear. If you''re making money off Ruby consider hiring a developer part-time, full-time, or posting a bounty for something you and the community needs. There''s no better time for enlightened self-interest than now. Zed A. Shaw http://www.zedshaw.com/
On 3/27/06, Zed Shaw <zedshaw at zedshaw.com> wrote:> Hello Everyone, > > Mongrel is due for a 0.3.12 release which will feature some pretty insane > goodies for everyone. There''s talk of IOWA support, lots of speed > improvements (including sendfile support), a great Configurator which makes > configuring Mongrel a snap (especially for framework implementers), and a > ton of debugging stuff.Great stuff all around. I reran the debugger stuff in production mode, and got very similar results in objects.log: COUNTS: 0,1524,24501 TOP 20: [[Array, 16720], [Hash, 1718], [Regexp, 1259], [Proc, 1179], [Class, 1138], [Float, 645], [YAML::Syck::Scalar, 578], [Module, 381] .... However, the object_tracking log showed this (highlights reel only) Number of objects created = 4450 1750 YAML::Syck::Scalar objects created. 546 ActionController::CodeGeneration::GenerationGenerator objects created. 195 ActionController::CodeGeneration::RecognitionGenerator objects created. 179 SQLite::ParsedStatement::Token objects created. 109 Hash objects created. 101 Gem::Version objects created. 98 StringIO objects created. 75 Regexp objects created. 73 XSD::QName objects created. 69 Benchmark::Tms objects created. 68 ActiveRecord::ConnectionAdapters::SQLiteColumn objects created. 56 SQLite::ParsedStatement objects created. 56 SQLite::ResultSet objects created. 56 SQLite::Statement objects created. 51 Gem::Specification objects created. So that''s good, my app isn''t abusing 1300 regexes per request at least :) I did notice I was getting this in my mongrel log on each request: Error accessing file: Broken pipe /opt/local/lib/ruby/gems/1.8/gems/mongrel-0.3.12/lib/mongrel/handlers.rb:182:in `write'' /opt/local/lib/ruby/gems/1.8/gems/mongrel-0.3.12/lib/mongrel/handlers.rb:182:in `send_file'' /opt/local/lib/ruby/gems/1.8/gems/mongrel-0.3.12/lib/mongrel/handlers.rb:182:in `send_file'' /opt/local/lib/ruby/gems/1.8/gems/mongrel-0.3.12/lib/mongrel/handlers.rb:201:in `process'' /opt/local/lib/ruby/gems/1.8/gems/mongrel-0.3.12/lib/mongrel/rails.rb:54:in `process'' /opt/local/lib/ruby/gems/1.8/gems/mongrel-0.3.12/lib/mongrel.rb:402:in `process_client'' /opt/local/lib/ruby/gems/1.8/gems/mongrel-0.3.12/lib/mongrel.rb:401:in `process_client'' /opt/local/lib/ruby/gems/1.8/gems/mongrel-0.3.12/lib/mongrel.rb:466:in `run'' /opt/local/lib/ruby/gems/1.8/gems/mongrel-0.3.12/lib/mongrel.rb:465:in `run'' /opt/local/lib/ruby/gems/1.8/gems/mongrel-0.3.12/lib/mongrel.rb:455:in `run'' /opt/local/lib/ruby/gems/1.8/gems/mongrel-0.3.12/lib/mongrel.rb:735:in `run'' /opt/local/lib/ruby/gems/1.8/gems/mongrel-0.3.12/lib/mongrel.rb:733:in `run'' /opt/local/lib/ruby/gems/1.8/gems/mongrel-0.3.12/bin/mongrel_rails:90:in `run'' /opt/local/lib/ruby/gems/1.8/gems/mongrel-0.3.12/lib/mongrel/command.rb:163:in `run'' /opt/local/lib/ruby/gems/1.8/gems/mongrel-0.3.12/bin/mongrel_rails:187 /opt/local/bin/mongrel_rails:18 Everything still ran though. -- Rick Olson http://techno-weenie.net
Hey Rick, can you make sure you''ve got the very latest by uninstalling and then re-installing? I just added a few more exceptions that should get stuffed if the client closes the socket. Also, what browser and OS are you on? I''m guessing OSX right? Zed On 3/28/06 1:19 AM, "Rick Olson" <technoweenie at gmail.com> wrote:> On 3/27/06, Zed Shaw <zedshaw at zedshaw.com> wrote: >> Hello Everyone, >> >> Mongrel is due for a 0.3.12 release which will feature some pretty insane >> goodies for everyone. There''s talk of IOWA support, lots of speed >> improvements (including sendfile support), a great Configurator which makes >> configuring Mongrel a snap (especially for framework implementers), and a >> ton of debugging stuff. >...> I did notice I was getting this in my mongrel log on each request: > > Error accessing file: Broken pipe >/opt/local/lib/ruby/gems/1.8/gems/mongrel-0.3.12/lib/mongrel/handlers.rb:182:i> n> `write'' >/opt/local/lib/ruby/gems/1.8/gems/mongrel-0.3.12/lib/mongrel/handlers.rb:182:i> n> `send_file'' >/opt/local/lib/ruby/gems/1.8/gems/mongrel-0.3.12/lib/mongrel/handlers.rb:182:i> n> `send_file'' >/opt/local/lib/ruby/gems/1.8/gems/mongrel-0.3.12/lib/mongrel/handlers.rb:201:i> n> `process'' > /opt/local/lib/ruby/gems/1.8/gems/mongrel-0.3.12/lib/mongrel/rails.rb:54:in > `process'' > /opt/local/lib/ruby/gems/1.8/gems/mongrel-0.3.12/lib/mongrel.rb:402:in > `process_client'' > /opt/local/lib/ruby/gems/1.8/gems/mongrel-0.3.12/lib/mongrel.rb:401:in > `process_client'' > /opt/local/lib/ruby/gems/1.8/gems/mongrel-0.3.12/lib/mongrel.rb:466:in `run'' > /opt/local/lib/ruby/gems/1.8/gems/mongrel-0.3.12/lib/mongrel.rb:465:in `run'' > /opt/local/lib/ruby/gems/1.8/gems/mongrel-0.3.12/lib/mongrel.rb:455:in `run'' > /opt/local/lib/ruby/gems/1.8/gems/mongrel-0.3.12/lib/mongrel.rb:735:in `run'' > /opt/local/lib/ruby/gems/1.8/gems/mongrel-0.3.12/lib/mongrel.rb:733:in `run'' > /opt/local/lib/ruby/gems/1.8/gems/mongrel-0.3.12/bin/mongrel_rails:90:in `run'' > /opt/local/lib/ruby/gems/1.8/gems/mongrel-0.3.12/lib/mongrel/command.rb:163:in > `run'' > /opt/local/lib/ruby/gems/1.8/gems/mongrel-0.3.12/bin/mongrel_rails:187 > /opt/local/bin/mongrel_rails:18 > > Everything still ran though.