# Tips to speed up Rails app (thesis)?

**URL:** <https://www.ruby-forum.com/t/tips-to-speed-up-rails-app-thesis/92478>\
**Category:** Rails\
**Created:** [April 19, 2007, 9:30pm UTC](https://www.ruby-forum.com/t/tips-to-speed-up-rails-app-thesis/92478 "2007-04-19T21:30:47Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Joram](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e8c25b/32.png) [@Joram](https://www.ruby-forum.com/u/Joram)\
**Post date:** [April 19, 2007, 9:30pm UTC](https://www.ruby-forum.com/t/tips-to-speed-up-rails-app-thesis/92478/1 "2007-04-19T21:30:47Z")

</div>

Hi List,

For my thesis I’m currently investing how a Rails can be sped up.

I’ve already done :

- caching
- transactions
- slow Ruby helpers manual written
- include when doing a find

I’ve also tried to use Mongrel, but compared to Webrick my results  
were slower (see [http://users.telenet.be/jorambarrez/thesis/](http://users.telenet.be/jorambarrez/thesis/) ), can  
anyone explain this?

Another question: how can I test concurrency with ab, when I have  
authentication filters?

Any other thing I should try?

---

<div class="post-metadata">

**Author:** ![Joram](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e8c25b/32.png) [@Joram](https://www.ruby-forum.com/u/Joram)\
**Post date:** [April 19, 2007, 9:55pm UTC](https://www.ruby-forum.com/t/tips-to-speed-up-rails-app-thesis/92478/2 "2007-04-19T21:55:55Z")

</div>

On Apr 19, 2007, at 3:29 PM, Joram wrote:

> anyone explain this?
> 
> Another question: how can I test concurrency with ab, when I have  
> authentication filters?
> 
> Any other thing I should try?

You might want to try different template engines/erb implementations.

eg. I found a significant improvement when I switched an app to erubis:

> **[Speeding up Rails with erubis](https://jystewart.net/2007/02/13/speeding-up-rails-with-erubis/)**
>
> However much we buy into the adage that hardware is cheaper than developers, we all still need to make our code as responsive as possible. We tune the database, we refactor our code, and try to fin…

James.

–  
James S.  
Play: [http://james.anthropiccollective.org](http://james.anthropiccollective.org)  
Work: [http://jystewart.net/process/](http://jystewart.net/process/)

---

<div class="post-metadata">

**Author:** ![Joram](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e8c25b/32.png) [@Joram](https://www.ruby-forum.com/u/Joram)\
**Post date:** [April 19, 2007, 9:55pm UTC](https://www.ruby-forum.com/t/tips-to-speed-up-rails-app-thesis/92478/3 "2007-04-19T21:55:55Z")

</div>

The platform you run on makes a huge difference. Ruby is slow on  
Windows,  
for example. On a Windows system, Mongrel and WEBrick are equivalent.  
The  
major difference is that Mongrel continues to work for more than a few  
hours  
🙂

You’ll find that mongrel, webrick, fcgi, etc will perform around the  
same.  
The important thing you need to think about is using more than one  
server.

For example, page caching is great, but if you’re using Mongrel to serve  
the  
cached pages, you’re not getting all of the benefits that page caching  
provides. You want a static web server to serve your static content  
(images,  
js, stylesheets, html files), Reserve Mongrel for handling the actual  
requests. See Apache + mod\_proxy\_balance + Mongrel\_cluster or  
nginx+mongrel\_cluster.

---

<div class="post-metadata">

**Author:** ![Joram](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e8c25b/32.png) [@Joram](https://www.ruby-forum.com/u/Joram)\
**Post date:** [April 19, 2007, 10:10pm UTC](https://www.ruby-forum.com/t/tips-to-speed-up-rails-app-thesis/92478/4 "2007-04-19T22:10:58Z")

</div>

Thanks for the replies!

I’m running both webrick and mongrel on ubuntu.  
I also have a server thats running for almost 3 weeks now, on webrick  
production.  
So Brian, If I understand you correctly, there should be no big  
differences between mongrel/webrick,  
but mongrel can be better used concurrently?

The apache combination is something I will look in to!

---

<div class="post-metadata">

**Author:** ![Joram](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e8c25b/32.png) [@Joram](https://www.ruby-forum.com/u/Joram)\
**Post date:** [April 19, 2007, 10:34pm UTC](https://www.ruby-forum.com/t/tips-to-speed-up-rails-app-thesis/92478/5 "2007-04-19T22:34:59Z")

</div>

Yeah… but to put it better… webrick is not meant for production.  
It’s  
just not designed for it and will usually choke under load.

Rails is single-threaded… if you have only one mongrel running, you  
can  
only process one request at a time. That’s why we load-balance. (It’s  
not as  
bad as it sounds though, as most requests happen quickly. 2 is decent,  
4 is  
really good, I think I read that twitter uses something like 16 or  
something?

I don’t know what tool you’re using for your tests, but you might also  
want  
to consider httperf.

In fact, there’s a great screen cast on benchmarking that you should  
pick  
up. It only costs $9 and is quite awesome.

[http://peepcode.com/products/benchmarking-with-httperf](http://peepcode.com/products/benchmarking-with-httperf)
