THE INFORMATION IN THIS ARTICLE APPLIES TO:
- EFT Server v6.3 and later
In EFT v8 and later, refer to "Advanced Properties" in the help for your version of EFT.
DISCUSSION
The following advanced properties control the behavior of the queue used to write to the ARM database. If the queue backs up, it will make threads wait until space is available. If you have enabled DEBUG logging for ARM (see "Logging" below), when you start the EFT server service, it will log messages indicating that these registry settings are enabled.
In EFT versions prior to v8, create the registry DWORD values in:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\GlobalSCAPE Inc.\EFT Server 4.0\
In v8.0 and later, create the name:value pairs in the AdvancedProperties.json file in this format:
{
"ARMQueueSize":"1000",
"ARMLogStalledThreadMinDuration":2000
}
ARMQueueSize
- The maximum size of the ARM auditing queue. You should first enable DEBUG logging and set the
“ARMLogMinStalledThreads” registry setting (below) to 1, then review the
EFT.log file and see if it is logging WARN messages about stalled
threads. This would be evidence that the queue is falling behind.
- Type: REG_DWORD
- Default when not specified: 10 (1000 in v7 and later)
- Minimum allowed when specified: 10 (1000 in v7 and later)
ARMLogStalledThreadMinDuration
- Type: REG_DWORD
- Default when not specified: 1000 (1 second)
- Minimum allowed when specified: 1000 (1 second)
- The duration to use to determine if a thread should be considered “stalled.” Meaning if this is set to 1000 then any thread that waits longer than 1 second is classified as stalled. This is used just for logging purposes.
ARMLogMinStalledThreads
- Type: REG_DWORD
- Default when not specified: 0
- The number of stalled threads that must be present before logging. If it is set to 1 or higher, information about stalled threads is logged to EFT.log under the ARM logger. Set this to 1 temporarily to see if anything shows up in the log. Be aware that in extreme situations this could, in theory, make it log a ton of WARN messages. If so then a higher value should be used to lessen the verbosity.
Logging
In the logging.cfg file (e.g., C:\ProgramData\Globalscape\EFT Server Enterprise\logging.cfg), enable DEBUG logging for the "ARM" log to output statistical information concerning the size of the queue and whether threads are stalling.
Log Messages
The following log message are created when the queue is filling up and at server startup:
- A WARN level message to the "ARM.Queue" log when the queue is filling up and threads are backing up waiting to audit. You have to set "ARMLogMinStalledThreads" to 1 or greater to enable this.
For example:
05-16-12 10:57:52,258 [1316] WARN ARM.Queue <> - The ARM queue had 8 threads waiting over 1001 seconds over the last 301 milliseconds
- A DEBUG level message to the"ARM.Queue" log with statistics for the queue. Output every 5 minutes.
For example:
05-16-12 10:57:52,258 [1316] DEBUG ARM.Queue <> - Queue stats over the last 301 seconds:
10094 items enqueued
11 is the largest recorded queue size
8 threads waited over 1001 milliseconds
average queue size 4.53
- (Logged at Server start) A DEBUG level message to "ARM.Queue" log displaying the queue size if the "ARMQueueSize" registry key is specified and value is > 10.
For example:
05-16-12 10:47:51,320 [1560] DEBUG ARM.Queue <> - Queue size set to 11
- (Logged at Server start) A DEBUG level message to "ARM.Queue" log displaying the queue size if the "ARMLogStalledThreadMinDuration" registry key is specified an value > 1000:
For example:
05-16-12 10:47:51,320 [1560] DEBUG ARM.Queue <> - Stalled thread minimum duration set to 1001
- (Logged at Server start) A DEBUG level message to "ARM.Queue" log displaying the queue size if the "ARMLogMinStalledThreads" registry key is specified and value > 0
For example:
05-16-12 10:47:51,320 [1560] DEBUG ARM.Queue <> - Minimum number of stalled threads to log set to 1
ARMLogMinStalledThreads > 0 output