Next-generation platform

Guidelines to select performance profile

When you configure a server, you need to select a performance profile for your server. The guidelines in this section can help you select a performance profile that best suits your server load.

Steps for configuring server and monitoring server performance

Here are the steps that can help you configure your servers in Sterling Order Management System and enhance the performance of your servers.
  1. Configure a server in Sterling Order Management System. For example, configure the CreateOrderServer integration server to create an order. Here, you define the server name and set the initial threads to start as one.

    The number of threads use the CPU and memory and affects the overall performance of the server.

  2. Configure the integration server in the Self Service. For more information, see Configuring servers on the next-generation platform.

    For example, select the Balanced performance profile and set the default number of server instances to start as one.

  3. Start the server from the Self Service. You can view the CPU allocation and Memory allocation bars under the Server configuration tab. The allocated CPU and memory resources are assigned to the underlying Kubernetes container in which the server is running.

    For more information, see Managing servers.

  4. Monitor the server from the Self Service.
    You can use the following mechanisms to monitor the server performance and the throughput.
    1. Monitoring dashboards in the Self Service to monitor JVM, Container, and JMS metrics.

      For more information, see Monitoring dashboards.

    2. Sterling Order Management System System Management Console to monitoring the server and to change the threads temporarily.

      For more information, see System Management Console.

    3. IBM DB Query Client to query the YFS_STATISTICS_DETAIL table.

      For more information, see IBM DB Query Client.

    After starting CreateOrderServer, view the heap utilization and CPU utilization by garbage collection metrics from the Agent and Integration Server JVM Metrics dashboard under the Monitoring tab in the Self Service.

    Also, verify the queue depth in the JMS Metrics dashboard. For example, CreateOrderServer listens to the CREATE_SALES_ORDER queue.

    OPEN INPUT COUNT displays one as the server is started with one thread. No messages are sent yet to the queue. Therefore, the queue depth displays zero.

  5. Run a test and monitor the server performance.
    1. In this example, push messages to the CREATE_SALES_ORDER queue. The CreateOrderServer integration server starts processing the messages.
    2. Wait for a few minutes for the JVM to stabilize with DB cache and then collect the metrics.
    3. Monitor the following metrics in the Self Service:
      • Number of server instances
      • Threads per JVM instance
      • API responses
      • Invocations
      • CPU utilization by garbage collection
      • JVM heap utilization
      • Order line throughput
  6. If the metrics show any significant difference that impacts the server performance, you might want to change the performance profile to Compute or Memory based on the metrics data and then monitor the performance.
  7. If the metrics do not show any significant difference, in the System Management Console, increase the number of threads that are assigned for the service dynamically without stopping and starting the server.

    For example, increase the number of threads to three and monitor the performance.

  8. Observe the optimal number of threads that you can start for a server and then configure that number in the Applications Manager. Each time you start a server instance, the number of threads that are configured for a server in the Applications Manager are started.

Guidelines for selecting the performance profile to improve server performance

There is no definite formula to identify the right profile. However, you can use the following guidelines to select a performance profile for optimal results.
  • Start with a single thread for the server, single instance of the server, and the Balanced profile.
  • Increase the number of threads gradually to arrive at the correct profile and maximum number of threads per server.
  • If CPU or memory allocation does not change significantly with each additional thread, continue with the Balanced performance profile. Servers that spend most of the time calling external services display this kind of resource use pattern.
  • If the JVM heap utilization stays around 80% or increases significantly with each additional thread, change the profile to Memory.
  • With any of the performance profiles, if the CPU allocation stays around 70% or memory allocation stays around 80%, you might scale the server (Pod) rather than increase the number of threads.

This approach can be used for any servers including agent servers. You must test different workloads in the pre-production environment and calibrate the server configuration for best performance. This approach might help you understand the optimal performance profile that best suits your server load.