Network Management

SWIS uses a lot of memory due to the overloading of Feature service and causing performance issues in SolarWinds Platform 2022.3

Feature service is called SWIS when GetFeatures() is called. This call most likely causes the end overloading of Feature service with requests to GetFeatures() and causes Orion down for some time in 2022.3

First published date

11/1/2022 7:38 AM

Last published date

2/7/2025 10:18 PM

Overview

The issue is not related to valid or expired licenses, but the product internally maintains a cache of licensed features with 3 minute validity in every running process, once it expires it queries the Licensing Business Layer which needs to contact SWIS.

Product section

Orion Platform

Cause

The feature service is querying SWIS during feature loading to get SPM configuration, and it fails when SWIS gets overloaded with other requests that are waiting for licensed features cache update, so it gets to a communication deadlock.

SWIS stops responding to requests, and it consumes more and more memory in time.

In the LicensingBusinesslayer log you will see errors similar to this below:
 

ERROR SolarWinds.Orion.Feature.Service.FeatureProviderService -
Unable to load features.
System.ServiceModel.CommunicationException: The socket connection was aborted. This could be caused by an error processing your message or a receive timeout being exceeded by the remote host, or an underlying network resource issue. Local socket timeout was '01:00:00'. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host



You may also see long-running queries in SWIS related to LicensesCount similar to this below:
 

WARN  SolarWinds.InformationService.Core.InformationService - (null) (null) Support! -- LONG RUNNING QUERY: OperationContextId b3cb6a64-a861-4247-9258-0d5e650ec9e6 - Query took 20358.9816 ms: SELECT COUNT(LicenseName) AS LicensesCount

Resolution

This issue is resolved in SolarWinds Platform 2022.4 and above.  If an upgrade is not possible, perform one of the options below:

Option #1:

  1. From the web console, navigate to the Advanced Configuration page /Orion/admin/advancedconfiguration/global.aspx)
  2. Search for DefaultCacheExpiration
  3. Change the setting from 3 minutes (00:03:00) to 1 hour (01:00:00)
  4. Restart SWIS service on active MPE

Option #2:


If you cannot access the web console, you can update the setting table directly in the database.
Take a backup before any DB modifications.

  1. RDP the Main poller engine
  2. Open the Database Manager application
  3. Click on Add Orion Server
  4. Right click on Orion database and click on New Query
  5. Type the following query on the right side and click on Execute query
INSERT [dbo].[Setting] ([Name], [Value]) VALUES (N'Feature.Client.DefaultCacheExpiration', N'01:00:00')

-- Scripts are not supported under any SolarWinds support program or service.
-- Scripts are provided AS IS without warranty of any kind. SolarWinds further
-- disclaims all warranties including, without limitation, any implied warranties
-- of merchantability or of fitness for a particular purpose. The risk arising
-- out of the use or performance of the scripts and documentation stays with you.
-- In no event shall SolarWinds or anyone else involved in the creation,
-- production, or delivery of the scripts be liable for any damages whatsoever
-- (including, without limitation, damages for loss of business profits, business
-- interruption, loss of business information, or other pecuniary loss) arising
-- out of the use of or inability to use the scripts or documentation.
  1. Restart SWIS service on active MPE