123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- =========================
- Celery Stresstest Suite
- =========================
- .. contents::
- :local:
- Introduction
- ============
- These tests will attempt to break the worker in different ways.
- The worker must currently be started separately, and it's encouraged
- to run the stresstest with different configuration values.
- Ideas include:
- 1) Frequent maxtasksperchild, single process
- ::
- $ celery -A stress worker -c 1 --maxtasksperchild=1
- 2) Frequent scale down & maxtasksperchild, single process
- ::
- $ AUTOSCALE_KEEPALIVE=0.01 celery -A stress worker --autoscale=1,0 \
- --maxtasksperchild=1
- 3) Frequent maxtasksperchild, multiple processes
- ::
- $ celery -A stress worker -c 8 --maxtasksperchild=1``
- 4) Default, single process
- ::
- $ celery -A stress worker -c 1
- 5) Default, multiple processes
- ::
- $ celery -A stress worker -c 8
- 6) Processes termianted by time limits
- ::
- $ celery -A stress worker --time-limit=1
- 7) Frequent maxtasksperchild, single process with late ack.
- ::
- $ celery -A stress worker -c1 --maxtasksperchild=1 -Z acks_late
- 8) Worker using eventlet pool.
- Start the worker::
- $ celery -A stress worker -c1000 -P eventlet
- Then must use the `-g green` test group::
- $ python -m stress -g green
- 9) Worker using gevent pool.
- It's also a good idea to include the ``--purge`` argument to clear out tasks from
- previous runs.
- Note that the stress client will probably hang if the test fails, so this
- test suite is currently not suited for automatic runs.
- Configuration Templates
- -----------------------
- You can select a configuration template using the `-Z` command-line argument
- to any :program:`celery -A stress` command or the :program:`python -m stress`
- command when running the test suite itself.
- The templates available are:
- * default
- Using amqp as a broker and rpc as a result backend,
- and also using json for task and result messages.
- * redis
- Using redis as a broker and result backend
- * acks_late
- Enables late ack globally.
- * pickle
- Using pickle as the serializer for tasks and results
- (also allowing the worker to receive and process pickled messages)
- You can see the resulting configuration from any template by running
- the command::
- $ celery -A stress report -Z redis
- Example running the stress test using the ``redis`` configuration template::
- $ python -m stress -Z redis
- Example running the worker using the ``redis`` configuration template::
- $ celery -A stress worker -Z redis
- You can also mix several templates by listing them separated by commas::
- $ celery -A stress worker -Z redis,acks_late
- In this example (``redis,acks_late``) the ``redis`` template will be used
- as a configuration, and then additional keys from the ``acks_late`` template
- will be added on top as changes::
- $ celery -A stress report -Z redis,acks_late,pickle
- Running the client
- ------------------
- After the worker is running you can start the client to run the complete test
- suite::
- $ python -m stress
- You can also specify which tests to run:
- $ python -m stress revoketermfast revoketermslow
- Or you can start from an offset, e.g. to skip the two first tests use
- ``--offset=2``::
- $ python -m stress --offset=2
- See ``python -m stress --help`` for a list of all available options.
- Options
- =======
- Using a different result backend
- --------------------------------
- You can set the environment variable ``CSTRESS_BACKEND`` to change
- the result backend used::
- $ CSTRESS_BACKEND='amqp://' celery -A stress worker # …
- $ CSTRESS_BACKEND='amqp://' python -m stress
- Using a custom queue
- --------------------
- A queue named ``c.stress`` is created and used by default,
- but you can change the name of this queue using the ``CSTRESS_QUEUE``
- environment variable.
|