Optional: Configure Buffering
- Last UpdatedFeb 07, 2025
- 3 minute read
- PI System
- Adapter for DNP3 1.2
- Adapters
You can configure adapters to buffer data egressed from the adapter to endpoints. Buffering is configured through the buffering configuration parameters in the system configuration.
Note: AVEVA recommends that you do not modify the default buffering location unless it is necessary. Changes to the buffering configuration parameters only take effect during adapter service startup.
Configure buffering
Complete the following steps to configure buffering. Use the PUT method in conjunction with the http://localhost:5590/api/v1/configuration/system/buffering REST endpoint to initialize the configuration.
-
Using a text editor, create an empty text file.
-
Copy and paste an example configuration for buffering into the file.
For sample JSON, see the Retrieve the buffering configuration example below.
-
Update the example JSON parameters for your environment.
For a table of all available parameters, see the Buffering parameters section.
-
Save the file. For example, ConfigureBuffering.json.
-
Open a command line session. Change directory to the location of ConfigureBuffering.json.
-
To initialize the buffering configuration, send the ConfigureBuffering.json content as request body by Postman (which uses the PUT method) to "http://localhost:5590/api/v1/configuration/OpcUa1/ClientSettings"
Note: If you installed the adapter to listen on a non-default port, update 5590 to the port number in use.
For a list of other REST operations you can perform, like updating or replacing a buffering configuration, see the REST URLs section below.
Alternatively, use the following edgecmd command:
edgecmd set buffering -file ./ConfigureBuffering.json
Buffering parameters
The following parameters are available for configuring buffering:
|
Parameter |
Required |
Type |
Description |
|---|---|---|---|
|
enablePersistentBuffering |
Optional |
boolean |
Enables or disables on-disk buffering Note: If you disable persistent buffering, in-memory buffering is used. On-disk and in-memory buffering are limited by value in the MaxBufferSizeMB property. |
|
maxBufferSizeMB |
Optional |
integer |
Defines the maximum size of the buffer that is persisted on disk 1 or used in memory 2. The unit is specified in MB (1 Megabyte = 1048576 bytes). Consider the capacity
and the type of storage medium to determine a suitable value for this parameter. Note: The MaxBufferSizeMB property is applied to each configured endpoint. For example, if you set the MaxBufferSizeMB to 1024 and you configured the adapter to send data to two endpoints (for example, AVEVA PI Server and CONNECT data services), the total maximum resources used for buffering will be 2048. The health endpoint is an exception fixed at 20 MB. |
|
bufferLocation |
Required |
string |
Defines the location of the buffer files. Absolute paths are required. Consider the
access-control list (ACL) when you set this parameter. BufferLocation is used to buffer files when EnablePersistentBuffering is true. Windows:%ProgramData%\osisoft\Adapters\{AdapterInstance}\Buffers |
1 Buffering to disk - disk is only used if required;
-
Data is only written to the disk buffer if queued in the memory buffer for more than 5 seconds.
-
The MaxBufferSizeMB is applied per configured endpoint except the health endpoint.
-
An adapter creates 20 MB buffer files that are stored in BufferLocation.
-
When MaxBufferSizeMB is reached, the oldest buffer file is deleted and a new buffer file is created.
-
The health endpoint is fixed at 20 MB. When the health endpoint buffer file becomes full, a new buffer file is created and the previous buffer file is deleted.
The following rules apply in case of an error when creating a new buffer file:
-
Attempt to delete oldest buffer file and retry.
-
If unable to buffer, errors are logged to indicate data loss.
-
If a buffer file is corrupted, an attempt is made to recover individual records and any failure to recover records is logged.
-
2 Buffering only to memory:
-
The MaxBufferSizeMB is applied per configured endpoint except the health endpoint.
-
When MaxBufferSizeMB is reached, the oldest messages in the memory buffer are removed. Depending on the size of a new message, several old messages may be removed.
-
The health endpoint is fixed at 20 MB. When the health endpoint buffer file becomes full, the oldest messages in the memory buffer are removed and new messages are added.
Examples
The following examples are buffering configurations made through Postman.
Retrieve the buffering configuration
GET "http://localhost:5590/api/v1/configuration/system/buffering"
Sample output:
{
"bufferLocation": "C:/ProgramData/OSIsoft/Adapters/DNP3/Buffers",
"maxBufferSizeMB": 1024,
"enablePersistentBuffering": true
}
200 OK response indicates success.
Alternatively, use the following edgecmd command:
edgecmd get buffering
Update MaxBufferSizeMb parameter
"PATCH http://localhost:5590/api/v1/configuration/system/buffering"
{
"MaxBufferSizeMB": 100
}
204 No Content response indicates success.
Alternatively, use the following edgecmd command:
edgecmd edit buffering -MaxBufferSizeMB 100
REST URLs
|
Relative URL |
HTTP verb |
Action |
|---|---|---|
|
api/v1/configuration/system/buffering |
GET |
Gets the buffering configuration |
|
api/v1/configuration/system/buffering |
PUT |
Replaces the existing buffering configuration |
|
api/v1/configuration/system/buffering |
PATCH |
Update parameter, partial configuration |