Abstract:
Asynchronous handoffs between threads and other software components may be automatically detected, and the corresponding working objects may be tracked. The system may report monitoring information for an overall transaction that includes the original request and corresponding asynchronous requests. Automatically detecting asynchronous requests may include instrumenting a virtual machine, such as a Java Virtual Machine (JVM), to detect the creation of thread handoff objects and the object and/or thread execution. Thread handoff objects may automatically tracked, tracked based on data learned over time, tracked based on user input, and otherwise configured. In some embodiments, after detecting the creation of a thread handoff object, an identification of the object of the call may be identified as being tracked in another server or application.
Abstract:
The present technology adds code to a top level build configuration file of a configuration program that will gather metrics for each invocation of a build. These metrics are sent to a commonly accessible metric server for future analysis. The metrics are collected for a distributed engineering team over several machines. Compilation time metrics may then be collected for each compilation event and those metrics are analyzed by a common aggregator.
Abstract:
A dynamic service module is embedded in an agent and able to add functionality to the agent. The service module may manage .jar files for execution by the agent. The service module may receive the .jar files, provide them to an agent for execution, and may perform other functions. The agent may perform obfuscation in order to translate the .jar files into a modified version which may be more compatible with a particular agent. Once execution of the .jar file is complete, the agent may remove the .jar file as well as all trace of the .jar file. For example, the agent may remove byte code instrumentation that was installed as a result of the .jar file.
Abstract:
Distributed business transactions are monitored and problems associated with poor performance are identified. The problems may be associated with a particular portion of code that makes up one or more applications that perform the distributed business transaction being monitored. Portions of code may be replaced to correct the performance issues, by a tool that corrects detected performance issues in a distributed business transaction being monitored. Within a graphical representation, an indicator may be provided that represents a portion of code that is causing poor performance. The present system provides new code which may be used to replace the portion of code that is causing the problem. The retrieved code transmitted from a server to an agent on the machine that is experiencing the issue. The agents may receive the code, compile the code during runtime and replace the portion of code causing the performance issue with the compiled code.
Abstract:
An application which utilizes a single thread is monitored and context for the individual requests and business transactions operating on that platform are provided. A wrapper is placed is around an object that calls a request. The wrapper renames a request object. Request objects are renamed with a unique name when they are called. When a call stack is sampled, the sampler will retrieve the unique name. Performance data associated with the unique name may be correlated to a business transaction and particular request as metrics are subsequently analyzed. For subsequent reporting, such as call graph reporting, the report or call graph will have requests in the context of a particular business transaction and a particular request instance. This provides more context in reporting of an business application request for frameworks that utilize as single request for multiple threads.
Abstract:
The present technology utilizes agents to monitor and report data from Java virtual machines (JVM) to a controller as part of application performance monitoring. When a JVM is loaded, code defining an interface for agents is loaded as well. A determination may be made as to whether the loaded agent implements the interface defined at the JVM. If the loaded agent does not implement the interface, for example if it is missing one or more methods defined by the interface, the agent class may be modified to define the missing methods. The modification to the agent class may be made after compilation but before the class is loaded into the JVM.
Abstract:
A system monitors applications and network flows used during the business transaction to determine distributed business transaction anomalies caused at least in part by network performance issues. A network flow associated with a business transaction is monitored by a network agent. The network agent may capture packets, analyze the packets and other network data to determine one or more baselines, and dynamically compare subsequent network flow performance to those baselines to determine an anomaly. When an anomaly in a network flow is detected, this information may be provided to a user along with other data regarding a business transaction that is utilizing the network flow. Concurrently with the network agent monitoring, application agents may monitor one or more applications performing the business transaction. The present system reports performance data for a business transaction in terms of application performance and network performance, all in the context of a distributed business transaction.
Abstract:
The present technology correlates tasks between multiple threads of an application. A payload consisting of a task object may be identified as part of a method. Identification of the task object may be performed using instrumentation or some other method. Once the task object is identified, the payload may be instrumented to track the task object or payload and correlate the task object with other executing threads. Instrumenting the payload may include determining the constructor of the task object and instrumenting the task object constructors to determine what creates the task object. Once the source of a task object or payload is determined, the current thread having the task object as a parameter and another thread which creates the task may be tied together as part of a business transaction.
Abstract:
A system detects memory leaks in Node.JS applications. The memory leaks are associated with lines of code rather than particular objects. Lines of code associated with a memory leak is identified by object allocation tracking. Object allocation for lines of code is tracked. A heap snapshot may be captured at the same time at which the object allocation occurs. The results of the object allocation are processed, including removal of objects cleaned up by garbage collection. Objects remaining in the object allocation results are then searched for the end heap snapshot. For objects found in the heap snapshot, the corresponding lines of code that generate the objects are reported to administrators the application.
Abstract:
Business transactions and the nodes processing the transactions are monitored and actions are applied to one or more nodes when a performance issue is detected. A performance issue may relate to a metric associated with a transaction or node that processes the transaction. If a performance metric determined from data captured by monitoring does not satisfy a health rule, the policy determines which action should be performed to correct the performance of the node. When a problem is detected for multiple nodes, the present technology may address a subset of the multiple nodes rather than apply an action to each node experiencing the problem. When a solution is found to correct the problem with the subset of nodes, the solution may be applied to the other nodes experiencing the same problem.