You are currently reviewing an older revision of this page.

500 Internal Server Errors displayed when accessing some processes. Single execution engine running at 100% CPU

Symptoms

When trying to initiate some processes in an environment, a 500 - Internal Server Error is displayed.

When checking CPU usage, a single execution engine is found to be running at 100% CPU. Steps to verify are listed below:

Linux

  1. Run the top command on the server, and then press c, shift+p. This will sort processes by CPU usage.
  2. Under the CPU column, look for an execution engine process running at 100% CPU.
    1. You can identify an engine process if it contains the string <APPIAN_HOME>/server/_bin/k/linux64/k <APPIAN_HOME>/server/_lib/adb
    2. You can identify the specific engine as an execution engine by looking at the end part of the string. For example, <APPIAN_HOME>/server/process/exec/02/gw1 would indicate that the engine is execution02.

Windows

  1. Open up Task Manager and navigate to the "Processes" tab.
  2. Right click on the "Name" column header, and select the option to add the "Command line" column:
  3. Under the CPU column, look for an execution engine process running at 100% CPU (you will likely need to expand the "Command line" column in order to see the full string).
    1. You can identify an engine process if it contains the string <APPIAN_HOME>/server/_bin/k/linux64/k <APPIAN_HOME>/server/_lib/adb
    2. You can identify the specific engine as an execution engine by looking at the end part of the string. For example, <APPIAN_HOME>/server/process/exec/02/gw1 would indicate that the engine is execution02.

Cause

This issue occurs when one of the below engine performance logs reaches 10 megabytes in size:

  • execution_by_category_*
  • top_models_by_time_*
  • top_processes_by_time_*

These logs can be found in the <APPIAN_HOME>/logs/perflogs directory. These logs will rollover anytime an execution engine is restarted, so this behavior will only manifest if an execution engine has been running for at least 60 days continuously. 

The reason these logs can cause an execution engine to max out at 100% CPU utilization is a result of how select values in these logs are calculated. Transient tables within the execution engine that populate values in this log become too massive to scale any further, which causes the engine to lock trying to process further data. This issue has been reported to the Appian Product Team. The reference number for this issue is AN-146311.

Action

To avoid downtime in the environment, moving the above mentioned log files to a directory other than <APPIAN_HOME>/logs/perflogs and restarting the afflicted engine will resolve this issue. A single engine can be restarted with the following procedures:

  1. From <APPIAN_HOME>/services/bin, execute ./stop.sh (.bat) -p <PASSWORD> -s executionXX. Wait for the engine to stop.
  2. From <APPIAN_HOME>/services/bin, execute ./start.sh (.bat) -p <PASSWORD> -s executionXX.

The afflicted engine may need to be killed forcibly, and this can be done using the steps below:

Linux

  1. Run the top command on the server, and then press cshift+p. This will sort processes by CPU usage.
  2. Under the CPU column, look for the execution engine process running at 100% CPU. The PID of this process will be listed in the left most column of the top output.
  3. You can use the following command to forcibly kill the engine: kill -9 <PID>

Windows

  1. Open up Task Manager and navigate to the "Processes" tab.
  2. Right click on the "Name" column header, and select the option to add the "PID" and "Command line" columns:
  3. Under the CPU column, look for the execution engine process running at 100% CPU. The PID of this process will be listed in the newly selected PID column.
  4. You can force kill the engine by right clicking the engine process in task manager, and selecting the option to "End task."

This issue can also be resolved by rebooting the environment.

Affected Versions

This section includes any relevant version information for Appian or other third/party configurations. Some examples of valid affected versions are as follows:

  • This article applies to all versions of Appian.
  • This article applies to Appian 7.11 and later.
  • This article applies to Appian 16.2 and earlier.
  • This article applies to Appian 7.11 and 16.1.
  • This article applies to Appian 16.1, 16.2, and 16.3.
  • This article applies to all versions of Appian from Appian 7.10 to Appian 16.2.
  • This article applies to all versions of Appian using JBoss EAP 6.4.9 as an application server and Internet Explorer 9 as a web browser.
  • This article applies to all versions of Appian Cloud.

Last Reviewed: Month YYYY