.. system_metrics_commands_transactions: Report Transaction Commands --------------------------- .. index:: voss;voss report transaction .. _19.1.1|VOSS-489: .. important:: On a Modular Architecture deployment, ``voss`` system specific commands can only be run on application nodes and for Unified and Single Node architectures, *not* on database or web proxy type nodes. VOSS Automate provides a set of utilities available to provide transaction metrics. The commands are typically used to inspect and monitor transaction performance, for example in the case where transaction performance issues are encountered. .. note:: For clusters, the number of workers are set to be the total default for 4 unified nodes (4*30 =120). Profile ....... A command is available that aggregates the transactions performed during the given date-time range by grouping them by model type and sorting them by duration. A **Pct** column is also available to indicate the percentage of the interval time used by the transaction. The command and parameters are: * **voss report transaction profile [OPTIONS] START_TIME END_TIME** * ``START_TIME`` - The date-time value from which to start the sample collection. * ``END_TIME`` - The date-time value from which to start the sample collection. Valid formats: `'%Y-%m-%d_%H:%M:%S', '%Y-%m-%d_%H:%M', '%Y-%m-%d'` Example: :: platform@VOSS:~$ voss report transaction profile 2019-05-06_16:39 2019-05-06_23:00 Entity Operation Calls RespTime QTime SvcTime Pct tool/DataImport execute 11.00 3128.24 1.11 3127.13 99.95 data/User update 2.00 0.86 0.09 0.77 0.03 data/Schedule update 1.00 0.28 0.18 0.10 0.01 data/PasswordReset create 2.00 0.17 0.10 0.08 0.01 data/Schedule Execute 1.00 0.15 0.00 0.14 0.00 Throughput .......... Given a number of output rows to display and duration in seconds between samples, a command is available to display the information about transaction throughput during the selected sample periods. Throughput is the projected count per minute based on the sample interval and transaction count. The command and parameters are: * **voss report transaction throughput [OPTIONS] START_TIME INTERVALS DURATION** * ``START_TIME`` - The date-time value from which to start the sample collection. Valid formats: `'%Y-%m-%d_%H:%M:%S', '%Y-%m-%d_%H:%M', '%Y-%m-%d'` * ``INTERVALS`` - Specifies the number of samples to display. * ``DURATION`` - The duration of the samples in seconds, for example every 30 seconds or every 60 seconds. The command output shows parent and child transaction data in columns: * **Count**: Transaction count * **Utilisation**: ratio of total workers (120) used: ( (**Throughput** * **RespTime**) / 120 ) * 100 Example of parent transactions: formula: ``( (Throughput * RespTime) / 120 ) * 100`` calculation: ``(2.00 * 4.86 / 120) * 100 = 9.71`` * **Qtime**: ratio: (total queue time for transactions at time stamp / transaction count at the time stamp). Else, zero if no transactions. * **SvcTime**: ratio: (total service time for transactions at time stamp / transaction count at the time stamp). Else, zero if no transactions. * **RespTime**: calculated as total transaction time (**Qtime** + **SvcTime**). Else, zero if no transactions. * **Throughput**: ratio: (transaction count at the time stamp / minutes (end_time - start_time)). Else, zero if no transactions. Example of child transactions where ``DURATION`` is 30 seconds (0.5 minutes): 21 child transactions / 0.5 minutes = 42.00 * **Workers**: calculated as (**Throughput** * **RespTime**) Example command output: :: platform@VOSS:~$ voss report transaction throughput 2019-05-06_16:39 2 30 Parent Transactions Child Transactions TS Count Utilisation Workers Qtime SvcTime RespTime Throughput Count Qtime SvcTime RespTime Throughput 2019-05-06_16:39:00 0 0.00 0.00 0.00 0.00 0.00 0.00 21 0.07 0.86 0.93 42.00 2019-05-06_16:39:30 0 0.00 0.00 0.00 0.00 0.00 0.00 80 0.07 0.14 0.22 160.00 :: platform@VOSS:~$ voss report transaction throughput 2019-05-06_16:42 2 30 Parent Transactions Child Transactions TS Count Utilisation Workers Qtime SvcTime RespTime Throughput Count Qtime SvcTime RespTime Throughput 2019-05-06_16:42:00 1 9.71 8.10 0.07 4.79 4.86 2.00 98 0.07 0.05 0.13 196.00 2019-05-06_16:42:30 2 3421.50 2851.25 0.12 855.26 855.37 4.00 34 0.07 0.21 0.28 68.00 Worker-Usage ............ A command is available to show the active and queued transactions at particular intervals from a given start time and then to provide a *utilisation* value for the transaction, relative to a worker value. The command and parameters are: * **voss report transaction worker-usage [OPTIONS] START_TIME INTERVALS DURATION** * ``START_TIME`` - The date-time value from which to start the sample collection. Valid formats: `'%Y-%m-%d_%H:%M:%S', '%Y-%m-%d_%H:%M', '%Y-%m-%d'` * ``INTERVALS`` - Number of report entries to list. * ``DURATION`` - Number of seconds between each report entry. The command output shows parent and child transaction data in columns: * **Utilisation**: ratio: (active parents / total workers (=120)) * 100 * **Zombie**: number of transactions that have not been updated (changed from Queued to Active) for 60 minutes Example output :: platform@VOSS:~$ voss report transaction worker-usage 2019-05-06_16:39 50 30 REPORT: Timestamp Utilisation QueuedParents ActiveParents QueuedChildren ActiveChildren Zombies 2019-05-06_16:39:00 0.83 0 1 0 1 0 2019-05-06_16:39:30 0.83 0 1 0 1 0 2019-05-06_16:40:00 0.83 0 1 0 0 0 2019-05-06_16:40:30 0.83 0 1 0 0 0 2019-05-06_16:41:00 0.83 0 1 0 1 0 2019-05-06_16:41:30 0.83 0 1 1 0 0 2019-05-06_16:42:00 0.83 0 1 0 0 0 2019-05-06_16:42:30 0.00 0 0 0 0 0 2019-05-06_16:43:00 0.83 0 1 0 1 0 2019-05-06_16:43:30 0.83 0 1 0 0 0 2019-05-06_16:44:00 0.83 0 1 0 0 0 Current-Usage ............. A command is available to show a table of transactions grouped by: * Processing and Queued transactions * Parent and child transactions * Node name on which the transaction is running Queued transactions will be shown with a node name of ``default`` because it is not known on which node they will be executed. * Transaction priority (High, Medium, Low) The report is useful to verify that all unified nodes are correctly processing transactions. The command is: * **voss report transaction current-usage** Example output from a single node: :: platform@VOSS:~$ voss report transaction current-usage REPORT: parent | Processing transactions | Queued transactions | | Priority | Priority | Node| High Medium Low | High Medium Low| node1-voss-queue| 1 0 0 | 0 0 0| child | Processing transactions | Queued transactions | | Priority | Priority | Node| High Medium Low | High Medium Low| node1-voss-queue| 0 0 0 | 0 0 0|