Updated on 2022-06-02 GMT+08:00

Transactions

A transaction is usually an HTTP request. The process is as follows: user request > web server > database > web server > user request. In real life, a transaction is a one-time task. A user completes a task by using an application. In the example of an e-commerce application, querying a product is a transaction, and making a payment is also a transaction.

To complete a transaction, you may call multiple services. Any slow or error call may lead to slow responses. During routine O&M, you can analyze the transactions with slow responses to locate and solve application problems, thereby improving user experience.

Transaction Insights Page

Figure 1 Transaction insights page

On the Transactions page, Errors indicates the number of requests whose return code is greater than or equal to 400. Other requests are not included.

  1. Set a time range to view the following transaction details of an application:
    • Calls and errors
    • Total latency
  2. Click Create Group, select a transaction to move it to the new group, and then name the group.
  3. Click View Topology to view the topology of the transaction.
  4. Click More in the Operation column and select View Call Relationship from the drop-down list to view the tracing data of the transaction.

Analyzing Faults Based on Transactions

The following describes how to analyze a transaction with an extremely slow response:

  1. Log in to the APM console.
  2. In the navigation pane, choose Transactions.
  1. On the Transactions page, select a transaction with an extremely slow response from the transaction list.
  2. Click View Topology in the Operation column to view the topology and instance details of the transaction.

  3. Right-click an instance with an extremely slow response and choose Find Call-Chain from the shortcut menu. On the page that is displayed, further locate the fault based on call duration and other parameters.

Customizing Transactions

To precisely define transactions and collect tracing data, use the URI template to customize transactions and classify requests into different transactions. When the collector receives requests, custom transactions will be calculated first.

  1. On the Transactions page, click Custom Transaction Rule. A transaction consists of the request method and regular expression. It is in the format of {Request Method}_/{pattern}. Example: When the request methods are GET and POST and the regular expression is /{name}, the transaction is GET,POST_/{name}.

  2. Select one or more request methods. Request methods include GET, PUT, DELETE, POST, HEAD, CONNECT, OPTIONS, PATCH, TRACE, and Select all. Select all indicates all request methods.
  3. In the Regular Expression text box, enter a transaction rule and click OK. In this way, the custom transaction rule is added successfully.

    The regular expression uses the URI template matching mode of the Spring MVC framework. Example: @RequestMapping(path="/owners/{ownerId}/pets/{petId}", method=RequestMethod.GET), where ownerId and petId are variables.

    To add multiple custom transaction rules, click Add Rule.

    • A transaction rule must be 1 to 50 characters long. It must start with a slash (/) but cannot end with a slash. Only letters, digits, and special characters (?*|={}&) are allowed.
    • Both the question mark (?) and asterisk (*) can be used for fuzzy search. One question mark represents one character, one asterisk represents 0 to N characters between two slashes in a URI, and double asterisks represent infinite characters. Example: When you enter /first/*, /first/test can be returned but /first/test/test cannot. When you enter /first/**, both /first/test and /first/test/test can be returned.