summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Use info items to list unresponsive queuesDiana Corbacho2017-08-071-5/+5
| | | | | rabbitmq-cli#207 [#149059849]
* Functions to list unresponsive queuesDiana Corbacho2017-07-271-0/+27
| | | | | rabbitmq-cli#207 [#149059849]
* Naming + export typekjnilsson2017-07-272-2/+2
| | | | rabbit_types:connection_name() is used elsewhere but was not exported.
* Merge pull request #1308 from rabbitmq/rabbitmq-server-1305Jean-Sébastien Pédron2017-07-271-2/+2
|\ | | | | Bump Erlang versions in .travis.yml
| * Bump Erlang versions in .travis.ymlMichael Klishin2017-07-261-2/+2
| | | | | | | | | | Part of #1305. [#149563549]
* | Cleanup test variable queue for channel operation timeout test.Daniil Fedotov2017-07-261-2201/+74
| | | | | | | | | | | | The file included all variable queue code, which was changed several times. It doesn't make sense to maintain two identical files, so now all the callbacks are called from rabbit_variable_queue.
* | Update new style config example as wellMichael Klishin2017-07-261-1/+11
| |
* | Merge branch 'stable'Michael Klishin2017-07-261-1/+11
|\ \ | |/ |/|
| * Improve docsMichael Klishin2017-07-261-1/+11
| |
* | Update rabbitmq-components.mkMichael Klishin2017-07-261-1/+1
| |
* | Merge branch 'stable'Michael Klishin2017-07-260-0/+0
|\ \ | |/ | | | | | | Conflicts: rabbitmq-components.mk
| * Update rabbitmq-components.mkMichael Klishin2017-07-261-1/+1
| |
* | Merge pull request #1304 from rabbitmq/rabbitmq-management-446rabbitmq_v3_7_0_milestone18Karl Nilsson2017-07-251-1/+5
|\ \ | | | | | | Report vhost status on vhost info
| * \ Merge branch 'master' into rabbitmq-management-446Daniil Fedotov2017-07-2513-150/+638
| |\ \ | |/ / |/| |
* | | Merge branch 'stable'Michael Klishin2017-07-251-10/+24
|\ \ \ | | |/ | |/|
| * | Merge pull request #1302 from ↵rabbitmq_v3_6_11_milestone5Michael Klishin2017-07-251-10/+24
| |\ \ | | | | | | | | | | | | | | | | rabbitmq/stable-gm-mem-usage-during-constant-redelivery Stable GM memory usage during constant redelivery
| | * | Run garbage collection in GM every 250msJean-Sébastien Pedron2017-07-251-7/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In high throughput scenarios, e.g. `basic.reject` or `basic.nack`, messages which belong to a mirrored queue and are replicated within a GM group, are quickly promoted to the old heap. This means that garbage collection happens only when the Erlang VM is under memory pressure, which might be too late. When a process is under pressure, garbage collection slows it down even further, to the point of RabbitMQ nodes running out of memory and crashing. To avoid this scenario, We want the GM process to garbage collect binaries regularly, i.e. every 250ms. The variable queue does the same for a similar reason: rabbitmq/rabbitmq-server#289 Initially, we wanted to use the number of messages as the trigger for garbage collection, but we soon discovered that different workloads (e.g. small vs large messages) would result in unpredictable and sub-optimal GC schedules. Before setting `fullsweep_after` to 0, memory usage was 2x higher (400MB vs 200MB) and throughput was 0.1x lower (18k vs 20k). With this `spawn_opt` setting, the general collection algorithm is disabled, meaning that all live data is copied at every garbage collection: http://erlang.org/doc/man/erlang.html#spawn_opt-3 The RabbitMQ deployment used for testing this change: * AWS, c4.2xlarge, bosh-aws-xen-hvm-ubuntu-trusty-go_agent 3421.11 * 3 RabbitMQ nodes running OTP 20.0.1 * 3 durable & auto-delete queues with 3 replicas each * each queue master was defined on a different RabbitMQ node * every RabbitMQ node was running 1 queue master & 2 queue slaves * 1 consumer per queue with QOS 100 * 100 durable messages @ 1KiB each * `basic.reject` operations ``` | Node | Message throughput | Memory usage | | ------ | -------------------- | -------------- | | rmq0 | 12K - 20K msg/s | 400 - 900 MB | | rmq1 | 12K - 20K msg/s | 500 - 1000 MB | | rmq2 | 12K - 20K msg/s | 500 - 800 MB | ``` [#148892851] Signed-off-by: Gerhard Lazu <gerhard@rabbitmq.com>
| | * | Remove hibernate from GMJean-Sébastien Pédron2017-07-241-3/+2
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We don't want to use the backoff/hibernate feature because we have observed that the GM process is suspended half of the time. We really wanted to replace gen_server2 with gen_server, but it was more important to keep changes in 3.6 to a minimum. GM will eventually be replaced, so switching it from gen_server2 to gen_server will be soon redundant. We simply do not understand some of the gen_server2 trade-offs well enough to feel strongly about this change. [#148892851] Signed-off-by: Gerhard Lazu <gerhard@rabbitmq.com>
* | | Fix unused variablekjnilsson2017-07-251-1/+1
| | |
* | | SpellingMichael Klishin2017-07-251-1/+1
| | |
* | | Merge pull request #1293 from ↵Karl Nilsson2017-07-2512-139/+613
|\ \ \ | | | | | | | | | | | | | | | | rabbitmq/rabbitmq-server-close-connection-on-vhost-down Close connections when vhost is unavailable (supervision tree is down)
| * | | Remove debug logDaniil Fedotov2017-07-251-1/+0
| | | |
| * | | Cleanup test groupsDaniil Fedotov2017-07-241-20/+6
| | | |
| * | | Merge branch 'master' into rabbitmq-server-close-connection-on-vhost-downMichael Klishin2017-07-223-42/+65
| |\ \ \ | |/ / / |/| | |
| * | | Fix return type of start_vhostDaniil Fedotov2017-07-211-3/+3
| | | |
| * | | Do not crash on vhost recovery failure if vhost strategy is `continue`Daniil Fedotov2017-07-202-19/+66
| | | | | | | | | | | | | | | | | | | | | | | | | | | | When a node is starting or restarting it can fail to recover a vhost. The `continue` vhost recovery strategy means that vhosts can ba down if cannot be recovered. This behaviour should also work for node startup and it should skip failing vhosts.
| * | | Test connection closures when vhost supervisor fails.Daniil Fedotov2017-07-192-55/+392
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Move non-limit tests from vhost limits suite to vhost suite. Add tests for connection closure and refuse when vhost supervisor is down. [#145106713]
| * | | Refuse connections to dead vhosts.Daniil Fedotov2017-07-192-16/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If a vhost supervision tree is not active, which can be a result of an error in message store, refuse connections to this vhost on the node. This is a follow-up to [#140841611] [#1158] [#145106713]
| * | | Change vhost supervision recovery process.Daniil Fedotov2017-07-198-61/+135
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In order to be aware if vhost is alive or not, introduce a rabbit_vhost_process gen_server, which manages recovery and teardown of a vhost. Also aliveness of the process can be used to determine a vhost state. Vhost process termination emits an event to close all the vhost connections. Addresses [#145106713]
| | | * Report vhost status on vhost infoDiana Corbacho2017-07-251-1/+5
| |_|/ |/| | | | | | | | | | | rabbitmq-management#446 [#149398495]
* | | Merge branch 'stable'Michael Klishin2017-07-222-25/+35
|\ \ \ | | |/ | |/| | | | | | | | | | Conflicts: src/rabbit_amqqueue.erl src/rabbit_vm.erl
| * | Remove the debug message about deleting queues without vhostsDaniil Fedotov2017-07-211-1/+0
| | |
| * | Merge pull request #1301 from rabbitmq/rabbitmq-server-1300Michael Klishin2017-07-211-8/+39
| |\ \ | | | | | | | | Do not show queues with deleted vhost.
| | * | Do not show queues with deleted vhost.Daniil Fedotov2017-07-211-8/+39
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | When vhost does not exist for a queue, which reside on a stopped node, the queue will not be displayed in the 'list_queues' command output. When a node goes back up, queues without vhost will be deleted. [Fixes #1300] [#149292743]
| * | Merge pull request #1295 from rabbitmq/rabbitmq-server-1294rabbitmq_v3_6_11_milestone4Michael Klishin2017-07-201-5/+11
| |\ \ | | | | | | | | Report a difference between RSS and erlang total memory only if RSS is bigger.
| | * | Report a difference between RSS and erlang total memory only if RSS is bigger.Daniil Fedotov2017-07-181-5/+11
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | RSS can be either bigger than memory reported by `erlang:memory(total)` or smaller. Make sure we only add positive difference to "other" fraction in memory breakdown. Related to 0872a15a050176ab7598bc3d1b21a2d5c5af3052 [addresses #1294] [#149066379]
* | | Merge pull request #1282 from rabbitmq/rabbitmq-management-423rabbitmq_v3_7_0_milestone17Michael Klishin2017-07-201-17/+30
|\ \ \ | |_|/ |/| | Add function to check if adding queues would exceed limit
| * | Add would_exceed_queue_limit functionLuke Bakken2017-07-191-17/+30
|/ /
* | Merge pull request #1298 from rabbitmq/rabbitmq-server-1297Michael Klishin2017-07-181-1/+4
|\ \ | | | | | | Enable tracing of messages sent by default when using LG
| * | Enable tracing of messages sent by default when using LGLoïc Hoguin2017-07-181-1/+4
|/ /
* | Merge branch 'stable'rabbitmq_v3_7_0_milestone16Jean-Sébastien Pédron2017-07-122-5/+11
|\ \ | |/
| * rabbit_core_metrics_gc_SUITE: Wait for condition in a loopJean-Sébastien Pédron2017-07-121-4/+9
| | | | | | | | | | This hopefully further improves commit 6f374fb48a5cc9972ce0bfcf747faa380e1d1e4d.
| * Add vm_memory_calculation_strategy to ctl statusMichael Klishin2017-07-111-1/+2
| | | | | | | | | | | | | | | | | | How total amount of memory is computed is an important piece of information: what the runtime reports and what tools such as 'ps' report will differ. http://erlang.org/pipermail/erlang-questions/2012-September/069337.html is a good source of information on some of the discrepancies.
* | Merge remote-tracking branch 'origin/stable'kjnilsson2017-07-111-5/+15
|\ \ | |/
| * Replace timer:sleep with a loop waiting on a predicate.kjnilsson2017-07-111-5/+15
| | | | | | | | | | To make it more likely to pass on resource constrained environments.
* | Merge branch 'stable'Michael Klishin2017-07-110-0/+0
|\ \ | |/
| * SimplifyMichael Klishin2017-07-111-9/+6
| | | | | | | | | | This code runs on server nodes, we can avoid using ctl commands.
* | Merge branch 'stable'Michael Klishin2017-07-112-4/+49
|\ \ | |/ | | | | | | Conflicts: test/unit_inbroker_parallel_SUITE.erl
| * Merge pull request #1290 from rabbitmq/rabbitmq-server-1285Michael Klishin2017-07-111-4/+24
| |\ | | | | | | Add test for set_vm_memory_high_watermark
| | * Add test for set_vm_memory_high_watermarkGerhard Lazu2017-07-101-4/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is meant to add a missing integration test that wraps up #1285 It's not a unit test and it can't run in paralle, but set_disk_free_limit does the same wrong thing. We should either remove them both or leave them as they are. [#148470947]