US20170250890A1 - Asynchronous transactions reported as critical path - Google Patents
Asynchronous transactions reported as critical path Download PDFInfo
- Publication number
- US20170250890A1 US20170250890A1 US15/057,020 US201615057020A US2017250890A1 US 20170250890 A1 US20170250890 A1 US 20170250890A1 US 201615057020 A US201615057020 A US 201615057020A US 2017250890 A1 US2017250890 A1 US 2017250890A1
- Authority
- US
- United States
- Prior art keywords
- transaction
- methods
- critical path
- metrics
- execution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/14—Arrangements for monitoring or testing data switching networks using software, i.e. software packages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H04L67/32—
-
- H04L67/42—
Definitions
- This disclosure relates generally to monitoring web servers, and in particular to monitoring critical paths in asynchronous transactions executed by web servers.
- Web-based and mobile applications are common tools for delivering content and services to user computing devices. These applications are typically executed by web servers, which provide content to the computing devices by receiving requests from the computing devices and sending responses to the computing devices.
- web servers have processed requests synchronously. That is, any steps performed by the server to process the request were performed sequentially, with one step not performed until after the previous step has been completed.
- web servers are beginning to execute transactions asynchronously, in which processing steps may overlap in time.
- the performance of a web application is often quantified at least in part by the amount of time the web server takes to respond to a request received from a user computing device, since this duration affects the user's perception of the speed of the web application.
- developers often need to know the amount of time the server takes to perform each processing step necessary to respond to a request.
- determining the duration of a transaction is currently difficult. Relationships between processing steps in the transaction, such as methods calling other methods and methods blocking other methods from executing, are not always readily apparent in a web application. It is therefore currently difficult to identify particular processing steps that are slowing down a transaction.
- An agent running on a web server monitors an application provided by the web server.
- the web application is made up of one or more transactions, each of which include a series of application components executed by the web server to respond to a request.
- Each transaction has one or more methods each representing an operation of the web application, and the methods are asynchronously executed by the web server.
- the agent injects executable code into at least a subset of the methods that, when executed by the web server, cause the web server to send the agent metrics describing the methods.
- the metrics include identifiers of each executed transaction method and specify relationships between the methods. For example, the metrics may specify parent methods that call child methods, or methods that block other methods from executing.
- the agent Based on the received metrics, the agent identifies a transaction method completed at an end of the transaction. One or more other methods preceding the identified method in the transaction and affecting a duration of the transaction are determined based on the relationships between the transaction methods. The agent identifies the determined transaction methods and the method completed at the end of the transaction as a critical path of the transaction. The agent sends identifiers of the transaction methods on the critical path for display to a user.
- FIG. 1 illustrates a system environment for monitoring an application server, according to one embodiment.
- FIG. 2 is a block diagram illustrating modules within an agent, according to one embodiment.
- FIG. 3 is a flowchart illustrating a process for identifying a critical transaction path, according to one embodiment.
- FIGS. 4A-4D illustrate an example transaction in an application, according to one embodiment.
- FIGS. 5A-5B illustrate example reports illustrating a critical transaction path, according to one embodiment.
- FIG. 1 illustrates a system environment for monitoring a web server, according to one embodiment.
- the environment includes the web server 110 , a client device 130 , and a monitoring server 140 communicating over a network 150 .
- the client device 130 includes one or more computing devices capable of receiving user input as well as transmitting and/or receiving data via the network 150 .
- a client device 130 is a conventional computer system, such as a desktop or laptop computer.
- a client device 130 may be a device having computer functionality, such as a personal digital assistant (PDA), a mobile telephone, a smartphone or another suitable device.
- PDA personal digital assistant
- a client device 130 is configured to communicate via the network 150 .
- a client device 130 executes an application allowing a user of the client device 130 to interact with the web server 110 .
- a client device 110 executes a browser application to enable interaction between the client device 130 and the web server 110 via the network 150 .
- a client device 130 interacts with the web server 110 through an application programming interface (API) running on a native operating system of the client device 110 , such as IOS® or ANDROIDTM.
- API application programming interface
- a single client device 130 is shown in FIG. 1 , any number of client devices 130 may interact with the web server 110 via the network 150 .
- the client device 130 is configured to communicate with the web server 110 via the network 150 , which may comprise any combination of local area and/or wide area networks, using both wired and/or wireless communication systems.
- the network 150 uses standard communications technologies and/or protocols.
- the network 150 includes communication links using technologies such as Ethernet, 802.11, worldwide interoperability for microwave access (WiMAX), 3G, 4G, code division multiple access (CDMA), digital subscriber line (DSL), etc.
- networking protocols used for communicating via the network 150 include multiprotocol label switching (MPLS), transmission control protocol/Internet protocol (TCP/IP), hypertext transport protocol (HTTP), simple mail transfer protocol (SMTP), and file transfer protocol (FTP).
- Data exchanged over the network 150 may be represented using any suitable format, such as hypertext markup language (HTML) or extensible markup language (XML).
- all or some of the communication links of the network 150 may be encrypted using any suitable technique or techniques.
- the web server 110 operates an application 115 and an agent 120 .
- the application 115 may be any of a variety of types of mobile applications or web applications, and may represent a subset of operations of a client-server application.
- the application 115 operated by the web server 110 includes any server-side processes of a client-server application, such as retrieving and storing database content, generating user interfaces for rendering at the client device 130 , performing functions requested at the client device 130 , and communicating content to the client device 130 (e.g., over the network 150 ), while the client-side processes of the application include processes such as displaying content to a user and communicating requests to the web server 110 .
- the web server 110 serves a web page to a client device 110 for display to a user.
- the web server 110 may comprise one or more computing devices executing the functions of the application 115 , and the environment may include any number of web servers 110 operating any number of applications 115 .
- the functionality of the application 115 is quantized into one or more transactions.
- Each transaction is a series of application components executed by the web server 110 to respond to a request received from a client device 130 .
- a start of a transaction is defined as a time the web server 110 receives a request from a client device 130 (e.g., a request to send a portion of a webpage for display at the client device 130 ), while an end of the transaction is defined as a time the web server 110 returns a response to the request (e.g., sends the webpage to the client device 130 ).
- the end of the transaction may be a time the web server 110 begins sending the response, a time the web server 110 finishes sending the response, or otherwise defined relative to the response.
- the start and end of the transaction are specified points within the application 115 and not necessarily defined relative to a request and response.
- Each component of the transaction is executed by one or more threads of execution maintained by the web server 110 .
- the web server 110 executes one or more methods.
- a transaction method represents a group of software statements or commands that together represent a discrete operation of the application 115 .
- one transaction method of the application 115 may be a database query, while another transaction method performs a calculation using the data retrieved from the database.
- the web server 110 may execute the components asynchronously such that multiple methods may be executed simultaneously or during overlapping time periods. Some of the methods may also call or be called by other methods of the transaction.
- a first method that calls a second method of the transaction is referred to as a “parent” of the second method, while the second method is referred to as a “child” of the first method.
- the second method is not executed until after the first method calls the second method (e.g., after the first method has been completed), even if the first method is executed within a different thread than the second.
- Some methods may also block components of the transaction, such that the execution of the component is paused while the blocking method is executed.
- a first transaction component includes a first and third method and a second transaction component includes a second method, where the first method calls the second method and the second method calls the third method. While the second method is executing, the first component is blocked: no methods are executed on the first thread while the second method is being executed. When execution of the second method is completed, the third method is executed on the first thread.
- the agent 120 monitors performance of the application 115 , including processes running on the web server 110 , response time of the application 115 , transactions in the application 115 , the effect of backend processes on performance of the application 115 at user devices, and/or other information.
- the agent 120 is a set of software modules executed by the web server 110 along with the application 115 , and monitors the application 115 by injecting code into the application 115 .
- the injected code is executed by the web server 110 when selected methods of application 115 are executed.
- the methods monitored by the agent 120 may be manually selected by a developer of the application 115 or an administrator of the app server 110 , or may be automatically selected by the agent 120 . For example, the agent 120 may monitor every method of the application 115 .
- the injected code When executed, the injected code generates metrics that specify for each monitored method an identifier of the method, a duration of the execution of the method, children and/or parents of the method, and whether the method blocks any other application components from executing.
- the agent 120 aggregates the metrics to determine which methods are called during a transaction, a number of times each method was called, and the total duration of each method when executed.
- the agent 120 may also determine an exclusive execution time of each method that has one or more children, which represents the amount of time the parent method executed without considering the execution time of the child methods or the amount of time the parent method was blocked while the child methods were executed.
- the agent 120 uses the metrics to identify a critical path in each transaction of the application 115 .
- the critical path includes one or more methods that directly affect the duration of the transaction: if the execution time of a method on the critical path increases, the duration of the transaction will increase, and if the execution time of a method on the critical path decreases, the duration of the transaction will decrease.
- the agent 120 may also determine other methods in the transaction that are not on the critical path but are relevant to other properties of the transaction, such as memory utilization. For example, the agent 120 identifies a database call that did not contribute to the total duration of the transaction, but used a large amount of memory of the web server 110 .
- the monitoring server 140 monitors performance of the web server 110 .
- the monitoring server 140 may be hosted by an application monitoring service provider, and may monitor performance of any number of app servers.
- the monitoring server 140 is hosted by New Relic, Inc. and executes NEW RELIC APM.
- the monitoring server 140 provides the agent 120 to the web server 110 and receives data from the agent 120 .
- the monitoring server 140 receives reports from the agent 120 and formats data in the reports for analysis by an administrator of the web server 110 , enabling the administrator to address any performance issues in the application 115 .
- the monitoring server 140 generates plots illustrating execution times of methods on a critical path in a transaction. Reporting the execution time of the methods on the critical path enables the administrator to identify methods with long execution times and determine methods to target for decreasing the transaction time.
- FIG. 2 is a block diagram illustrating modules within the agent 120 , according to one embodiment.
- the agent 120 includes an instrumentation module 205 , a critical path identifier 210 , and a reporting module 215 .
- Other embodiments of the agent 120 may include fewer, additional, or different modules, and the functionality may be distributed differently between the modules.
- the instrumentation module 205 instruments the application 115 for monitoring by the agent 120 .
- the instrumentation module 205 injects executable instructions into selected methods of the application 115 .
- the instrumentation module 205 injects the instructions into each method to be monitored at the start and end of the method and at any references to other methods contained within the method. For example, the instrumentation module 205 injects instructions at a call to another method, a database call, or a blocking call.
- the code injected by the instrumentation module 205 is also executed. The executed instructions cause the web server 110 to generate the metrics of the transaction.
- the critical path identifier 210 receives the metrics from the application 115 and determines a critical path of each transaction associated with the application. To identify the critical path, the critical path identifier 210 traces backwards through the metrics of an executed transaction from an end of the transaction to the start of the transaction. For each method in the transaction, starting with the method at the end (e.g., the method returning a response to the client device 130 ), the critical path identifier 210 determines either a blocking method call within the method or a beginning of the method. If the method includes a blocking call, the critical path identifier 210 determines an earlier method in the transaction that is performing the blocking call.
- the critical path identifier 210 identifies an earlier method in the transaction that called the method.
- the critical path identifier 210 sequentially steps backward through the methods of the transaction in this manner until a start of the transaction is reached. Any methods hit while stepping backward through the transaction are identified as forming the critical path. A process for identifying a critical path is described further with respect to FIG. 3 .
- the reporting module 215 generates reports associated with the application 115 for display to a developer of the application 115 or an administrator of the web server 110 .
- the reports generated by the reporting module 215 provide information about the critical path of each transaction, including an identifier of each transaction method in the critical path.
- the reporting module 215 may also determine and report an execution time of each transaction method in the critical path.
- the reported execution time may be the time for the web server 110 to execute a given transaction method once, or may be an average or sum of the execution times of the method over several transactions
- FIG. 3 illustrates a process for identifying a critical path of a transaction associated with the application 115 , according to one embodiment.
- the steps of the process shown in FIG. 3 are performed by the agent 120 .
- the steps may be performed in different orders, and the process may include different, additional, or fewer steps.
- the process in FIG. 3 is described with respect to the example transaction shown in FIGS. 4A-D .
- the agent 120 receives 304 metrics for a transaction within the application 115 .
- the metrics identify methods called during the transaction and relationships between the methods of the transaction. For example, the metrics specify child and parent relationships between the methods and identify any methods that block other methods in the transaction.
- the metrics may also include the amount of time the web server 110 took to execute each method or a start time of each method, from which the agent 120 can calculate the execution time of each method.
- the agent 120 receives the metrics by inserting instructions into the application 115 that, when executed by the server 110 , cause the server 110 to send the agent 120 information about the instrumented methods.
- FIG. 4A An example representation of the metrics for a transaction are shown in FIG. 4A . In FIG.
- each block represents a method of the application 115 being executed by the web server 110 over an interval of time.
- block 404 B represents a method “processResults,” which is executed by the web server over a 9 millisecond interval beginning at 16 ms after a request was received.
- the example transaction includes five application components 402 A-E, which each includes one or more methods executed by the web server 110 .
- FIG. 4B illustrates an example of tracing backward through the transaction, starting at an end of a method 404 A returning a response to a client device 110 and tracking through the method 404 A as well as the methods 404 B and 404 C on the first component 402 A.
- the agent 120 uses the metrics to determine whether the component was blocked by another method or whether the method was called by an earlier method.
- FIG. 4C illustrates an example in which the first component 402 A was blocked from executing by the third component 402 C.
- the web server 110 since the third component 402 C includes methods that generate data necessary for continued processing on the first component 402 A, the web server 110 must execute the third component fully before processing on the first component can continue.
- the agent 120 identifies that the first component 402 A was blocked, and that the method 404 C was called by the third component 402 C. The agent 120 therefore continues tracing backward through the methods of the third component 402 C, as shown in FIG. 4C .
- the agent 120 determines the component was not blocked but instead determines 312 that a method was called by an earlier method in the transaction, the agent 120 traces back 314 through the component including the calling method. For example, in FIG. 4D , a method 404 D at the beginning of the third component 402 C is called by a method 404 E in the first component 402 A. Thus, once the agent 120 reaches the beginning of the method 404 D, the agent 120 continues tracing back through methods of the first component 404 E.
- the agent 120 determines 316 execution times of the methods on the critical path.
- the critical path includes any methods identified while tracing backward through the methods of the transaction.
- the agent 120 uses the start times of each method in the critical path as specified by the metrics, the agent 120 computes an amount of time the web server 110 took to execute each method.
- the agent 120 determines execution times of the methods for one iteration of the transaction.
- the agent 120 determines a number of times the transaction was executed over a given period of time (e.g., one day) and an aggregate execution time of the methods on the critical path.
- the agent 120 may compute a mean execution time for each method over the given time period or total execution time of each method during the time period.
- the agent 120 may also use the execution times of the methods on the critical path to determine an overall execution time of the transaction. For example, the agent 120 may compute a sum of the execution times of the methods during one iteration of the transaction, or may compute a sum of the mean execution times of the methods.
- the agent 120 generates 318 a report based on the critical path of the transaction.
- the report illustrates the critical path of the transaction and execution times of the methods on the critical path.
- FIG. 5A is an example report that may be generated by the agent 120 , which illustrates the critical path identified for the example transaction shown in FIGS. 4A-D .
- the report illustrates execution times of the methods on the critical path over time.
- FIG. 5B illustrates a report generated for a transaction that has a critical path of methods 402 A and 402 C.
- the example report in FIG. 5B includes a graph 510 showing how each method on the critical path contributes to the total transaction response time over an interval of time.
- the reports generated by the agent 120 may be sent to a developer of the application 115 or an administrator of the web server 110 , who can use the reported information to analyze the performance of the application 115 .
- a developer can use the report to decrease the execution time of the transactions by identifying methods that are significantly increasing the execution time and modifying those methods to execute more quickly.
- the developer can also use the critical path to verify that methods were executed in the intended order and at the correct time.
- a developer uses the report shown in FIG. 5B to observe that a particular transaction has a critical path including methods 402 A and 402 C.
- the developer also observes that the duration of the transaction increased significantly around 3:35 PM, to approximately 27 ms per execution of the transaction.
- the report shows that transaction method 402 C required approximately 22 ms on average to execute while transaction 402 A is executed in approximately 5 ms. Because the duration of method 402 C constitutes a large percentage of the total transaction time, the developer observes that decreasing the execution time of the method 402 C will likely have a large effect on the total execution time of the transaction.
- the developer may then modify the method 402 C to execute more quickly (e.g., in 11 ms), reducing the total average time of the transaction from 27 ms to 16 ms.
- the report generated by the agent 120 quickly identifies to the developer the transaction methods that most influence the duration of a transaction.
- the developer quickly and easily increases the apparent responsiveness and performance of the application 115 at the client devices 110 .
- a software module is implemented with a computer program product comprising a computer-readable medium containing computer program code, which can be executed by a computer processor for performing any or all of the steps, operations, or processes described.
- Embodiments of the disclosure may also relate to an apparatus for performing the operations herein.
- This apparatus may be specially constructed for the required purposes, and/or it may comprise a general-purpose computing device selectively activated or reconfigured by a computer program stored in the computer.
- a computer program may be stored in a tangible computer readable storage medium or any type of media suitable for storing electronic instructions, and coupled to a computer system bus.
- any computing systems referred to in the specification may include a single processor or may be architectures employing multiple processor designs for increased computing capability.
- Embodiments of the disclosure may also relate to a computer data signal embodied in a carrier wave, where the computer data signal includes any embodiment of a computer program product or other data combination described herein.
- the computer data signal is a product that is presented in a tangible medium or carrier wave and modulated or otherwise encoded in the carrier wave, which is tangible, and transmitted according to any suitable transmission method.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
- General Health & Medical Sciences (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
Abstract
Description
- This disclosure relates generally to monitoring web servers, and in particular to monitoring critical paths in asynchronous transactions executed by web servers.
- Web-based and mobile applications are common tools for delivering content and services to user computing devices. These applications are typically executed by web servers, which provide content to the computing devices by receiving requests from the computing devices and sending responses to the computing devices. Historically, web servers have processed requests synchronously. That is, any steps performed by the server to process the request were performed sequentially, with one step not performed until after the previous step has been completed. To increase the speed at which web servers can respond to requests, web servers are beginning to execute transactions asynchronously, in which processing steps may overlap in time.
- The performance of a web application is often quantified at least in part by the amount of time the web server takes to respond to a request received from a user computing device, since this duration affects the user's perception of the speed of the web application. To improve the performance of the application, developers often need to know the amount of time the server takes to perform each processing step necessary to respond to a request. However, determining the duration of a transaction is currently difficult. Relationships between processing steps in the transaction, such as methods calling other methods and methods blocking other methods from executing, are not always readily apparent in a web application. It is therefore currently difficult to identify particular processing steps that are slowing down a transaction.
- An agent running on a web server monitors an application provided by the web server. The web application is made up of one or more transactions, each of which include a series of application components executed by the web server to respond to a request. Each transaction has one or more methods each representing an operation of the web application, and the methods are asynchronously executed by the web server. To monitor the web application, the agent injects executable code into at least a subset of the methods that, when executed by the web server, cause the web server to send the agent metrics describing the methods. In one embodiment, the metrics include identifiers of each executed transaction method and specify relationships between the methods. For example, the metrics may specify parent methods that call child methods, or methods that block other methods from executing.
- Based on the received metrics, the agent identifies a transaction method completed at an end of the transaction. One or more other methods preceding the identified method in the transaction and affecting a duration of the transaction are determined based on the relationships between the transaction methods. The agent identifies the determined transaction methods and the method completed at the end of the transaction as a critical path of the transaction. The agent sends identifiers of the transaction methods on the critical path for display to a user.
-
FIG. 1 illustrates a system environment for monitoring an application server, according to one embodiment. -
FIG. 2 is a block diagram illustrating modules within an agent, according to one embodiment. -
FIG. 3 is a flowchart illustrating a process for identifying a critical transaction path, according to one embodiment. -
FIGS. 4A-4D illustrate an example transaction in an application, according to one embodiment. -
FIGS. 5A-5B illustrate example reports illustrating a critical transaction path, according to one embodiment. - The figures depict various embodiments of the present disclosure for purposes of illustration only. One skilled in the art will readily recognize from the following discussion that alternative embodiments of the structures and methods illustrated herein may be employed without departing from the principles of the disclosure described herein.
-
FIG. 1 illustrates a system environment for monitoring a web server, according to one embodiment. In one embodiment, the environment includes theweb server 110, aclient device 130, and amonitoring server 140 communicating over anetwork 150. - The
client device 130 includes one or more computing devices capable of receiving user input as well as transmitting and/or receiving data via thenetwork 150. In one embodiment, aclient device 130 is a conventional computer system, such as a desktop or laptop computer. Alternatively, aclient device 130 may be a device having computer functionality, such as a personal digital assistant (PDA), a mobile telephone, a smartphone or another suitable device. Aclient device 130 is configured to communicate via thenetwork 150. In one embodiment, aclient device 130 executes an application allowing a user of theclient device 130 to interact with theweb server 110. For example, aclient device 110 executes a browser application to enable interaction between theclient device 130 and theweb server 110 via thenetwork 150. In another embodiment, aclient device 130 interacts with theweb server 110 through an application programming interface (API) running on a native operating system of theclient device 110, such as IOS® or ANDROID™. Although asingle client device 130 is shown inFIG. 1 , any number ofclient devices 130 may interact with theweb server 110 via thenetwork 150. - The
client device 130 is configured to communicate with theweb server 110 via thenetwork 150, which may comprise any combination of local area and/or wide area networks, using both wired and/or wireless communication systems. In one embodiment, thenetwork 150 uses standard communications technologies and/or protocols. For example, thenetwork 150 includes communication links using technologies such as Ethernet, 802.11, worldwide interoperability for microwave access (WiMAX), 3G, 4G, code division multiple access (CDMA), digital subscriber line (DSL), etc. Examples of networking protocols used for communicating via thenetwork 150 include multiprotocol label switching (MPLS), transmission control protocol/Internet protocol (TCP/IP), hypertext transport protocol (HTTP), simple mail transfer protocol (SMTP), and file transfer protocol (FTP). Data exchanged over thenetwork 150 may be represented using any suitable format, such as hypertext markup language (HTML) or extensible markup language (XML). In some embodiments, all or some of the communication links of thenetwork 150 may be encrypted using any suitable technique or techniques. - The
web server 110 operates anapplication 115 and anagent 120. Theapplication 115 may be any of a variety of types of mobile applications or web applications, and may represent a subset of operations of a client-server application. Theapplication 115 operated by theweb server 110 includes any server-side processes of a client-server application, such as retrieving and storing database content, generating user interfaces for rendering at theclient device 130, performing functions requested at theclient device 130, and communicating content to the client device 130 (e.g., over the network 150), while the client-side processes of the application include processes such as displaying content to a user and communicating requests to theweb server 110. For example, theweb server 110 serves a web page to aclient device 110 for display to a user. Although asingle web server 110 is shown inFIG. 1 , theweb server 110 may comprise one or more computing devices executing the functions of theapplication 115, and the environment may include any number ofweb servers 110 operating any number ofapplications 115. - In one embodiment, the functionality of the
application 115 is quantized into one or more transactions. Each transaction is a series of application components executed by theweb server 110 to respond to a request received from aclient device 130. In one embodiment, a start of a transaction is defined as a time theweb server 110 receives a request from a client device 130 (e.g., a request to send a portion of a webpage for display at the client device 130), while an end of the transaction is defined as a time theweb server 110 returns a response to the request (e.g., sends the webpage to the client device 130). The end of the transaction may be a time theweb server 110 begins sending the response, a time theweb server 110 finishes sending the response, or otherwise defined relative to the response. In another embodiment, the start and end of the transaction are specified points within theapplication 115 and not necessarily defined relative to a request and response. - Each component of the transaction is executed by one or more threads of execution maintained by the
web server 110. Within each component, theweb server 110 executes one or more methods. A transaction method represents a group of software statements or commands that together represent a discrete operation of theapplication 115. For example, one transaction method of theapplication 115 may be a database query, while another transaction method performs a calculation using the data retrieved from the database. Theweb server 110 may execute the components asynchronously such that multiple methods may be executed simultaneously or during overlapping time periods. Some of the methods may also call or be called by other methods of the transaction. A first method that calls a second method of the transaction is referred to as a “parent” of the second method, while the second method is referred to as a “child” of the first method. As a child of the first method, the second method is not executed until after the first method calls the second method (e.g., after the first method has been completed), even if the first method is executed within a different thread than the second. Some methods may also block components of the transaction, such that the execution of the component is paused while the blocking method is executed. For example, a first transaction component includes a first and third method and a second transaction component includes a second method, where the first method calls the second method and the second method calls the third method. While the second method is executing, the first component is blocked: no methods are executed on the first thread while the second method is being executed. When execution of the second method is completed, the third method is executed on the first thread. - The
agent 120 monitors performance of theapplication 115, including processes running on theweb server 110, response time of theapplication 115, transactions in theapplication 115, the effect of backend processes on performance of theapplication 115 at user devices, and/or other information. Theagent 120 is a set of software modules executed by theweb server 110 along with theapplication 115, and monitors theapplication 115 by injecting code into theapplication 115. The injected code is executed by theweb server 110 when selected methods ofapplication 115 are executed. The methods monitored by theagent 120 may be manually selected by a developer of theapplication 115 or an administrator of theapp server 110, or may be automatically selected by theagent 120. For example, theagent 120 may monitor every method of theapplication 115. When executed, the injected code generates metrics that specify for each monitored method an identifier of the method, a duration of the execution of the method, children and/or parents of the method, and whether the method blocks any other application components from executing. Theagent 120 aggregates the metrics to determine which methods are called during a transaction, a number of times each method was called, and the total duration of each method when executed. Theagent 120 may also determine an exclusive execution time of each method that has one or more children, which represents the amount of time the parent method executed without considering the execution time of the child methods or the amount of time the parent method was blocked while the child methods were executed. - The
agent 120 uses the metrics to identify a critical path in each transaction of theapplication 115. The critical path includes one or more methods that directly affect the duration of the transaction: if the execution time of a method on the critical path increases, the duration of the transaction will increase, and if the execution time of a method on the critical path decreases, the duration of the transaction will decrease. Theagent 120 may also determine other methods in the transaction that are not on the critical path but are relevant to other properties of the transaction, such as memory utilization. For example, theagent 120 identifies a database call that did not contribute to the total duration of the transaction, but used a large amount of memory of theweb server 110. - The
monitoring server 140 monitors performance of theweb server 110. Themonitoring server 140 may be hosted by an application monitoring service provider, and may monitor performance of any number of app servers. In one embodiment, themonitoring server 140 is hosted by New Relic, Inc. and executes NEW RELIC APM. To monitor theweb server 110, themonitoring server 140 provides theagent 120 to theweb server 110 and receives data from theagent 120. Themonitoring server 140 receives reports from theagent 120 and formats data in the reports for analysis by an administrator of theweb server 110, enabling the administrator to address any performance issues in theapplication 115. For example, themonitoring server 140 generates plots illustrating execution times of methods on a critical path in a transaction. Reporting the execution time of the methods on the critical path enables the administrator to identify methods with long execution times and determine methods to target for decreasing the transaction time. -
FIG. 2 is a block diagram illustrating modules within theagent 120, according to one embodiment. As shown inFIG. 2 , one embodiment of theagent 120 includes aninstrumentation module 205, acritical path identifier 210, and areporting module 215. Other embodiments of theagent 120 may include fewer, additional, or different modules, and the functionality may be distributed differently between the modules. - The
instrumentation module 205 instruments theapplication 115 for monitoring by theagent 120. In one embodiment, to instrument theapplication 115, theinstrumentation module 205 injects executable instructions into selected methods of theapplication 115. In one embodiment, theinstrumentation module 205 injects the instructions into each method to be monitored at the start and end of the method and at any references to other methods contained within the method. For example, theinstrumentation module 205 injects instructions at a call to another method, a database call, or a blocking call. When the instrumented methods are executed by theweb server 110, the code injected by theinstrumentation module 205 is also executed. The executed instructions cause theweb server 110 to generate the metrics of the transaction. - The
critical path identifier 210 receives the metrics from theapplication 115 and determines a critical path of each transaction associated with the application. To identify the critical path, thecritical path identifier 210 traces backwards through the metrics of an executed transaction from an end of the transaction to the start of the transaction. For each method in the transaction, starting with the method at the end (e.g., the method returning a response to the client device 130), thecritical path identifier 210 determines either a blocking method call within the method or a beginning of the method. If the method includes a blocking call, thecritical path identifier 210 determines an earlier method in the transaction that is performing the blocking call. If thecritical path identifier 210 reaches a beginning of the method, thecritical path identifier 210 identifies an earlier method in the transaction that called the method. Thecritical path identifier 210 sequentially steps backward through the methods of the transaction in this manner until a start of the transaction is reached. Any methods hit while stepping backward through the transaction are identified as forming the critical path. A process for identifying a critical path is described further with respect toFIG. 3 . - The
reporting module 215 generates reports associated with theapplication 115 for display to a developer of theapplication 115 or an administrator of theweb server 110. The reports generated by thereporting module 215 provide information about the critical path of each transaction, including an identifier of each transaction method in the critical path. Thereporting module 215 may also determine and report an execution time of each transaction method in the critical path. The reported execution time may be the time for theweb server 110 to execute a given transaction method once, or may be an average or sum of the execution times of the method over several transactions -
FIG. 3 illustrates a process for identifying a critical path of a transaction associated with theapplication 115, according to one embodiment. In one embodiment, the steps of the process shown inFIG. 3 are performed by theagent 120. In other embodiments, the steps may be performed in different orders, and the process may include different, additional, or fewer steps. The process inFIG. 3 is described with respect to the example transaction shown inFIGS. 4A-D . - The
agent 120 receives 304 metrics for a transaction within theapplication 115. The metrics identify methods called during the transaction and relationships between the methods of the transaction. For example, the metrics specify child and parent relationships between the methods and identify any methods that block other methods in the transaction. The metrics may also include the amount of time theweb server 110 took to execute each method or a start time of each method, from which theagent 120 can calculate the execution time of each method. In one embodiment, theagent 120 receives the metrics by inserting instructions into theapplication 115 that, when executed by theserver 110, cause theserver 110 to send theagent 120 information about the instrumented methods. An example representation of the metrics for a transaction are shown inFIG. 4A . InFIG. 4A , each block represents a method of theapplication 115 being executed by theweb server 110 over an interval of time. For example, block 404B represents a method “processResults,” which is executed by the web server over a 9 millisecond interval beginning at 16 ms after a request was received. The example transaction includes fiveapplication components 402A-E, which each includes one or more methods executed by theweb server 110. - Starting with the transaction component including the last method executed by the
web server 110 during the transaction, theagent 120 traces 306 backward through the methods of the transaction.FIG. 4B illustrates an example of tracing backward through the transaction, starting at an end of amethod 404A returning a response to aclient device 110 and tracking through themethod 404A as well as themethods first component 402A. At the beginning of each method, theagent 120 uses the metrics to determine whether the component was blocked by another method or whether the method was called by an earlier method. - If the
agent 120 determines 308 (FIG. 3 ) that the component was blocked by an earlier method, theagent 120 traces back 310 through the blocked-on component.FIG. 4C illustrates an example in which thefirst component 402A was blocked from executing by thethird component 402C. For example, since thethird component 402C includes methods that generate data necessary for continued processing on thefirst component 402A, theweb server 110 must execute the third component fully before processing on the first component can continue. In the example ofFIG. 4C , theagent 120 identifies that thefirst component 402A was blocked, and that themethod 404C was called by thethird component 402C. Theagent 120 therefore continues tracing backward through the methods of thethird component 402C, as shown inFIG. 4C . - If the
agent 120 determines the component was not blocked but instead determines 312 that a method was called by an earlier method in the transaction, theagent 120 traces back 314 through the component including the calling method. For example, inFIG. 4D , amethod 404D at the beginning of thethird component 402C is called by amethod 404E in thefirst component 402A. Thus, once theagent 120 reaches the beginning of themethod 404D, theagent 120 continues tracing back through methods of thefirst component 404E. - When the
agent 120 reaches the beginning of the transaction (e.g., when the current component is not blocked and the earliest method in the component is not called by another method), theagent 120 determines 316 execution times of the methods on the critical path. The critical path includes any methods identified while tracing backward through the methods of the transaction. Using the start times of each method in the critical path as specified by the metrics, theagent 120 computes an amount of time theweb server 110 took to execute each method. In one embodiment, theagent 120 determines execution times of the methods for one iteration of the transaction. In another embodiment, theagent 120 determines a number of times the transaction was executed over a given period of time (e.g., one day) and an aggregate execution time of the methods on the critical path. For example, theagent 120 may compute a mean execution time for each method over the given time period or total execution time of each method during the time period. Theagent 120 may also use the execution times of the methods on the critical path to determine an overall execution time of the transaction. For example, theagent 120 may compute a sum of the execution times of the methods during one iteration of the transaction, or may compute a sum of the mean execution times of the methods. - The
agent 120 generates 318 a report based on the critical path of the transaction. In one embodiment, the report illustrates the critical path of the transaction and execution times of the methods on the critical path.FIG. 5A is an example report that may be generated by theagent 120, which illustrates the critical path identified for the example transaction shown inFIGS. 4A-D . In another embodiment, the report illustrates execution times of the methods on the critical path over time. For example,FIG. 5B illustrates a report generated for a transaction that has a critical path ofmethods FIG. 5B includes agraph 510 showing how each method on the critical path contributes to the total transaction response time over an interval of time. - The reports generated by the
agent 120 may be sent to a developer of theapplication 115 or an administrator of theweb server 110, who can use the reported information to analyze the performance of theapplication 115. For example, a developer can use the report to decrease the execution time of the transactions by identifying methods that are significantly increasing the execution time and modifying those methods to execute more quickly. The developer can also use the critical path to verify that methods were executed in the intended order and at the correct time. - For example, a developer uses the report shown in
FIG. 5B to observe that a particular transaction has a criticalpath including methods transaction method 402C required approximately 22 ms on average to execute whiletransaction 402A is executed in approximately 5 ms. Because the duration ofmethod 402C constitutes a large percentage of the total transaction time, the developer observes that decreasing the execution time of themethod 402C will likely have a large effect on the total execution time of the transaction. The developer may then modify themethod 402C to execute more quickly (e.g., in 11 ms), reducing the total average time of the transaction from 27 ms to 16 ms. Thus, the report generated by theagent 120 quickly identifies to the developer the transaction methods that most influence the duration of a transaction. By reducing the execution time of the specific method contributing the most to the transaction duration (and not, for example, spending time improving the execution time of methods that are relatively slow but not on the critical path), the developer quickly and easily increases the apparent responsiveness and performance of theapplication 115 at theclient devices 110. - The foregoing description of the embodiments of the disclosure has been presented for the purpose of illustration; it is not intended to be exhaustive or to limit the disclosure to the precise forms disclosed. Persons skilled in the relevant art can appreciate that many modifications and variations are possible in light of the above disclosure.
- Some portions of this description describe the embodiments of the disclosure in terms of algorithms and symbolic representations of operations on information. These algorithmic descriptions and representations are commonly used by those skilled in the data processing arts to convey the substance of their work effectively to others skilled in the art. These operations, while described functionally, computationally, or logically, are understood to be implemented by computer programs or equivalent electrical circuits, microcode, or the like. Furthermore, it has also proven convenient at times, to refer to these arrangements of operations as modules, without loss of generality. The described operations and their associated modules may be embodied in software, firmware, hardware, or any combinations thereof.
- Any of the steps, operations, or processes described herein may be performed or implemented with one or more hardware or software modules, alone or in combination with other devices. In one embodiment, a software module is implemented with a computer program product comprising a computer-readable medium containing computer program code, which can be executed by a computer processor for performing any or all of the steps, operations, or processes described.
- Embodiments of the disclosure may also relate to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, and/or it may comprise a general-purpose computing device selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a tangible computer readable storage medium or any type of media suitable for storing electronic instructions, and coupled to a computer system bus. Furthermore, any computing systems referred to in the specification may include a single processor or may be architectures employing multiple processor designs for increased computing capability.
- Embodiments of the disclosure may also relate to a computer data signal embodied in a carrier wave, where the computer data signal includes any embodiment of a computer program product or other data combination described herein. The computer data signal is a product that is presented in a tangible medium or carrier wave and modulated or otherwise encoded in the carrier wave, which is tangible, and transmitted according to any suitable transmission method.
- Finally, the language used in the specification has been principally selected for readability and instructional purposes, and it may not have been selected to delineate or circumscribe the inventive subject matter. It is therefore intended that the scope of the disclosure be limited not by this detailed description, but rather by any claims that issue on an application based hereon. Accordingly, the disclosure of the embodiments of the disclosure is intended to be illustrative, but not limiting, of the scope of the invention.
Claims (18)
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/057,020 US20170250890A1 (en) | 2016-02-29 | 2016-02-29 | Asynchronous transactions reported as critical path |
US17/145,166 US11200086B1 (en) | 2016-02-29 | 2021-01-08 | Asynchronous transactions reported as critical path |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/057,020 US20170250890A1 (en) | 2016-02-29 | 2016-02-29 | Asynchronous transactions reported as critical path |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/145,166 Continuation US11200086B1 (en) | 2016-02-29 | 2021-01-08 | Asynchronous transactions reported as critical path |
Publications (1)
Publication Number | Publication Date |
---|---|
US20170250890A1 true US20170250890A1 (en) | 2017-08-31 |
Family
ID=59679009
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/057,020 Abandoned US20170250890A1 (en) | 2016-02-29 | 2016-02-29 | Asynchronous transactions reported as critical path |
US17/145,166 Active US11200086B1 (en) | 2016-02-29 | 2021-01-08 | Asynchronous transactions reported as critical path |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/145,166 Active US11200086B1 (en) | 2016-02-29 | 2021-01-08 | Asynchronous transactions reported as critical path |
Country Status (1)
Country | Link |
---|---|
US (2) | US20170250890A1 (en) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10305918B1 (en) * | 2016-01-27 | 2019-05-28 | Vmware Inc. | Monitoring for hybrid applications |
WO2021029951A1 (en) * | 2019-08-14 | 2021-02-18 | Microsoft Technology Licensing, Llc | Orchestration and scheduling of services |
US20210294717A1 (en) * | 2020-03-23 | 2021-09-23 | Ebay Inc. | Graph analysis and database for aggregated distributed trace flows |
WO2021243574A1 (en) * | 2020-06-02 | 2021-12-09 | 深圳市欢太科技有限公司 | Detection method for user information acquisition in violation of regulations and related device |
US11327973B2 (en) * | 2020-01-24 | 2022-05-10 | International Business Machines Corporation | Critical path analysis of activity trace files |
US20220357978A1 (en) * | 2021-05-04 | 2022-11-10 | Microsoft Technology Licensing, Llc | Automatic Code Path Determination |
US11714616B2 (en) | 2019-06-28 | 2023-08-01 | Microsoft Technology Licensing, Llc | Compilation and execution of source code as services |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014070775A1 (en) * | 2012-10-29 | 2014-05-08 | Realization Technologies, Inc. | Workflow-based project management |
US9405654B2 (en) * | 2013-06-20 | 2016-08-02 | Microsoft Technology Licensing, Llc | Monitoring mobile application performance |
US20170236082A1 (en) * | 2015-04-09 | 2017-08-17 | NetSuite Inc. | System and methods for real time display of supply chain and data processing of related tasks and events |
US10031815B2 (en) * | 2015-06-29 | 2018-07-24 | Ca, Inc. | Tracking health status in software components |
US10038736B2 (en) * | 2016-02-16 | 2018-07-31 | Microsoft Technology Licensing, Llc | Real user monitoring of single-page applications |
-
2016
- 2016-02-29 US US15/057,020 patent/US20170250890A1/en not_active Abandoned
-
2021
- 2021-01-08 US US17/145,166 patent/US11200086B1/en active Active
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10305918B1 (en) * | 2016-01-27 | 2019-05-28 | Vmware Inc. | Monitoring for hybrid applications |
US20190273753A1 (en) * | 2016-01-27 | 2019-09-05 | Vmware, Inc. | Monitoring for hybrid applications |
US10645103B2 (en) * | 2016-01-27 | 2020-05-05 | Vmware, Inc. | Monitoring for hybrid applications |
US11714616B2 (en) | 2019-06-28 | 2023-08-01 | Microsoft Technology Licensing, Llc | Compilation and execution of source code as services |
US11537446B2 (en) | 2019-08-14 | 2022-12-27 | Microsoft Technology Licensing, Llc | Orchestration and scheduling of services |
WO2021029951A1 (en) * | 2019-08-14 | 2021-02-18 | Microsoft Technology Licensing, Llc | Orchestration and scheduling of services |
US11327973B2 (en) * | 2020-01-24 | 2022-05-10 | International Business Machines Corporation | Critical path analysis of activity trace files |
US20210294717A1 (en) * | 2020-03-23 | 2021-09-23 | Ebay Inc. | Graph analysis and database for aggregated distributed trace flows |
US11768755B2 (en) * | 2020-03-23 | 2023-09-26 | Ebay Inc. | Graph analysis and database for aggregated distributed trace flows |
WO2021243574A1 (en) * | 2020-06-02 | 2021-12-09 | 深圳市欢太科技有限公司 | Detection method for user information acquisition in violation of regulations and related device |
US20220357978A1 (en) * | 2021-05-04 | 2022-11-10 | Microsoft Technology Licensing, Llc | Automatic Code Path Determination |
WO2022235384A1 (en) * | 2021-05-04 | 2022-11-10 | Microsoft Technology Licensing, Llc | Critical path determination of computer program using backwards traversal |
US11720394B2 (en) * | 2021-05-04 | 2023-08-08 | Microsoft Technology Licensing, Llc | Automatic code path determination |
Also Published As
Publication number | Publication date |
---|---|
US11200086B1 (en) | 2021-12-14 |
US20210373936A1 (en) | 2021-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11200086B1 (en) | Asynchronous transactions reported as critical path | |
US10158541B2 (en) | Group server performance correction via actions to server subset | |
US10904112B2 (en) | Automatic capture of detailed analysis information based on remote server analysis | |
US20170316321A1 (en) | Predictive rollup and caching for application performance data | |
WO2020167572A1 (en) | Determining end times for single page applications | |
US20200050526A1 (en) | Identifying the root cause of an issue observed during application execution | |
US10452469B2 (en) | Server performance correction using remote server actions | |
WO2016192488A1 (en) | Rolling release assessment method, device, and system | |
US10862780B2 (en) | Automatic web page load detection | |
EP3422210A1 (en) | Method, device, and system for processing data in webpage | |
CN111106976B (en) | Detection method and device for CDN network, electronic equipment and readable storage medium | |
US20180159724A1 (en) | Automatic task tracking | |
US11250100B2 (en) | Cause-based event correlation to virtual page transitions in single page applications | |
US10432490B2 (en) | Monitoring single content page application transitions | |
US11622020B2 (en) | Push control | |
CN104796929B (en) | Network debugging method and device | |
US11076023B1 (en) | Critical path estimation for accelerated and optimal loading of web pages | |
US10719489B1 (en) | Custom video metrics management platform | |
US20200304557A1 (en) | Accurately determining web page visually complete time | |
US10846200B2 (en) | Mid-method instrumentation | |
CN114461485A (en) | Resource loading monitoring method, device, equipment and storage medium | |
US9858549B2 (en) | Business transaction resource usage tracking | |
US10931553B1 (en) | Evaluating network speed by multiple parallel data exchanges between a client device and multiple servers via the network | |
CN110852537A (en) | Service quality detection method and device | |
US20240004734A1 (en) | Event processing systems and methods |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
AS | Assignment |
Owner name: NEW RELIC, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:PULS, ASHLEY EMMONS;HAYES, MICHAEL;CUNNINGHAM, HOWARD G., JR.;AND OTHERS;SIGNING DATES FROM 20180615 TO 20200124;REEL/FRAME:051891/0582 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |