notelab

collaborative notes taken during events

rubyonrailscamp2006

Yay notes!

If you're at Ruby on Rails Camp, join my SubEthaEdit document or pester me to do move it to Google Docs and Spreadsheets.

Don't forget to document on the Camp Wiki too!


Howdy Everyone!

This is being posted regularly to http://notelab.infogami.com/rubyonrailscamp2006

Feel free to add and edit! Formatting is in Markdown, but don't worry if you don't know it. Others will reformat as we go along.


What is more valuable, Carbon or Silicon?

Max Dunn

Silcon (Servers) $10,000

Carbon (Programmers) $100,000

Productivity Increase 50%


Efficient memcached Usage

Lessons learned while implementing memcached on zvents.com

Tyler Kovacs

Unasked question: stories about squid vs. memcache: some people opt for Squid over memcache because memcache is perceived not to be reliable

  • Key point: don't tune memcache right away. You'll get a lot more by focusing on database tuning.

  • Key point: But, don't let that stop you from planning ahead.

  • memcached -vv

    • analagous to watching SQL statements in development log
  • How often do you touch the cache per page request? You might be surprised.
  • Facebook created a UDP interface to memcached to avoid TCP overhead
  • How many hits can memcached handle?

    • Best case scenario: one key, one integer
    • 10k/sec on a $400 development box from Fry's (spec?)
    • Things will be slower in production
      • caching more complex data types (ActiveRecord objects) that have higher marshalling costs.
      • memcached run on separate hosts (network overhead)
  • No support for stats in memcache client, use Cacti or similar to measure over time (RRDtool)

  • memcache-client_extensions
    • get_multi
    • stats
    • flush_all
  • extended_fragment_cache
    • in-process memory cache (FCGI, Mongrel process, what have you)
      • cuts touches to cache in half
  • custom_benchmarks

    • allows you to log arbitrary information to the summary line in the Rails log
  • Tip from Facebook: never cache something which came from the cache.