This section describes properties that let you enhance system performance.
Sterling Selling and Fulfillment Foundation components (e.g., EJB, servlets) that run in the application servers use the Application Server Connection Pool parameters to find the connection pool. Refer to WebLogic connection pool if you are using WebLogic or WebSphere connection pool if you are using WebSphere® for more detail.
The Application Server Connection Pool parameters are not applicable to agents and the asynchronous adapters because they do not run in the application server.
Reference data caching is critical for performance and scalability. By default, the cache is enabled. Please see Performance feature - reference data caching for more detail, recommendations and strategies.
The UI Control parameters are only applicable to the screen workloads (e.g., JSPs) running in the application servers. They provide system level controls to the application administrators.
yfs.ui.maxRecords
In addition to this control, the List screens have a Maximum Record field which is currently defaults to 30. Therefore, out-of-the-box, if the user issues a search that has 1,000 records, only 30 are displayed. The user can, at their discretion, change the value of Maximum Record up to the value specified by yfs.ui.MaxRecords.
There is an important points that you need to be aware of:
The yfs.ui.MaxRecords only controls the number of records (e.g., orders or items) that can be displayed in a list. It does not control the amount of work the database has to perform to get those records. For example, a user can issue a very inefficient query by asking for all orders that "contains" the letter "Z" in the order number or in the customer's e-mail id. Those queries typically result in a full table scan of potentially large tables.
yfs.ui.queryTimeout
yantra.app.maxrecords
This parameter serves as a safe guard to limit records returned by LIST APIs to 5,000 records. Please see List APIs.
By default, Sterling Selling and Fulfillment Foundation generates application-level statistics every 10 minutes. The statistics generation is governed by the following parameters:
yantra.statistics.collect=y
yantra.statistics.persist.interval=10m
The System Management Console relies on these statistics.
Please see Statistics for more information.
Caution: The time that JVMs refresh their YFS_HEARTBEAT status is set to yantra.statistics.persist.interval / 2. Therefore, by default, the YFS_HEARTBEAT refresh interval is set to 5 minutes. We recommend that you do not increase the yantra.statistics.persist.interval parameter because of its secondary effect on the YFS_HEARTBEAT refresh interval.
Please see Hot SKU control parameters for information on the Hot SKU control parameters.
To prevent deadlocks, Sterling Selling and Fulfillment Foundation sorts the order or shipment lines by the items at the line level (see Sort order and deadlocks) prior to processing. As the application processes the line, it locks the YFS_INVENTORY_ITEM record. For example, given the following four line order where:
Sterling Selling and Fulfillment Foundation locks the items and process the lines in the following sequence:
Transactions that follow this convention reduces the likelihood of deadlocks. The exception is when orders has kits. Using the example above, assume that item G in line 2 is a kit that is made up of the following kit items D, B, and C. Since the application sorts the item at the line level, the application still processes lines 1, 4, 3, and 2 as above. However, when the transaction processes item G, it potentially locks the kit items out of sequence. Using the example above, the locking sequence is as follows:
If you are processing kits and are experiencing deadlocks, you can set the yfs.inventory.sortandlock parameter to Y. With the parameter enabled, the application first sorts and locks all the line item and kit items prior to processing the transaction. Using the example above, if you enable yfs.inventory.sortandlock, the application performs the following:
Warning: You should not set this parameter if you do not process kits. Setting this parameter does not add any value to non-kit orders.
See Related Sections: