GreenArrow Status Command
- Table of Contents
- Help
- Status Reports
- Validate Configuration
- Dynamic Defaults
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