clicking). There should be not reason for changing this value. Please check
tune.ssl.maxrecord below.
+tune.listener.multi-queue { on | off }
+ Enables ('on') or disables ('off') the listener's multi-queue accept which
+ spreads the incoming traffic to all threads a "bind" line is allowed to run
+ on instead of taking them for itself. This provides a smoother traffic
+ distribution and scales much better, especially in environments where threads
+ may be unevenly loaded due to external activity (network interrupts colliding
+ with one thread for example). This option is enabled by default, but it may
+ be forcefully disabled for troubleshooting or for situations where it is
+ estimated that the operating system already provides a good enough
+ distribution and connections are extremely short-lived.
+
tune.lua.forced-yield <number>
This directive forces the Lua engine to execute a yield each <number> of
instructions executed. This permits interrupting a long script and allows the
#if defined(USE_THREAD)
count = l->bind_conf->thr_count;
- if (count > 1) {
+ if (count > 1 && (global.tune.options & GTUNE_LISTENER_MQ)) {
struct accept_queue_ring *ring;
int r, t1, t2, q1, q2;
return 0;
}
+/* config parser for global "tune.listener.multi-queue", accepts "on" or "off" */
+static int cfg_parse_tune_listener_mq(char **args, int section_type, struct proxy *curpx,
+ struct proxy *defpx, const char *file, int line,
+ char **err)
+{
+ if (too_many_args(1, args, err, NULL))
+ return -1;
+
+ if (strcmp(args[1], "on") == 0)
+ global.tune.options |= GTUNE_LISTENER_MQ;
+ else if (strcmp(args[1], "off") == 0)
+ global.tune.options &= ~GTUNE_LISTENER_MQ;
+ else {
+ memprintf(err, "'%s' expects either 'on' or 'off' but got '%s'.", args[0], args[1]);
+ return -1;
+ }
+ return 0;
+}
+
/* Note: must not be declared <const> as its list will be overwritten.
* Please take care of keeping this list alphabetically sorted.
*/
INITCALL1(STG_REGISTER, bind_register_keywords, &bind_kws);
+/* config keyword parsers */
+static struct cfg_kw_list cfg_kws = {ILH, {
+ { CFG_GLOBAL, "tune.listener.multi-queue", cfg_parse_tune_listener_mq },
+ { 0, NULL, NULL }
+}};
+
+INITCALL1(STG_REGISTER, cfg_register_keywords, &cfg_kws);
+
/*
* Local variables:
* c-indent-level: 8