Rails-Log-Timings is a project mainly written in Ruby, it's free.
A quick a dirty way of reporting the performance of you site from the logs
This little script will parse Rails 2 and 3 log files and produce a report like this
Controller: BirdbrainController Count Min Avg Max : 50ms buckets create: Total 1 71 71 71 [0, 1] View 1 4 4 4 [1] DB 1 26 26 26 [1]
Controller: ChannelGroupsController Count Min Avg Max : 50ms buckets edit: Total 51 248 388 1031 [0, 0, 0, 0, 1, 2, 14, 23, 6, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1] View 51 105 194 618 [0, 0, 11, 15, 20, 2, 2, 0, 0, 0, 0, 0, 1] DB 51 83 92 166 [0, 45, 5, 1]
Count Min Avg Max : 50ms buckets
index: Total 102 235 518 1549 [0, 0, 0, 0, 6, 0, 25, 16, 3, 4, 4, 13, 5, 9, 5, 3, 5, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2]
View 102 98 268 1264 [0, 3, 9, 29, 16, 8, 12, 13, 5, 5, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]
DB 102 84 118 246 [0, 44, 41, 15, 2]
Controller: CompetitionsController Count Min Avg Max : 50ms buckets edit: Total 43 269 356 500 [0, 0, 0, 0, 0, 4, 18, 13, 4, 3, 1] View 43 179 232 365 [0, 0, 0, 6, 27, 8, 0, 2] DB 43 71 83 113 [0, 38, 5]
Count Min Avg Max : 50ms buckets
index: Total 40 335 437 645 [0, 0, 0, 0, 0, 0, 5, 8, 15, 4, 3, 3, 2]
View 40 228 300 437 [0, 0, 0, 0, 10, 13, 11, 1, 5]
DB 40 85 103 191 [0, 20, 18, 2]
The list on the end is the number of requests processed in 50ms buckets to give you a simple graph to see how the requests are spread out.