5 ms·
Show HN: Get Rails performance metrics into Chrome Dev Tools
- mooreds 9y agoThis gem seems like a good way to get a full app view while remaining in the browser. The only thing I might add would be to have an example turning on these metrics on a per request basis (via a parameter) so that you could check performance for users other than admin users. Aside: I've used scout on a production application and it is similar in quality to new relic but far simpler to understand.
- amatix 9y agoSeems to be using the `Server-Timing` header — are there docs somewhere on what this expects & what features it supports? Are other browsers likely to follow it?
- mitchellh 9y agoThis is the W3C spec for it: https://www.w3.org/TR/server-timing/ https://www.w3.org/TR/server-timing/
- kaycebasques 9y agoRegarding browser support, I believe the standard is just a set of HTTP headers. So all browsers support it. It's just a matter of instrumenting it in each browser's respective developer tools.
- umaar 9y agoHere's a gif I made showcasing Server Timing with Node.js + Chrome DevTools: https://umaar.com/dev-tips/136-server-timing/ https://umaar.com/dev-tips/136-server-timing/
- andrewingram 9y agoI was excited when I first heard about Server Timing, until I realised it was limited to a single duration value. Being able to model an actual timeline would make it significantly more useful.
- jzelinskie 9y agoYou should really just instrument your application with metrics for a time series database like Prometheus, Influx, or OpenTSDB. You'll find a mature set of tools and methodology. Server Timing looks very naive.
- itsderek23 9y agoAuthor here. Application instrumentation - whether via Prometheus, StatsD, Scout, New Relic - solves a very different problem than this. The server timing metrics here are actually extracted from an APM tool (Scout), so you get the best of both worlds. With those tools, you do not get immediate feedback on the timing breakdown of a web request. At worst, the metrics are heavily aggregated. At best, you'll need to wait a couple of minutes for a trace. Profiling tools that give immediate feedback on server-side production performance have their place, just like those that collect and aggregate metrics over time.
- gingerlime 9y agoThe screenshot shows a breakdown of timing by component (Middleware, router, view, etc). Or perhaps I don't quite understand what you mean by "model an actual timeline"? As a side note, we've been using miniprofiler[0] for a long while now, and it has some limitations, but can be very useful some times. [0] https://github.com/MiniProfiler/rack-mini-profiler https://github.com/MiniProfiler/rack-mini-profiler
- kaycebasques 9y agoI think I get what OP is saying. The screenshot [1] shows you the aggregate time of each arbitrary component, but it's not mapped out along a time series, like you see in the Network panel's Waterfall or in a Performance recording. I'll see if there's anything we can do on our side (I'm the DevTools tech writer), but I think it's an API limitation. We might be able to use some arbitrary convention in the timing values that let's us plot along a time series... [1] https://camo.githubusercontent.com/bc62621acd195d11d0247c0cc8087f48604ba064/68747470733a2f2f73332d75732d776573742d312e616d617a6f6e6177732e636f6d2f73636f75742d626c6f672f727562795f7365727665725f74696d696e672e706e673f78 https://camo.githubusercontent.com/bc62621acd195d11d0247c0cc...
- jacobevelyn 9y agoNeat! Seems similar to this project which I've been keeping an eye on: https://github.com/geoffreylitt/ladybug https://github.com/geoffreylitt/ladybug
- iampims 9y agoSimilar library for go: https://github.com/mitchellh/go-server-timing https://github.com/mitchellh/go-server-timing
- Thaxll 9y agoWhat's the point of using that vs proper tracing?
- itsderek23 9y agoAuthor here. The server timing metrics here are actually extracted from an APM tracing tool (Scout). Tracing services generally do not give immediate feedback on the timing breakdown of a web request. At worst, the metrics are heavily aggregated. At best, you'll need to wait a couple of minutes for a trace. The Server Timing API (which is how this works) give immediate performance information, shortening the feedback loop and allowing you to do a quick gut-check on a slow request before jumping to your tracing tool.
- hultner 9y agoNeat! Anyone know of a similar tool for Python3/flask (or wsgi probably)?
- cagmz 9y agoHi Derek! You've helped me with my employer's Scout configuration in Slack :) Is there an automated way of getting the average of a performance metric (eg Time spent in AR) over N requests?
- itsderek23 9y ago> Hi Derek! You've helped me with my employer's Scout configuration in Slack :) Small world! > Is there an automated way of getting the average of a performance metric (eg Time spent in AR) over N requests? I'm assuming you mean w/Chrome dev tools + server timing? Not that I'm aware of...DevTools is an area I'd like to explore more though.
- thirdsun 9y agoThere's also RailsPanel which I found quite useful when I was still using Chrome: https://chrome.google.com/webstore/detail/railspanel/gjpfobpafnhjhbajcjgccbbdofdckggg https://chrome.google.com/webstore/detail/railspanel/gjpfobp...