|
@@ -263,12 +263,26 @@ Persistent revokes
|
|
|
------------------
|
|
|
|
|
|
Revoking tasks works by sending a broadcast message to all the workers,
|
|
|
-the workers then keep a list of revoked tasks in memory.
|
|
|
+the workers then keep a list of revoked tasks in memory. When a worker starts
|
|
|
+up it will synchronize revoked tasks with other workers in the cluster.
|
|
|
+
|
|
|
+The list of revoked tasks is in-memory so if all workers restart the list
|
|
|
+of revoked ids will also vanish. If you want to preserve this list between
|
|
|
+restarts you need to specify a file for these to be stored in by using the `--statedb`
|
|
|
+argument to :program:`celery worker`:
|
|
|
+
|
|
|
+.. code-block:: bash
|
|
|
+
|
|
|
+ celery -A proj worker -l info --statedb=/var/run/celery/worker.state
|
|
|
+
|
|
|
+or if you use :program:`celery multi` you will want to create one file per
|
|
|
+worker instance so then you can use the `%n` format to expand the current node
|
|
|
+name:
|
|
|
+
|
|
|
+.. code-block:: bash
|
|
|
+
|
|
|
+ celery multi start 2 -l info --statedb=/var/run/celery/%n.state
|
|
|
|
|
|
-If you want tasks to remain revoked after worker restart you need to
|
|
|
-specify a file for these to be stored in, either by using the `--statedb`
|
|
|
-argument to :program:`celery worker` or the :setting:`CELERYD_STATE_DB`
|
|
|
-setting.
|
|
|
|
|
|
Note that remote control commands must be working for revokes to work.
|
|
|
Remote control commands are only supported by the RabbitMQ (amqp), Redis and MongDB
|
|
@@ -766,6 +780,203 @@ You can get a list of these using
|
|
|
'kwargs': '{}'}]}]
|
|
|
|
|
|
|
|
|
+.. _worker-statistics:
|
|
|
+
|
|
|
+Statistics
|
|
|
+----------
|
|
|
+
|
|
|
+The remote control command ``inspect stats`` (or
|
|
|
+:meth:`~@control.inspect.stats`) will give you a long list of useful (or not
|
|
|
+so useful) statistics about the worker:
|
|
|
+
|
|
|
+.. code-block:: bash
|
|
|
+
|
|
|
+ $ celery -A proj inspect stats
|
|
|
+
|
|
|
+The output will include the following fields:
|
|
|
+
|
|
|
+- ``broker``
|
|
|
+
|
|
|
+ Section for broker information.
|
|
|
+
|
|
|
+ * ``connect_timeout``
|
|
|
+
|
|
|
+ Timeout in seconds (int/float) for establishing a new connection.
|
|
|
+
|
|
|
+ * ``heartbeat``
|
|
|
+
|
|
|
+ Current heartbeat value (set by client).
|
|
|
+
|
|
|
+ * ``hostname``
|
|
|
+
|
|
|
+ Hostname of the remote broker.
|
|
|
+
|
|
|
+ * ``insist``
|
|
|
+
|
|
|
+ No longer used.
|
|
|
+
|
|
|
+ * ``login_method``
|
|
|
+
|
|
|
+ Login method used to connect to the broker.
|
|
|
+
|
|
|
+ * ``port``
|
|
|
+
|
|
|
+ Port of the remote broker.
|
|
|
+
|
|
|
+ * ``ssl``
|
|
|
+
|
|
|
+ SSL enabled/disabled.
|
|
|
+
|
|
|
+ * ``transport``
|
|
|
+
|
|
|
+ Name of transport used (e.g. ``amqp`` or ``mongodb``)
|
|
|
+
|
|
|
+ * ``transport_options``
|
|
|
+
|
|
|
+ Options passed to transport.
|
|
|
+
|
|
|
+ * ``uri_prefix``
|
|
|
+
|
|
|
+ Some transports expects the host name to be an URL, this applies to
|
|
|
+ for example SQLAlchemy where the host name part is the connection URI:
|
|
|
+
|
|
|
+ sqla+sqlite:///
|
|
|
+
|
|
|
+ In this example the uri prefix will be ``sqla``.
|
|
|
+
|
|
|
+ * ``userid``
|
|
|
+
|
|
|
+ User id used to connect to the broker with.
|
|
|
+
|
|
|
+ * ``virtual_host``
|
|
|
+
|
|
|
+ Virtual host used.
|
|
|
+
|
|
|
+- ``clock``
|
|
|
+
|
|
|
+ Value of the workers logical clock. This is a positive integer and should
|
|
|
+ be increasing every time you receive statistics.
|
|
|
+
|
|
|
+- ``pid``
|
|
|
+
|
|
|
+ Process id of the worker instance (Main process).
|
|
|
+
|
|
|
+- ``pool``
|
|
|
+
|
|
|
+ Pool-specific section.
|
|
|
+
|
|
|
+ * ``max-concurrency``
|
|
|
+
|
|
|
+ Max number of processes/threads/green threads.
|
|
|
+
|
|
|
+ * ``max-tasks-per-child``
|
|
|
+
|
|
|
+ Max number of tasks a thread may execute before being recycled.
|
|
|
+
|
|
|
+ * ``processes``
|
|
|
+
|
|
|
+ List of pids (or thread-id's).
|
|
|
+
|
|
|
+ * ``put-guarded-by-semaphore``
|
|
|
+
|
|
|
+ Internal
|
|
|
+
|
|
|
+ * ``timeouts``
|
|
|
+
|
|
|
+ Default values for time limits.
|
|
|
+
|
|
|
+ * ``writes``
|
|
|
+
|
|
|
+ Specific to the processes pool, this shows the distribution of writes
|
|
|
+ to each process in the pool when using async I/O.
|
|
|
+
|
|
|
+- ``prefetch_count``
|
|
|
+
|
|
|
+ Current prefetch count value for the task consumer.
|
|
|
+
|
|
|
+- ``rusage``
|
|
|
+
|
|
|
+ System usage statistics. The fields available may be different
|
|
|
+ on your platform.
|
|
|
+
|
|
|
+ From :man:`getrusage(2)`:
|
|
|
+
|
|
|
+ * ``stime``
|
|
|
+
|
|
|
+ Time spent in operating system code on behalf of this process.
|
|
|
+
|
|
|
+ * ``utime``
|
|
|
+
|
|
|
+ Time spent executing user instructions.
|
|
|
+
|
|
|
+ * ``maxrss``
|
|
|
+
|
|
|
+ The maximum resident size used by this process (in kilobytes).
|
|
|
+
|
|
|
+ * ``idrss``
|
|
|
+
|
|
|
+ Amount of unshared memory used for data (in kilobytes times ticks of
|
|
|
+ execution)
|
|
|
+
|
|
|
+ * ``isrss``
|
|
|
+
|
|
|
+ Amount of unshared memory used for stack space (in kilobytes times
|
|
|
+ ticks of execution)
|
|
|
+
|
|
|
+ * ``ixrss``
|
|
|
+
|
|
|
+ Amount of memory shared with other processes (in kilobytes times
|
|
|
+ ticks of execution).
|
|
|
+
|
|
|
+ * ``inblock``
|
|
|
+
|
|
|
+ Number of times the file system had to read from the disk on behalf of
|
|
|
+ this process.
|
|
|
+
|
|
|
+ * ``oublock``
|
|
|
+
|
|
|
+ Number of times the file system has to write to disk on behalf of
|
|
|
+ this process.
|
|
|
+
|
|
|
+ * ``majflt``
|
|
|
+
|
|
|
+ Number of page faults which were serviced by doing I/O.
|
|
|
+
|
|
|
+ * ``minflt``
|
|
|
+
|
|
|
+ Number of page faults which were serviced without doing I/O.
|
|
|
+
|
|
|
+ * ``msgrcv``
|
|
|
+
|
|
|
+ Number of IPC messages received.
|
|
|
+
|
|
|
+ * ``msgsnd``
|
|
|
+
|
|
|
+ Number of IPC messages sent.
|
|
|
+
|
|
|
+ * ``nvcsw``
|
|
|
+
|
|
|
+ Number of times this process voluntarily invoked a context switch.
|
|
|
+
|
|
|
+ * ``nivcsw``
|
|
|
+
|
|
|
+ Number of times an involuntary context switch took place.
|
|
|
+
|
|
|
+ * ``nsignals``
|
|
|
+
|
|
|
+ Number of signals received.
|
|
|
+
|
|
|
+ * ``nswap``
|
|
|
+
|
|
|
+ The number of times this process was swapped entirely out of memory.
|
|
|
+
|
|
|
+
|
|
|
+- ``total``
|
|
|
+
|
|
|
+ List of task names and a total number of times that task have been
|
|
|
+ executed since worker start.
|
|
|
+
|
|
|
+
|
|
|
Additional Commands
|
|
|
===================
|
|
|
|