GreenArrow Email Software Documentation

GreenArrow Status Command

GreenArrow includes a command-line tool greenarrow_status for examining the status of the running software.

Help

Run greenarrow_status without any argument to see a summary of its options:

# greenarrow_status
Usage: greenarrow_status [options]
    -h, --help                       Prints this help
    -c, --[no-]color                 Colorize the output (default: off)
The following reports are available:
  greenarrow_status all_status                               Print all available status reports
  greenarrow_status mta_status                               Print a simple report on the status of the MTA
  greenarrow_status mta_status_extra                         Print a simple report on the status of the MTA; include extra info
  greenarrow_status mta_status_complex                       Print a complex report on the status of the MTA
  greenarrow_status passenger_status                         Print a report on the status of Passenger (web application server)
  greenarrow_status apache_status                            Print a report on the status of Apache (web server)
  greenarrow_status background_workers_status                Print a report on the status of the background workers
  greenarrow_status postgres_status                          Print a report on the status of Postgres (database server)
  greenarrow_status dynamic_defaults                         Print the calculated dynamic defaults
  greenarrow_status validate_configuration                   Validate the configuration file

Status Reports

Overview

The following command generates an overview of GreenArrow’s status.

# greenarrow_status all_status
MTA (Complex):
==== Status on all queues
+----------+------------------+---------------------+---------------+---------------+---------------------------------------------+
|    QUEUE |    MESSAGE SLOTS |             STORAGE |  LOCAL DSLOTS | REMOTE DSLOTS |                 STATE OF USED REMOTE DSLOTS |
|          |     used / total |     used /    total |  used / total |  used / total | connected  diskwait  diskwait  throttlewait |
|          |          /       |          /          |       /       |       /       |            throttle     defer      plus err |
+----------+------------------+---------------------+---------------+---------------+---------------------------------------------+
|      ram |        0 /  2200 |    0.000 /  281.953 |     0 /    10 |     0 /  2000 |         0         0         0             0 |
|   bounce |        0 /    60 |    0.000 /   78.312 |     0 /    10 |     0 /    50 |         0         0         0             0 |
|     disk |        4         |                     |     0 /    10 |     0 /  4000 |         0       n/a       n/a             0 |
+----------+------------------+---------------------+---------------+---------------+---------------------------------------------+
ERROR - Cannot determine app server status, passenger-status command failed.
Background Workers:
studio_workers_shared                    =          0 (busy)       /          5 (running)
studio_workers_campaigns                 =          0 (busy)       /          0 (running)
studio_workers_general                   =          0 (busy)       /          1 (running)
studio_workers_imports                   =          0 (busy)       /          1 (running)
Background Queues:
campaigns                                =          0 (jobs in queue)
general                                  =          0 (jobs in queue)
imports                                  =          0 (jobs in queue)
transactional                            =          0 (jobs in queue)
number of campaigns currently requested to be running              =          0
number of imports/exports currently requested to be running        =          0
Apache Server Status:
apache servers                           =         10 (spawned)    /        150 (max)
apache clients                           =          1 (busy)       /         10 (spawned)
Postgres Server Status:
postgres connections                     =         17 (connected)  /        200 (max)
postgres activity                        =          1 (busy)       /         17 (connected)

The details of each section of output are documented in the sections that follow.

MTA Status

# greenarrow_status mta_status
MTA (Simple):
==== Ramdisk queue for first delivery attempts:
Queue is   0% full (        0/     2200) -- message slots
           0% full (    0.000/  281.953) -- storage (MB)
Slots for remote SMTP deliveries: (first delivery attempts)
   Pct  Num  Description                                Name of State
  ---- ----  -----------------------------------------  -------------------
  100% 2000  Total
  100% 2000  Free                                       (free)
    0%    0  SMTP deliveries underway                   (connected)
    0%    0  Waiting for throttle (&measurement error)  (throttlewait)
    0%    0  Waiting to write a message to disk:        (diskwait_total)
    0%    0     Due to exceeding throttle               (diskwait_throttle)
    0%    0     Due to deferral                         (diskwait_defer)
==== Disk queue for long-term storage of deferred messages:
Total messages queued for retry later: 4
Slots for remote SMTP deliveries: (non-first delivery attempts)
   Pct  Num  Description                                Name of State
  ---- ----  -----------------------------------------  -------------------
  100% 4000  Total
    0%    0  Free                                       (free)
    0%    0  SMTP deliveries underway                   (connected)
    0%    0  Waiting for throttle (&measurement error)  (throttlewait)
Simplemh processing queue:        0% used (     0/  2000) (messages)
                                  0% used (     0/   100) (MB of memory)
Raw nowait message queue:                       0
Bounce processor queue:           0% used (     0/  3000) soft limit
                                  0% used (     0/  5000) hard limit
Lite bounce processor queue:      0% used (     0/  3000) soft limit
                                  0% used (     0/  5000) hard limit
no back-pressure applied (disk-queue not in catchup mode)

MTA Status (Complex)

This report contains most of the same information as mta_status, but in a more condensed table view.

# greenarrow_status mta_status_complex
MTA (Complex):
==== Status on all queues
+----------+------------------+---------------------+---------------+---------------+---------------------------------------------+
|    QUEUE |    MESSAGE SLOTS |             STORAGE |  LOCAL DSLOTS | REMOTE DSLOTS |                 STATE OF USED REMOTE DSLOTS |
|          |     used / total |     used /    total |  used / total |  used / total | connected  diskwait  diskwait  throttlewait |
|          |          /       |          /          |       /       |       /       |            throttle     defer      plus err |
+----------+------------------+---------------------+---------------+---------------+---------------------------------------------+
|      ram |        0 /  2200 |    0.000 /  281.953 |     0 /    10 |     0 /  2000 |         0         0         0             0 |
|   bounce |        0 /    60 |    0.000 /   78.312 |     0 /    10 |     0 /    50 |         0         0         0             0 |
|     disk |        4         |                     |     0 /    10 |     0 /  4000 |         0       n/a       n/a             0 |
+----------+------------------+---------------------+---------------+---------------+---------------------------------------------+

Passenger Status

Passenger is the application server that powers the web interface to GreenArrow.

# greenarrow_status passenger_status
Passenger:
workers (currently busy)                 =          0 (busy)       /          2 (running)
workers (max busy in last 15 seconds)    =          0 (busy)       /          2 (running)
waiting requests                         =          0 (waiting)    /        256 (max)

workers (currently busy)

These are Passenger workers that are currently in the process of serving a request.

workers (max busy in last 15 seconds)

These are Passenger workers that have processed a request in the last 15 seconds.

waiting requests

The number of requests that are waiting for a Passenger worker.

Background Workers Status

The stats in this section relate to GreenArrow Studio’s workers.

# greenarrow_status background_workers_status
Background Workers:
num_workers_campaigns                    =          0 (busy)       /          0 (running)
num_workers_campaigns_and_misc           =          0 (busy)       /          0 (running)
num_workers_general                      =          0 (busy)       /          0 (running)
num_workers_imports                      =          0 (busy)       /          0 (running)
Background Queues:
campaigns                                =          0 (jobs in queue)
general                                  =     240461 (jobs in queue)
imports                                  =          0 (jobs in queue)
transactional                            =          0 (jobs in queue)
number of campaigns currently requested to be running              =          0
number of imports/exports currently requested to be running        =          0

num_workers_campaigns

The number of background workers that are processing only campaigns.

num_workers_campaigns_and_misc

The number of background workers that are processing campaigns, imports/exports, and miscellaneous background jobs.

num_workers_general

The number of background workers that are processing miscellaneous background jobs.

num_workers_imports

The number of background workers that are processing imports and exports.

campaigns

The campaigns queue is used for campaign sends. This queue, if the server is maxed out on the number of sends it can deliver simultaneously, may continue to grow until current campaigns have finished.

A single campaign may be represented in this queue multiple times; just because the queue is growing, this does not mean there are more campaigns to deliver.

general

The general queue is used for most of GreenArrow Studio’s background jobs. This includes rendering preview images of content, calculating the estimated number of recipients, click and open tracking, and other background maintenance required for GreenArrow Studio.

If this queue grows unbounded, this is a signal that the system may be underpowered for its load. In some cases, overriding the number of workers may resolve this issue - but in others, more CPU and memory resources may be required.

imports

The imports queue runs import/export jobs. This queue may get large if many import/export jobs are running simultaneously, but that depth will only affect when those jobs complete. A single import/export job may be represented in this queue multiple times; just because the queue is growing, this does not mean there are more imports/exports to complete.

transactional

The transactional queue runs transactional email such as autoresponders and campaign preview emails.

number of campaigns currently
requested to be running

The number of campaigns that will be sent simultanously if there are enough workers to process them at the same time.

number of imports/exports currently
requested to be running

The actual number of imports/exports that should be running. Imports/exports are interleaved; adding additional workers can increase import/export performance, but only if there is additional idle CPU resources available.

Apache Status

Apache is the web server which hosts GreenArrow’s web interface and click/open/unsubscribe link tracking.

# greenarrow_status apache_status
Apache Server Status:
apache servers                           =          8 (spawned)    /        512 (max)
apache clients                           =          2 (busy)       /          8 (spawned)

apache servers

The number of Apache servers that were spawned and the maximum number that are allowed.

apache clients

The number of incoming web requests that are being processed and the number of available spawned servers to process those requests.

PostgreSQL Status

PostgreSQL is the database server that contains much of GreenArrow’s data.

# greenarrow_status postgres_status
Postgres Server Status:
postgres connections                     =          7 (connected)  /        200 (max)
postgres activity                        =          1 (busy)       /          7 (connected)

postgres connections

The number of active connections to the PostgreSQL server and the maximum possible number of connections.

postgres activity

The number of active connections that are busy processing a query.

Validate Configuration

Validate the /var/hvmail/control/greenarrow.conf configuration file.

# greenarrow_status validate_configuration
Validating Configuration:
No errors found. Configuration file is acceptable.

Dynamic Defaults

This command displays the settings that GreenArrow uses by default, based upon the available CPU and RAM resources.

# greenarrow_status dynamic_defaults
Dynamic Defaults:
Directive                                                               Default           Override
--------------------------------------------------------------------------------------------------
general.studio_message_generation_processes_per_campaign                      1                  -
general.studio_workers_shared                                                 5                  -
general.studio_workers_campaigns                                              0                  -
general.studio_workers_general                                                1                  -
general.studio_workers_imports                                                1                  -
general.studio_workers_transactional                                          1                  -
general.passenger_max_requests_in_queue                                     100                  -
general.passenger_min_application_instances                                   2                  -
general.passenger_max_application_instances                                   4                  -
general.apache_max_clients                                                  150                  -
general.postgres_max_connections                                            200                  -
Estimated memory requirements                                           Default      As Configured
--------------------------------------------------------------------------------------------------
Passenger web processes                                                  800 MB             800 MB
Studio worker processes (/service/hvmail-studio-worker)                 1300 MB            1300 MB
--------------------------------------------------------------------------------------------------
The memory estimates listed above do not reflect all components within GreenArrow, but only
these specific components. See the documentation on Memory Utilization for more information:
https://www.greenarrowemail.com/docs/greenarrow-engine/Configuration/Performance-Tuning/Memory-Utilization


Copyright © 2012–2024 GreenArrow Email