You can listen to the podcast and read the show notes here.
Welcome back to the show I'm here with David has or co founder of integral and make us a fusion reactor and today we're talking about what's new in the freshly released fusion reactor seven with over 20 new features in it. And we're going to be doing a demo later in this which I'll will be talking through. So those of you are listening by audio will be able to get all the exciting stuff and welcome David. Thank you, Michael. Thanks for having me. So just for the people who haven't heard of it, what exactly is fusion reactor?
David Tattersall 0:32
So fusion reactor is a lightweight application performance monitor, it supports all the major Java containers, Tomcat jetty web sphere, J boss, of course, while fly also cold fusion. So fusion reactors been around since 2005 now. And we are the number one monitoring. So solution for cold fusion.
So basically, if you have a cold fusion server that slow or crashing you, you want to have fusion reactor to help figure out what's going on
David Tattersall 1:11
and prevented Absolutely, yeah, so there's two main areas that we focus on those performance related issues, or those some defects and the code bug in the code that you're trying to find out. And, as you rightly say, so the job of the monitor generally monitors do two things a measure, and they alert so measure is in terms of metrics. So things like web requests, JB bc activity, memory and CPU, all the metrics in and around there. And
David Tattersall 1:53
would alert you to say, for example, a slow running request star review running out of memory. And fusion reactor does all that. And on top of that, and there's two key differentiators that fusion reactor house on the one side, we do something called crash protection. So when we recognize that something's going wrong with your application server instance. And we will try and take some preventive action. So basically
enhance the resilience of the system. So we're not doing things that is necessarily going ahead and fixing the issue. And, but we're taking the proactive action in order to try and he's the situation. So an example of that could be, let's say, the long running request, and maybe your system, you say no requested run longer than 10 seconds. So if you have a request that runs longer than 10 seconds, then you'd like to kill it. So fusion reactor will actually attempt to, to kill that request that particular case,
the other area where we differentiates is
David Tattersall 3:16
we've got a number of production analysis tools. So we've got a debugger, we've got a code profiler. And with the advent of fusion, reactor seven, we've now introduced our new memory profiler. And all these tools are basically these are what you say, would be typical developer tool, which normally wouldn't be in the production environments. And we've made these tools available to be used on a production environment, they are very safe, very secure, and extremely low overhead. So fusion reactor still takes just less than 1% of
of your, your CPU, your system CPU or your instant CPU when monitoring a server instance. And that's a goal to keep that overhead at less than 1%. So having the availability of tools like the debugger code profile, or memory profiler, and the idea is that with those tools, these are familiar to developers, and they're going to let you get down to the roots of your problems as fast as possible. And that's essentially what rate are all about getting to the root of the problem.
So right, why is it time to have a look up the newly released fusion reactor? Seven? I think it is interview just bear with me. Can you see I've shared my screen now, can you see my screen there?
I'm sure it's coming up if you're seeing it at your end. So when did fusion reactor seven release
David Tattersall 5:04
should be it should be coming up name. So what where do we release or what? Sorry, what was the wet, how long ago did it release? Okay, so we have the launch, actually, it was on the second of August, and we did what we always do. So basically, we turn this sort of a softer release, and we always bring fusion reactor outs. And then we let people know through the social channels through Facebook and through Twitter. And then gradually over the next usually over the next week, we mail out to all the customers who are buying the got subscription licenses or they've got a valid maintenance license that new versions available. And then we starts sort of pushing information to let's say, the rest of the world so we sort of start start really opening it up and markets and getting them
yeah, we've got you know, we've got over 5000 customers we've got well in excess of 25,000 servers running fusion reactor, we also want to make sure that in the case that there would be anything you know, any problem that would come up and that you know, we're picking able to pick that up very, very quickly and this is especially important for a major release because there's been so many new changes and
what happened this time whilst we actually a customer accounts acted as they were running cold fusion seven and with a older Oracle
JD bc driver, and that causes a problem and we basically isolated the issue, fixed it and pushed a new version of fusion reactor all within a couple of hours. And since then, everything was good. But, you know, these things can happen. We've got, you know, if you think with all the different Java,
Java containers that were supporting different versions of C CF.
Also with rye low and Lucy, there's all these different combinations of environments. There's literally thousands and thousands of different combinations. And as fusion reactor really goes so deep inside the JVM, you know, it's at the end of the day, it's software and it's very difficult to test every single platform. I think we do a great job with that. But, you know, things can always happen.
Okay, right. So I'm excited to see the new features in
David Tattersall 8:02
seven. Okay, me too. Okay, so that's me. Again, my name is David sad song CEO, co founder of integral and I'm just going to throw a few slides up here, give you some highlights. Again, I'm I'll probably skip the what is fusion reactor, because we talked about it before. And I'll probably just jump straight into the demonstration so that you can see that real quick fusion reactor one was launched in December 2005. And we've just launched fusion reactor seven last week. And fusion reactor cloud is planned for full launch in 2017. So it's actually it's currently available, you can currently purchase it if you come to us directly. We don't, we're not selling it until we actually do the official launch via the
via the web store. But as soon as we do launch, then you will be able to purchase it directly through the web store. But if you'd like to try it fusion reactor cloud right now just drop an email into sales at fusion minus reactor dot com. And we can set you up with a trial accounts and that won't be a problem. So like, say, we've got over 5000 customers who purchase fusion reactor really across almost all industries and segments. And we've got somewhere in excess of, I'd say, between 25 to 30,000 servers. Now running fusion reactor on cloud, we're already processing billions of transactions per month. So we already have a number of customers who are already using fusion reactor cloud and like said, were the global market leader for Adobe server products for monitoring obviously, that's, that's cold fusion. But as you know, fusion reactor is a job and monitor and we also supports all the all the various different Java containers. And I'm very proud to say that fusion reactor won the 2017 FIFA gold trusted award. And so we've got a rating of 4.8 with 175 reviews. We've actually got I think, since I did this slide, we've got 185 reviews, those are going up all the time. And we were very proud to win that award this year.
Well, congratulations. Thank you very much. So like said Fr. It's low overhead
David Tattersall 10:39
Java monitoring. So the idea being that it's going to give developers total insight into how their code executes and performs a production run sign. And I mentioned before we got to really unique
features which differentiate fusion reactor from all the other things. First thing is we increased application resilience with crash protection. And the other real key differentiator is that we've got our program analysis tools of the debugger, the code profiler, and the Memory Analyzer, which are all integrated into fusion reactor, low overhead and production safe,
right, so this is sort of a quick overview of what I'm going to show so I'll go through the main core features and also the fusion reactor ultimate features and times not actually permitting today to go over a fusion reactor clouds are great that out. I will do that on a subsequent
subsequent video, though, so I'd be happy to do that with you. My great,
great. Well, let's have a look at some of these metrics that you've added in rights. Let's take a look.
David Tattersall 12:07
Oh, okay. So can you see that screen? Okay.
Yes. little teeny tiny, but Yep, little teeny
David Tattersall 12:14
tiny. Okay, well, it's sort of its full full screen for me. So big monitor, he got it. Got it. Okay,
well, talk us through what it's showing. So just in case people are having trouble reading it. So
David Tattersall 12:28
what you can see here, this is one of the main screens that we've got in fusion reactor. This is the web metrics screen. And I've got a couple of applications running in the background here, just to add a little bit of noise on my server so that we can see some transactions and some JD bc activity taking place. And what I can see here at the top left hand side our web requests
so you can see the number of rooms going through per second. Next to that I've got Judy bc activity. So again, I can see the number of JD bc request which are being processed per second. And on the right hand side, I can see the two main system resources, which are memory and CPU. And if I
scroll down to the bottom of the screen here, I also get some overview of how long the service and that's basically database requests. Yep, those those are database requests. And I'll show you some of the details there in a sec. But I can see here how much memory is being used in social have new requests have come through,
watch me bc requests the current running, I can see whether there are any slow pages, recent low pages, or also weather crush protection,
it's triggered. And we can see here in this particular case, I did have one crash protection requested boards and take a look at that one in a sec. So some of the new features in fusion reactor seven, what we've done is we've introduced j Maxx being So Jeremy Max, for those who are not familiar with that those Java management extensions. And when I open up the jam, x beans RM beings page, what I see here is a breakdown of all the beings which are available on this particular system. And,
and beans are essentially limited. So if you've got an application, you can expose and beings to TJ Maxx, and those m beans then usually include some sort of attributes, and those attributes can be interrogated. And if we look here, so I've just opened up operating system, I can see I've got a bunch of attributes, I'm not sure whether you can read read all those things like free physical memory, space max file description cans, process, CPU load system, CPU load,
those, there's literally just within the operating system itself, there are hundreds of attributes available. And like I said, pretty much it's so limited. So if we introduced the say we were using Kafka
on this particular on this particular
server instance, then all the Catherine beans would be available and you automatically fusion reactor is interrogating the JVM for those m beings. And you would automatically see them here and don't at the side, you can see those little control here. And these controls are what I would use to select those attributes. And if I select them, you can say I've got a couple here those process CPU load and system CPU load.
And next to that is
David Tattersall 16:34
a link to cloud watch. And this is a nother enhancement that we've or another new feature that we've introduced with fusion reactor seven. So we've introduced the capability to push both fusion reactor metrics and jam x m beings up to AWS, cloud watch AWS cloud watch is is also a more monitoring tool, which is made available from Amazon. But as far as I know, fusion reactor is the only products which would seamlessly enable you to push instrumentation data. So metrics, especially Gen X beans, directly from the JVM, and directly into Cloud watch. And if I go here, I can see it may have been overview, these are the, these are the beings that I've got available. And like say that I can, some of these are graph related. So if I click on that, I will see a specific graph. And I can look back here across one hour, one day a week, just like usual infusion rates. But I can also take a look at AWS cloud watch metrics. And this is the interface to a AWS cloud watch. And here you can see all the variable all the different series or metrics which are available through fusion reactor, and through the jam x metrics, which you can very, very simply add to cloud watch. And as long as you've got an AWS cloud watch accounts, then those metrics will be automatically posted to AWS cloud watch. So what Mike said, that's pretty neat thing,
it enables fusion reactor to be used as a telemetry tool to capture metrics, push them to cloud watch. And we've also introduced all the genomics and being metrics. So let's take a look at
what sort of requests would look like. And I've just gone here in Sioux my history. And here, I see the last 100 requests which have been executed. And if it just go down here, I've got a request here called Add To Cart. So like I said, I've got a couple of applications running in the background. And if I drill into that one, this is typically what you'd see in the fusion reactor, Transaction Details screen or request details screen, you'll see all the request details. So for example, what the URL was, what the IP address was that call, there's the status code, I can see the execution sign, I can see how much memory this request used. If this particular request had any JD bc activity, I can see here how many queries were executed, I can also see things like header information, I can see whether there are any cookies used, if I click into JD bc will get a complete breakdown of the SQL that was used. This was hibernate cold here, I can also see the data source which was reference for for this particular request. And I can see the total time the DB time and how many rows were actually returned in this request. So this is really useful very often, you know, performance issues are embedded in the Jedi BC. And just by going into the details here and see, you know, you know, this particular sequel command, you know, we're returning $5 million Do we really need to do not, you know, should we have some workloads on that SELECT statements probably.
And we can also see things like relations, which is also very useful for performance tuning. So this gives us a visual breakdown of this particular request. So I can see I've got we're using spring, it says Java spring framework here. And what this relations breakdown gives us is a visual breakdown of the core components of this particular request. And I can also seeing the transaction hierarchy here, I can also see individual details. And I can drill into the the actual transaction components of this request in order to get more information. So again, really useful
breakdown here of what actually exactly happened on this request. And under the requests, you can see as a bunch of different menu items here, some of the useful ones are things like slow requests, so I can see which particular requests ram for the longest amount of time. Another really useful useful one is request by memory. So this is showing me how much memory allocated per request. And again, this is something that you don't always see in in many monitors. But this is actually a really useful metric. Because sometimes certain requests are using a ton of memory, we, you know, we're not even aware of it. And that memory consumption is then leading the application server to run out of memory. And as I'm sure you know, memory is very often an issue. And
you can see here we've got our application and transaction. And on this particular request, if I drill in, so this one, this is this fusion reactor spring test application, if a drill into that, then it's also gives me a very interesting view in fusion reactor. So this is our application screen. And what this is showing is a breakdown of of my application. So I'm not just focused at specific requests or transactions. But what we're able to do is we're able to analyze,
analyze that. And analyzer an application through the through the URLs and extracts is, for example of using a framework based on the actions which that framework is using will actually also detect the actions. And as you can see, in this particular in the spring SAS application, we've got a number of actions here, for example, destroy session, login page ads, cards, and we're able to provide metric data on how many times those particular actions were called, whether it was a GET or POST, how much memory is being used, what the duration of that request was so humbling it ram for how many times it was executed, how much CPU it use, etc, etc. So this is a really, really useful screen to give you sort of an application focused view of your application. And very, very useful in performance tuning.
So we're looking at this one, David, it says, this long JD BD task took up 73% of the
David Tattersall 24:55
time transaction time. Yeah, and the reason for that is because if I go under JD BC, and I look in
long these transactions, then you can see this long JD BC is actually on this particular demo application. I'm just running sleep statements. So this is,
you know, for a demo, it gives you sort of the, the, the demo effects here, obviously, Normally, you would run a select sleep,
we're just basically doing this just to put some, I've got some I'm using patchy j meter. And this sleep statement is just part of the script that I'm running. So this does get well, it's, it's actually it's a true obviously, the metrics are exactly dead on we did Rob since 5% of our request worthy sleeps. But obviously that won't happen on a typical system. So and if I drill into these, you know, and I look at the JD BC, it tells me exactly that I got a select PG sleepy. So yeah,
in some ways, it's perfect, because it's telling us exactly what's going on. But it's, you know, it's not something that you necessarily have in your, in your applications. And one of the thing I wanted to mention about applications, which relates to cold fusion is that we firm extended fusion reactor seven now. So including specific instrumentation for a number of frameworks. So we've got cold box, which we'd actually which we'd had for a while. And, but we've also extended now with framework one, and also with
so for those frameworks will be able to automatically detects the various different actions that
yeah, that are included in those frameworks. And you'd see then on this particular page, you'd see a breakdown of which framework actions have been executed
well as we go. So we also do something which is,
I'd say, fairly standard for
a serious application performance monitor. And that's user experience monitoring and user experience monitoring is this is measuring the end to end performance of a request. So you can see here, we're measuring database time, we're measuring web request time. So time on the server, the orange is time on the network. And green is client rendering sign and be here. And we're showing, basically, so for this particular system, we've got an average of something like 500 milliseconds. So ran about half a second
with the majority of time being spent on the network. So very often, you know, people will be sat in the war room, and the customers contacted you and said,
you know, your applications slow, and then you get finger pointing, because, you know, the DB guy says, It's not me, the network guy said, It's not me, obviously, it's not the, the web request, you know, it's never the developer
and we're the UE em screen. This is basically, you know, we getting away from finger points in here, because we can just look at this and say, Okay, we're all good guys. It looks like the issue is the network. So that's pretty useful feature. And what we've also got his session monitoring. So you can see here, sessions being created sessions being strained. And the total number of active sessions which we've got, this is sort of pretty stable around about high sessions. We can also see those sessions tracks by applications, if we wanted to attract, so we got multiple applications being monitored by fusion reactor, then we could click here on the track button, and those applications will be automatically tracked and the sessions will be tracked. So sometimes, you know, people don't realize if you ask them, you know, how many sessions Do you have the sale you know, we've usually got, you know, maybe half a dozen users using the system but what they are not aware of, is that they've actually been tracking sessions that life tracking sessions on the sessions have not been cold, and they've You know, sometimes got a ton of session variables so that's eating got memory and you've not got half a dozen sessions. But you know, sometimes you've got several thousand sessions which you're still maintaining, or the cold fusion still maintaining, so fusion reactor would be able to to to show that too
Okay, um, so what else have we got let's take a look under resource says. So this is pretty important area so he see things like he nominated
you can see various different memory spaces, so Eden space old Jen, perm, Jen survivors base these are the different Java memory spaces and depending on the JVM where you're running fusion reactor, you may see different memory spaces highlighted here. So I'm running Tom cats, Tomcat seven and this is what's come up from some some cat seven very useful information. Very often like said issues are related to memory and
fusion reactor is able to show you a memory profile. And also again, across a day or two weeks time. You can also see things like GC garbage collection. So you can see here, we've got scavengers running golf here,
the GCs running, I can see memory being freed. Again, I can go back over the last hour to see what's been going on. And I can even actually run the garbage collection. So you'll see down here at the bottom right hand side of the garbage collection button. If I click that, then I put the tarp it tells me how much memory has been freed. So sometimes people leave that you know that the problem lies with the garbage collector. And that's the reason why their systems breaking. So they go in and try and fiddle with a garbage collector and chew net
that could be an approach generally, I'm personally of the opinion that general that the garbage collector is pretty good, it's been optimized for the the JVM that you're running, you're running gone. And obviously as new versions, new release that the JVM come out, if you've got enough fiddled with the garbage collector, then there's a very high probability that you'll have probably done something which causes issues for you with the new release of the operating system. So in my opinion, probably better to leave the garbage collector.
But it's fine to take a look at what it's doing.
Okay, what else have we got, we under also under Resources, I can also see things like classes, or how many classes were loaded or class loading in real time, I can also see thread activity, and I can see all the threads which are available to me. So this is also an interesting view here. So these are all the current threads, which are available on the system. And I noticed that I had one that I thought, Okay, this one seems to be sticking, I could do a stack trace of it. Or actually, if I click the button up here, you watch that I can do a stack tree soul. And if you saw how quick that was, it's literally it's less than what well, less than a second, we got quite a lot of threads here. And fusion reactor reacts, stack, traced every single one of those threads and made that information available.
And I don't know if you saw that,
if you may have silver here, you'll see these are actually
these links. And very interestingly, if I click on one of those links, whoa, we just did an instantaneous D compile all third. And obviously very, very useful if you're trying to get to the roots of some problem. And you saw that something was sticking all
stack traces that we have
the class and method Well, the lines within the stack trace frames, those can be clicked on and providing that you've accepted that you're okay to decouple pile, there's actually there's a first time you invoke it as a pop up there and ask for your permission. But if you provide permission, and we will instantly de compile it. And we do have some checks in there. For example, there are a number of programs which we don't do compiled cold fusion being one of them, obviously, and so you can't D compound called fusion. But if it's your own code, or something in Java, then it would enable you to decompose Wow, were useful feature.
Okay, so, um, what else we got, we've also got a System Monitor. So this is something not typical, really, in an application performance monitor, usually that's focused on the application instance, that you're monitoring. But we've fusion reactor to actually provide metric instrumentation for the actual server itself. So he's giving you instrumentation I've got, I'm running this demo on
on my, on my laptop, and I've got a VM that this is installed in. But what you can see here is my machine network usage. So this is network i O, or disk i O. And I can see memory and CPU of my whole
my old physical machine here. So not just the virtual machine, not just the instance. And again, we, you know, we show information like system uptime, which version of Java were running
also things like processes. So I can take a look at all the, these are all the processes which are running on my machine right now. So again, pretty useful information. He are
not focused directly at the actual instance, but very useful metric information. So to have available and just others. One thing I just remembered, actually, when I was showing the metrics before, you may have seen, so a lot of these metrics are maybe thinking, Oh, you know, a lot of this obviously, request Jesus resources looks interesting. But what about cold fusion, and I've got another fusion reactor here, which is actually running, this is running a cold fusion server, which is also on the load. And we've got around about, I think it's about 45 different cold fusion focus metrics. So from
request to template request to web service requests. And we've got flash metrics, we've got CFC metrics, we've got dp pools, stats, we can also see on those CF system metrics, and there's a bunch of different things as well. So template can hash CF threads, if any, are running query cache. So it was a bunch of different things are some of these metrics actually require the cold fusion monitoring to be enabled, and not all of them, some of them do.
And yeah, if you enable the self monitoring, which is built into cold fusion Enterprise Edition, then this information or some of this information will also start to appear. So I just wanted to mention that about cold fusion as well.
Right? Yeah, so I'm like said, there's two ways that we differentiates fusion reactor from other monitors. And I said, the first thing that we've got is something called crash protection and crush protection, we're doing 300, things were basically measuring quantity. So how many requests have been running, we've got run sign protection. So this is how long as something been running in seconds. And we've got web request memory protection. So when our heap hits a certain threshold, and we can move this thing around. And so whenever he has hit a certain threshold for a certain amount of time, and we would also generates either an alerts or a invoke a protection strategy. And as I mentioned earlier, one protection strategy could be in the case of runtime protection, we can actually a board or request with memory protection here, we could either reject or q requests. So imagine, if you've got, you know, if you said, if the heat goes over, you know, nine, see, I don't know, 98% for a period of 10 minutes, then I fear, you know, a systems going to, it's going to fall over. So in that particular case, I'd like fusion reactor to secure requests, and not let any more requests saying until the heap has corrected itself. So the heat threshold has gone below 98%, well, that's crash protection. And if we like said,
we just had a crush protection event earlier, and that was under we had a time and protection and this world timeout protection that ran so I'd got something called right files low Jess P. Science, what a threshold here about 22 seconds. And I said, if anything runs on 26 seconds, I'd like to abort that request. And that's exactly what the stage and have a drill into it, I can see all the request details. And I go into the error details. And this is going to tell me that this thread was killed. And the calls if I scroll down was it was invoked by integral ATM transaction assessing. And that's a great name. Thank you, john Hawksley for coming up with that the transaction assessing will actually killed a request. And just to be clear, it's not possible to kill all requests. If it's a Java native thread. Or if it's holding some sort of resource, then you won't be able to kill that thread, because that could destabilize the JVM. But we know which types of threads are capable. And this was a, this was essentially an application request. So this was some program that we did. So this one was perfectly safe to kill, and fusion reactor was able to kill it.
So the idea here is, instead of these zombie requests are just chewing up your server resources carrying on and on the crash protection just kills them after a certain while, so your server doesn't die. Exactly. Yeah,
David Tattersall 43:43
that's, that's exactly it. And again, it's, you know, it's all about resilience. And, you know, what you don't want to happen is that your server, you know, gets this at some of Rogue request running at three o'clock in the morning, and you server falls over so much better, you know, other monitors may send you a warning and say, Hey, you got a bunch of requests here. But, you know, if those requests cause your applications to fall over, then it doesn't really help you that much, knowing that there was a lot of requests. So this is really an area where, you know, fusion reactor comes into its own. And it's the only as far as I'm aware, it is the only monitor on the market that's got anything like that. And for us, that was in literally since, you know, we built cash protection, I think, one of the one the one point version. So it was really right at the start of the products where we said, you know, if we're inside the JVM anyway, and we're able to monitor this stuff. And, you know, let's try and keep the application alive. I mean, we'd had applications ourselves,
I can't remember whether I told the story about that, about how we build fusion reactor, but we weren't, we were building massive enterprise scale cold fusion applications. This is back in 2005, when the wasn't, you know, that there wasn't another monitor available. And we said, Hey, you know, we want to be able to get inside cold fusion. So we can, you know, figure out exactly what's going on. And that's what drove us to, to build.
Okay, so how else do we differentiate like said, we've got three,
three tools, which really are very unique. The first one I'm going to show you is the profiler. And I've got one request here. And this is actually the request which we killed before, this is the right file slow. But I also because this round for I've got my profile are configured anything that runs longer than 10 seconds, profile it. And here you can see the profile. And if you take a look at that, and what may strike you is that that sort of looks like what looks like a stack trace. And the reason for that is, because that's a regenerating it. So what we're doing is we're taking excuse me, we're taking stack trace snapshots. And we're aggregating that data together to build a profile picture. So this is what you'd sort of call a statistical profiler. There's obviously there's different types of profile others
profilers. So this profile those which will basically show you how much time you're spending on each individual line of code, obviously, that would be too much of a performance hits for a production environment. But this, our particular profiler basically takes stack trace snapshots. And those are so quick, a stack trace snapshot in Java takes about one millisecond. So we can see here we've got 60 samples. So this particular profile cost in real time, somewhere between about 65 to 70 milliseconds to capture the data. And to aggregate it together. And see here is, obviously you're going to see your, your Java methods, because this is built from the
it's built from the stack. But I can see that I'm spending most of my time in Java. io.
And the majority of time was on this file clothes. And actually, what this particular application did this right file slow, is I've just got a, I'm just writing file data into a file, then loop, and I'm actually opening and closing the file within the loop. So obviously, you would do that, but that just demonstrates that, you know, the profile, I was able to analyze it and highlight that in our spending the majority of my time on the on file close. So clearly close is
it takes more time than a file, open boats, you know, every developer would be able to look at that, and very, very quickly figure it out.
Yeah, so that's the profile, a very useful tool and use it for analyzing performance bottlenecks. And you can see here, we show you the percentage of time spent in the method and the actual real time in in seconds.
So that would let you figure out which parts of your code we're running slow. Exactly,
David Tattersall 49:08
yeah, that's exactly what you'd use it for. So you're looking for hotspots, basically, in your code, that's what you would use the profile of far. And of course, very often, you know, a hotspot world manifest itself, actually, in production, one city running against production data. So, you know, I think a lot of people profile their code, but the profile that locally in their development environment, and certainly wants that code goes into production, the, the, you know, the real truth comes out there is, you know, there's no environment like production. And
that's why we believe that having this capable, let's say, and having these features available in production, this is really, you know, what differentiates fusion reactor. So the next feature is, is, is the memory profiler. And this a new feature within fusion ranks of seven. And I'm not sure whether anybody out there, whether you're familiar with Jay, visual VM, if you are they such a looks very, very much like Jay visual, and it's basically profiling the same he related data. And I can set a refresh rate here of one second, and I'm not sure if you can see that on the video. But because I've got these couple of applications running in the background, my he is permanently changing. And he how many objects have been allocated, I can see the live size. So this is the percentage of memory used
on the heap seldom percentage of heap used here. So I'm using in this particular case, between about 36 to 40% of my heat is being used for characters. And that is pretty typical in a Java and sort of, to a general are going to be Charles and bites. But what you would also see here is, if you've got
some class, which was utilizing memory, and you've got a memory leak, then you'd start to see that particular class bubble up. So you'd see the number of objects increasing, you'd see the percentage of memory used increasing. And what we've got is we've got the ability to take a snapshot. And I'm just click that take a snapshot here.
And that's the snapshot that I just took. And if I go into the heap snapshots, you I can relax a couple of those, and then perform a death. So one way to basically highlights differences, because obviously, you know, you're, you're monitoring this information, the heat is changing all the time. But you might detect a class, which you believe is causing some problems, and then say, okay, you know, I'm going to take a couple of snapshots here. And I'll just compare things. So this is a really, really useful screen, it will compare the two snapshots for you, you can see we've, we've just called it left and right here, and, but you can see the various different classes with
the number of objects which have been created. And the difference in size, both in objects, number of objects, and the Delta size in terms of heap utilization. So very, very useful in order to
be able to drill down and yeah, and look for memory leaks. Another feature we've got in here is,
if we see here, on the right hand side,
there's a little icon and behind that says GC roots, if I click on GC roots, and so basically met, many people think that garbage collection, that the way that it works is collect some discards dead objects. In reality,
garbage collection is doing the opposite. So what it's doing live objects are being tracked. And anything which isn't tracks is designated as garbage. And the GC roots basically, this is showing everything which is currently tracked. So you can think of this sort of as a tree. And within that tree, that's absolutely the different types of information which are part of juicy roots. But again, this you can drill into the GC roots for your application for a specific class. And, and you can see the memory, exact memory utilization and heavy objects are being created within that GC root component. So basically, you can see exactly which memory is being used. So again, very, very useful in isolating and detecting memory, and non billable lease or, you know, memory leaks, memory issues, makes it
so these are a lot of amazing features. David, I know, we need to wrap up in in about 10 minutes. So what are there any although Yeah,
David Tattersall 55:03
features that really stand out for you in this release. Okay. So the other thing that I like to show you which is really, really amazing is is the debugger and so you show that got a little example little jealous p page here. And I'm just passing
David Tattersall 55:27
into that. And if I pass a string in, always little Jess p page does is just do a string length. And so I've got 1919 characters here. If I remove that argument, and then call that I get a null pointer exception, essentially, because this thing was expecting an argument, and we didn't pass one in. So let's just jump into fusion reactor and take a look at what we've got. So if I go into the era history, so this is showing me all the errors which came up, which is also really, really useful, because you don't need to go hunting for them, you just find all your errors. Here, I see the top one is null pointer, Dutch, SP. And if I drill into that, I see all the transaction details, which we looked at before. But I've also got a new tab here called Earth details. And if I click on that guy, I can see fusion reactor tells me that I got a null pointer exception. And it tells me this was caused by and this is the stack of the points that this or occurred. And again, you know, like we saw before, if I click on that particular method, warm behold, it will instantly D compile it. And it's actually highlighting the line of code where that problem occurred. So just take a second just to sort of take that in. So fusion reactor knows that we had an exception, it's pinpointed the line of code, which calls the exception. And if I click here, I just set a breakpoint. So you mentioned this is your production environment, something's just occurred, you just had
an exception condition, you can literally go straight into fusion reactor, pinpoint the line of code, set a breakpoint. And if I close that sale, and then I run this again, watch what happens. So now you can see the SES connecting up at the top. So this tab didn't run through to completion. And if I go into fusion reactor, no, see a little bug, I put the top if I click bug, this is a thread which is currently running. And I don't even see that it's actually it says, timeout in 40, 3938,
this is counting down, I've given myself 60 seconds in order to intercept this thread. So I can change that by default. But at the moment, it's configured at 60 seconds. And within that 60 seconds, if I click on the debug icon, boom, I'm straight into a full blown id style debugger in production inside fusion reactor, there was nothing else to install nothing else to configure on the JVM. And it's all this is fusion reactor out of the box. And you can see here before we were seeing the actual
Java code, so the D compile Java code, now I'm seeing my source code. So you can sell fusion reactor word does my source code exist, and it will basically figure out what's it will translate the the points in the Java code,
we're that error code and relate that. So a line within your actual source code, and this is a jazz p finally here, but this works exactly the same for cold fusion. So if you pointed this at your cold fusion code, then it will pop straight up with, you know, this was at lines such and such in your, in your cold fusion, and I can see all the various different friends here. So again, I can scroll through these. And this is a really amazing thing, because very often
defects will occur at some point higher up in the stank. And but that issue actually propagates down and manifests itself at a lot of points. So, you know, by being able to scroll through the stack,
actually, I also see all the different variables, these are all the scope that points in the stack. I'm getting amazing insight here in Sioux what my, what my applications doing and you know, I'm, I'm dealing in production and safely and with very, very minimal overhead, and I can even go in and you'd see the reason why this broke his argument was no, and and I go in and modify about to be Michael, and then I hit resume
and that will run through to completion and long behold
David Tattersall 1:00:39
those Michael. So I was even able to modify a variable on the fly.
Really incredible capability that you've got here. And what else can we do? If we run that again, let's see what happens. Boom, it failed. So why did it fail this time, it felt this time because we instructed fusion reactor to only hold one single thread. And this is really one of the the differential one of the reasons why normally you wouldn't use a debugger in production. There's two key reasons. The first reason is performance. If you try and connect a debugger remotely, let's say with Eclipse, then that would work. But there's a debug transport protocol, which is exchange between Eclipse and between the server that you're debugging. And it's really it's, it's the processing of that debug protocol. That's what actually causes the main performance hits. And we don't have that at all. Why, because we're integrating into the debugger which is built into Java itself. And we're going again, through the JVM ci interface. So through the tools interface, which is very difficult, very tricky thing to do. But by doing that, there is no protocol because we coded directly at it. So if the debugger is running, the overhead is zero. It's zero. There is no overhead.
Wow, that's genius, David, it is it is. Well, I don't wear the genius but it's clever. And the always if folks wanted to try out fusion reactor, is there a demo edition, they can try it? Oh, sure. Yeah, those are a 14 day trial that you just go on. So
fusion reactors onto our web page.
David Tattersall 1:02:48
So dot com. And you can see here as a download page. And if you click on the download page,
and all you need to do is enter your your email address, and tell them that you know the robots and then click Generate child key and that will instantly generate generate your trunk he will also send you that trial key to your email address. And then you download the software. So we've got automated installers for Windows, Linux, and Mac 32 and 64 bits. We've also got fusion reactors, a Java agents, so you can do the jar file install, you've got to modify
the the Java rocks, but it's dead simple. You can literally, you know, install fusion reactor in a couple of minutes.
If you're using the debugger, there is a separate library for the debugger.
Oh, you get the here as well. So you need both the jar file and the debug library. But if you use the automated installer, it does it all for you. So a lot of people, a lot of times they see efforts and they're running the automated installers. That works really good. And if you go down to the bottom, and there's a bunch of videos, so here it showing manual installation on some cats,
there's a video on how to software activation is usually automatic. If you've got outbound internet access, it's all automated. If you don't have outbound internet access, then you need to do a so called manual installation. And there's a little video on the headset do that here. But it's dead simple. You know, usually you can get fusion reactor installed up and running in a couple of minutes. And we've got various different tutorials. There's a bunch of webinars that we've got, we've got various different videos that show you the products and the different features. We're on YouTube. So if you go on to the YouTube channel,
that's actually not the know that is just straight click to YouTube. But if you go up to the top, that's our YouTube channel. So you can see here, here's the
does a bunch of videos and these are all broken down into difference.
Yeah, difference video playlist. So we've got stuff focusing on the thief ogre or the profiler, all the different features that we've got, we've got videos on troubleshooting all kinds of different things.
That's great. That's great. Man. If people want to buy it, it's $39 a month for the regular 79 for the ultimate right. So
David Tattersall 1:05:53
pricing up beyond the pricing. But we offer two types of license, the subscription and so called perpetual pay once on it forever. So we believe in giving people choice. And so if you do subscription, you can either do monthly or annual, if you do annual, you get two months free. So standard starts at $39 ultimate at 79. So if you buy your it's 395, 90
for enterprise or 794 ultimate. And if you do the pay once it's 999, 1499,
or 1999 for ultimate, each of the perpetual licenses contains one years maintenance and maintenance following that is optional. And it's basically 20% of the product price. It's 199 to 99 or 399 for ultimate. And
you can see we've got all the difference. We show all the different features, we've got the different editions where you can look at what you get in each different edition. So the debugger profiler, the line profiler, and the memory profile and those are all ultimate features. And then you can see here what you get in the dash the Enterprise Edition with a dashboard you get the genomics MB metrics, you've got cloud watch System Monitor, we do a bunch of reporting daily, weekly and monthly reports and we've got a mobile application which gives you unlimited access to fusion mobile
Yeah, that's all included in enterprise and then all the core sort of metric key features also crash protection is also included in standard
all right we'll see we've got here under the sea features screen and we just added this for this release this is really nice this gives you basically a bunch of screenshots of the different areas of fusion reacts I think as over yeah at least I think there's faulty I think we've got 42 different screenshots here
and yeah you can drill into these take a look at them if you click for example click on dashboards then it will show you all the dashboard views if you click on crash protection you'll see some information on crash protection click on Jedi BC to see the Jedi bc stuff so I'll pretty straightforward and but you know gives you a really nice overview of what fusion reactor delivers
well well this is great I really appreciate you showing us all the new stuff and fusion reaction seven and it's pretty almost overwhelming how much stuff you've packed into this
David Tattersall 1:09:05
yeah and it's not all it didn't all come in fusion reactor seven but like said we've we've there was I think over 120 difference
other major features or improvements or bug fixes that the winds fusion reactor seven so there's really a lot of strain
well yeah okay so what will look forward to learning more about fusion reactor cloud another show and I you know I appreciate you coming on the show today David and showing all this I know it must be pretty hectic having only released did a week ago. Yeah,
David Tattersall 1:09:46
yeah, it was. It was pretty pretty hectic. But it's good to catch it. Should I hand over to you. Stop shares? Yeah, let's
stop screen share.
Yeah, I'm not sure
I have. Another interview I'm doing was right cash from Adobe in about one minute. So we do need to wrap this up. Okay.
David Tattersall 1:10:10
Okay. Well, thanks very much. Thanks for for having us. And yeah, I agree. Yeah,
it's always good having him. Hopefully we'll get our lawn in a future
episode as well. So. Okay, that'd be great. Okay, thanks a lot. Okay. Thank you, David. Bye.