The invention of Transaction Trace
2001 is a year that has been eroded by the sands of time. I can't recall specifically which events happened on which day, but it was in the neighborhood of 2001.
2001. Lew Cirne, CEO of Wily Technology, ushered me into his office to show off his latest innovation: Transaction Trace. Lew had invented the idea of using bytecode manipulation to insert tracing in applications on the fly as the code is loaded into the runtime.
Now, Lew had truly outdone himself: a way to capture and display the performance profile of a single user's transaction. They looked like "upside down wedding cakes": the top levels were the entry points, and the deepest levels account for bottlenecks in transaction time. You could have a "death by 1000 cuts" where even calls with seemingly zero latency can add up; "pig in a python" where consuming data from a distributed source, like a database, becomes expensive; and mixes of things in between. Infinite loops would be invisible, and memory too (separate tools exist for dissecting memory heaps).
I wish I had a good screenshot of an original transaction trace, they were spectacular. Here are some examples I found:
领英推荐
Pathetic that something as petty as an instrumentation defect is being highlighted. The real thing to see here is the fact that the transactions are being handled by a Tomcat Servlet frontend and how long it took the whole request.
In this case, a Shopping Servlet uses an EJB layer to catalog inventory, an actvity that takes more than three seconds, followed by another second of network latency.
Reader! Do you work with the inheritors of transaction trace today? Lew has neither paid me nor asked me to promote him. I simply wish to praise a great innovator. Send in screenshots of your transaction traces, let's see them on the thread.
Transaction Tracer was one of my favorite APM tools for identifying application bottlenecks. During performance testing of a new app I’d turn on all traces just to see “what lights up”. ?And then focus on the hot spots.? Besides illustrating the 1000+ candle birthday cakes (usually bad SQL or MQ calls), it helped those “waiting for Godot” situations— where a request from one tier does not get a response and only proceeds after a fixed time interval expires. One of my favorites was a consistent 4500ms TCP timeout. And only for laptop users whose IP addresses were not registered with the DNS server. Ironically the only reason for the call was to write the result to a log file.?
Staff Solutions Engineer
1 年T-shirt back
VP Engineering and Prague Site Leader, Pure Storage
1 年To quote Kent Smith at the time “we are in the ambulance chasing business”
Solutions Architect, IT Operations & Services @ HSN/QVC
1 年I remember the upside down birthday cake. You introduced me to the world of APM, and those days of Weblogic 5/6 were murky, when everything before the advent of Wily was a blackbox. Transaction Trace was revolutionary, as was the ability to get telemetry from JMX. Cheers!
Creator of startups. OpenShift, Node.js, and more!
1 年So many good ones... here we have 11 seconds of GET_PART_DETAIL from the cutting-edge Struts rewrite of Silversteam the e-commerce framework. Things never change, I think I just saw this same pattern (but this time invoking serverless functions) over in a NextJS Commerce app. :)