Rails 3.2 性能优化记录
将一个项目从rails2.3+ruby1.8升级到rails3.2+ruby1.9 之后,性能测试发现原先平均500ms的请求,变成了750ms,性能损失达到了50%,经过一些性能优化以后,改善到了400ms左右,记录一下优化的3个地方。
1. GC调整
根据一些资料,Rails3.2的call stack比2.3深了N多层,导致GC会变得更加频繁,所以首先针对GC做profile,对比升级前后的数据:
Rack::Cache 整页缓存Rack::Runtime 记录X-Runtime(方便客户端查看执行时间)ActionDispatch::RequestId 记录X-Request-Id(方便客户端查看请求具体在集群中的哪台执行)ActionDispatch::RemoteIp防止IP伪造(可以在web server上做)ActionDispatch::Callbacks设置callbackRack::ConditionalGet设置If-None-Match and If-Modified-SinceRack::ETag设置ETagActionDispatch::BestStandardsSupport设置X-UA-Compatiblecd(可以在web server上做)