summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Adopt latest bazel-erlangbump-bazel-erlangGitHub2022-01-041-1/+1
| | | | - bazel-erlang@d62a13548b3d1e5bd2830f42e3f3933ae17db3cb
* Skip new import testcase on mixed environmentsdcorbacho2022-01-031-1/+8
|
* Merge pull request #3934 from rabbitmq/decode-method-fieldsMichael Klishin2022-01-011-112/+112
|\ | | | | Reduce CPU usage of rabbit_framing_amqp_0_9_1:decode_method_fields/2
| * Reduce CPU usage of rabbit_framing_amqp_0_9_1:decode_method_fields/2decode-method-fieldsDavid Ansari2021-12-311-112/+112
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This diff will generate module rabbit_framing_amqp_0_9_1 with re-ordered clauses of function decode_method_fields/2. After this change, basic class will be at the top of the function clauses. That's better because for example basic.publish and basic.ack are called far more often than for example methods of class connection, channel or exchange. Note that "the compiler does not rearrange clauses that match binaries." See https://www.erlang.org/doc/efficiency_guide/functions.html#pattern-matching Measurement taken on an Ubuntu 20.04 VM before and after this change: 1. Install latest Erlang from master (i.e. Erlang 25) 2. RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="+JPperf true +S 1" make run-broker (Single scheduler makes the flame graph easier to read.) 3. Run rabbitmq-perf-test without any parameters 4. sudo perf record -g -F 9999 -p <pid> -- sleep 5 where <pid> is the output of 'os:getpid().' (in the Erlang shell). This samples CPU stack traces via frame pointers of rabbitmq-server at 9999 Hertz for 5 seconds. 5. Generate a differential flame graph as described in https://www.brendangregg.com/blog/2014-11-09/differential-flame-graphs.html Before this change, stack frame rabbit_framing_amqp_0_9_1:decode_method_fields/2 was 1.57% present in all stack trackes, most of the time (> 1%) running on the CPU, i.e. directly consuming CPU cycles. This does not sound like a lot, but is actually quite a lot for a single function! The diffential flame graph depicts a single dark blue frame: function decode_method_fields with a reduction of ~0.85%.
* #3925 follow-up: add a rabbit_common Bazel depMichael Klishin2021-12-281-0/+6
|
* #3925 follow-up: don't include Erlang client headersMichael Klishin2021-12-281-1/+3
|
* #3925 follow-up: update Bazel files to match new suite namesMichael Klishin2021-12-281-2/+2
|
* Merge branch 'thuandb-master'Michael Klishin2021-12-287-16/+226
|\
| * Rename two newly introduced test modulesMichael Klishin2021-12-282-2/+2
| |
| * delegate: documentation editsMichael Klishin2021-12-261-9/+12
| |
| * Make xref happyMichael Klishin2021-12-261-1/+1
| |
| * Import definitions: support user limitsdcorbacho2021-12-265-61/+225
| |
| * CosmeticsMichael Klishin2021-12-261-1/+1
| |
| * wrap authentication calls in try catch to avoid leaking errorLajos Gerecs2021-12-261-29/+36
| |
| * Fix testsLuke Bakken2021-12-262-3/+7
| |
| * Use protected ets so that data can be read quicklyLuke Bakken2021-12-262-36/+46
| |
| * Clarify warning messageLuke Bakken2021-12-261-1/+3
| |
| * Restore old win32 free disk query using `dir` as a last resortLuke Bakken2021-12-261-1/+33
| |
| * Be smarter about extracting the drive letter from a directory on win32Luke Bakken2021-12-261-17/+29
| |
| * Disk monitor improvementsLuke Bakken2021-12-261-37/+75
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Related to VESC-1015 * Remove `infinity` timeouts * Improve free disk space retrieval on win32 Run commands with a timeout This PR fixes an issue I observed while reproducing VESC-1015 on Windows 10. Within an hour or so of running a 3-node cluster that has health checks being run against it, one or more nodes' memory use would spike. I would see that the rabbit_disk_monitor process is stuck executing os:cmd to retrieve free disk space information. Thus, all gen_server:call calls to the process would never return, especially since they used an infinity timeout. Do something with timeout Fix unit_disk_monitor_mocks_SUITE
| * Optimisation for 'delegate'tomyouyou2021-12-261-2/+59
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is copied from https://github.com/rabbitmq/rabbitmq-common/pull/349 If a message is sent to only one queue(in most application scenarios), passing through the 'delegate' is meaningless. Otherwise, it increases the delay of the message and the possibility of 'delegate' congestion. Here are some test data: node1: Pentium(R) Dual-Core CPU E5300 @ 2.60GHz node2: Pentium(R) Dual-Core CPU E5300 @ 2.60GHz Join node1 and node2 to a cluster. Create 100 queues on node2, and start 100 consumers to receive messages from these queues. Start 100 publishers on node1 to send messages to the queues of node2. Each publisher will send 10k messages at the rate of 100/s(10k/s theoretically in total), and all the messages for all publishers is 1 million. Before optimisation: {1,[{msg_time,812312(=<1ms),177922(=<5ms),9507(=<50ms),221(=<500ms),38(=<1000ms),0,0,0,0,1061,1069,0,0}]} After optimisation: {1,[{msg_time,902854(=< 1ms),93993(=<5ms),3038(=<50ms),96(=<500ms),19(=<1000ms),0,0,0,0,1049,1060,0,0}]} Additional information: Time counted here is the stay time of a message in the cluster, that is, Time(leaving from node2 at) - Time(reaching node1 at). "812312(=<1ms)" is the number of messages with time consumption less than or equal to 1ms. Overall, the optimisation is effective.
| * add bazel rule definition for rabbit_mirror_queue_misc_SUITE and ↵Thuan Duong Ba2021-12-201-0/+8
| | | | | | | | rabbit_mirror_queue_sync_SUITE
| * fix the sync pause time calculationThuan Duong Ba2021-12-201-3/+2
| |
| * reset counter after each sync throughput check intervalThuan Duong Ba2021-12-201-8/+10
| |
| * minor fix on condition to stop batching when total batch size is largeThuan Duong Ba2021-12-202-3/+3
| |
| * minor update for batching messages when syncthroughput is 0Thuan Duong Ba2021-12-202-2/+33
| |
| * Support configure max sync throughput in CMQsThuan Duong Ba2021-12-206-16/+186
| |
* | Merge branch 'delegate_opt'Michael Klishin2021-12-261-2/+62
|\ \
| * | delegate: documentation editsMichael Klishin2021-12-261-9/+12
| | |
| * | Merge branch 'master' into delegate_optMichael Klishin2021-12-2642-224/+997
| |\ \ | |/ / |/| |
* | | Merge pull request #3930 from rabbitmq/import-user-limitsMichael Klishin2021-12-235-62/+226
|\ \ \ | | | | | | | | Import definitions: support user limits
| * | | Make xref happyMichael Klishin2021-12-231-1/+1
| | | |
| * | | Import definitions: support user limitsimport-user-limitsdcorbacho2021-12-235-61/+225
| | | |
* | | | Merge branch 'luos-wrap_auth_calls_in_try_catch'Michael Klishin2021-12-221-29/+36
|\ \ \ \ | |/ / / |/| | |
| * | | CosmeticsMichael Klishin2021-12-221-1/+1
| | | |
| * | | wrap authentication calls in try catch to avoid leaking errorLajos Gerecs2021-12-211-29/+36
|/ / /
* | | Merge pull request #3895 from ↵Luke Bakken2021-12-213-56/+154
|\ \ \ | |_|/ |/| | | | | | | | rabbitmq/lukebakken/rabbit_disk_monitor-improvements Disk monitor improvements
| * | Fix testslukebakken/rabbit_disk_monitor-improvementsLuke Bakken2021-12-202-3/+7
| | |
| * | Use protected ets so that data can be read quicklyLuke Bakken2021-12-202-36/+46
| | |
| * | Clarify warning messageLuke Bakken2021-12-201-1/+3
| | |
| * | Restore old win32 free disk query using `dir` as a last resortLuke Bakken2021-12-201-1/+33
| | |
| * | Be smarter about extracting the drive letter from a directory on win32Luke Bakken2021-12-201-17/+29
| | |
| * | Disk monitor improvementsLuke Bakken2021-12-201-37/+75
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Related to VESC-1015 * Remove `infinity` timeouts * Improve free disk space retrieval on win32 Run commands with a timeout This PR fixes an issue I observed while reproducing VESC-1015 on Windows 10. Within an hour or so of running a 3-node cluster that has health checks being run against it, one or more nodes' memory use would spike. I would see that the rabbit_disk_monitor process is stuck executing os:cmd to retrieve free disk space information. Thus, all gen_server:call calls to the process would never return, especially since they used an infinity timeout. Do something with timeout Fix unit_disk_monitor_mocks_SUITE
* | Merge branch 'polaris-alioth-prevent_unnamed_policy_when_loading_definition'Michael Klishin2021-12-203-1/+27
|\ \
| * | A slightly improved log message wordingMichael Klishin2021-12-201-1/+1
| | |
| * | Increase token expiration timeAnh Thi Lan Nguyen2021-12-201-1/+1
| | |
| * | Start SSL app for testing serverAnh Thi Lan Nguyen2021-12-201-0/+1
| | |
| * | Standardise README.mdAnh Thi Lan Nguyen2021-12-202-13/+12
| | |
| * | Correct configuration example in README.mdAnh Thi Lan Nguyen2021-12-201-1/+1
| | |
| * | Add timeout for httpc requestAnh Thi Lan Nguyen2021-12-201-1/+1
| | |