[PATCH] reuse_port option for multiple server instances

Harry Mason <[email protected]> Mon, 11 Jan 2016 14:09:55 +0000
Newsgroups gmane.comp.web.web-polygraph.user
Message-ID <[email protected]>
--=-rwMms1lQ9a0+8Fju+tDU
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit

This patch allows multiple polygraph-server instances to bind to the
same address and port. The intended use is to easily spread CPU load
across multiple cores. Enable it by adding "reuse_port = true" to the
Server block.

It is only tested on Linux, where it requires kernel >= 3.9.

Binding a new socket can reset existing connections which are part of
the way through a TCP handshake, so start all server instances before
starting any clients. See https://lwn.net/Articles/542738/

Harry Mason
Smoothwall Ltd.

--=-rwMms1lQ9a0+8Fju+tDU
Content-Disposition: attachment; filename="polygraph-reuseport.patch"
Content-Type: text/x-patch; name="polygraph-reuseport.patch"; charset="UTF-8"
Content-Transfer-Encoding: base64

ZGlmZiAtTmF1ciBwb2x5Z3JhcGgtNC45LjAub3JpZy9zcmMvcGdsL1NlcnZlclN5bS5jYyBwb2x5
Z3JhcGgtNC45LjAvc3JjL3BnbC9TZXJ2ZXJTeW0uY2MKLS0tIHBvbHlncmFwaC00LjkuMC5vcmln
L3NyYy9wZ2wvU2VydmVyU3ltLmNjCTIwMTQtMTAtMjMgMDA6MjI6MjIuMDAwMDAwMDAwICswMTAw
CisrKyBwb2x5Z3JhcGgtNC45LjAvc3JjL3BnbC9TZXJ2ZXJTeW0uY2MJMjAxNi0wMS0xMSAxMDoy
Mzo1My4yNTIyMTIwMzMgKzAwMDAKQEAgLTcsNiArNyw3IEBACiAKICNpbmNsdWRlICJ4c3RkL1N0
cmluZy5oIgogI2luY2x1ZGUgInBnbC9Db250ZW50U3ltLmgiCisjaW5jbHVkZSAicGdsL1BnbEJv
b2xTeW0uaCIKICNpbmNsdWRlICJwZ2wvUGdsSW50U3ltLmgiCiAjaW5jbHVkZSAicGdsL1BnbFRp
bWVTeW0uaCIKICNpbmNsdWRlICJwZ2wvUGdsUmVjLmgiCkBAIC0zMSw2ICszMiw3IEBACiBzdGF0
aWMgU3RyaW5nIHN0ckNvb2tpZV92YWx1ZV9zaXplID0gImNvb2tpZV92YWx1ZV9zaXplIjsKIHN0
YXRpYyBTdHJpbmcgc3RyUmVxQm9keUFsbG93ZWQgPSAicmVxX2JvZHlfYWxsb3dlZCI7CiBzdGF0
aWMgU3RyaW5nIHN0clByb3RvY29sID0gInByb3RvY29sIjsKK3N0YXRpYyBTdHJpbmcgc3RyUmV1
c2VQb3J0ID0gInJldXNlX3BvcnQiOwogCiAKIFNlcnZlclN5bTo6U2VydmVyU3ltKCk6IEFnZW50
U3ltKFRoZVR5cGUpIHsKQEAgLTQzLDYgKzQ1LDcgQEAKIAl0aGVSZWMtPmJBZGQoc3RyU2l6ZV9k
aXN0ciwgc3RyQ29va2llX3ZhbHVlX3NpemUsIDApOwogCXRoZVJlYy0+YkFkZChOdW1TeW06OlRo
ZVR5cGUsIHN0clJlcUJvZHlBbGxvd2VkLCAwKTsKIAl0aGVSZWMtPmJBZGQoc3RyU3RyaW5nQXJy
LCBzdHJQcm90b2NvbCwgMCk7CisJdGhlUmVjLT5iQWRkKEJvb2xTeW06OlRoZVR5cGUsIHN0clJl
dXNlUG9ydCwgMCk7CiB9CiAKIFNlcnZlclN5bTo6U2VydmVyU3ltKGNvbnN0IFN0cmluZyBhVHlw
ZSwgUGdsUmVjICphUmVjKToJQWdlbnRTeW0oYVR5cGUsIGFSZWMpIHsKQEAgLTExOSwzICsxMjIs
NyBAQAogUm5kRGlzdHIgKlNlcnZlclN5bTo6cHJvdG9jb2xzKGNvbnN0IFRva2VuSWRlbnRpZmll
ciAmcHJvdG9jb2xOYW1lcykgY29uc3QgewogCXJldHVybiBuYW1lc1RvRGlzdHIoc3RyUHJvdG9j
b2wsIHByb3RvY29sTmFtZXMpOwogfQorCitib29sIFNlcnZlclN5bTo6cmV1c2VQb3J0KGJvb2wg
JnJwKSBjb25zdCB7CisJcmV0dXJuIGdldEJvb2woc3RyUmV1c2VQb3J0LCBycCk7Cit9CmRpZmYg
LU5hdXIgcG9seWdyYXBoLTQuOS4wLm9yaWcvc3JjL3BnbC9TZXJ2ZXJTeW0uaCBwb2x5Z3JhcGgt
NC45LjAvc3JjL3BnbC9TZXJ2ZXJTeW0uaAotLS0gcG9seWdyYXBoLTQuOS4wLm9yaWcvc3JjL3Bn
bC9TZXJ2ZXJTeW0uaAkyMDE0LTEwLTIzIDAwOjIyOjIyLjAwMDAwMDAwMCArMDEwMAorKysgcG9s
eWdyYXBoLTQuOS4wL3NyYy9wZ2wvU2VydmVyU3ltLmgJMjAxNi0wMS0xMSAxMDoxNDowOS4wNzA0
NjUzODQgKzAwMDAKQEAgLTMyLDYgKzMyLDcgQEAKIAkJUm5kRGlzdHIgKmNvb2tpZVZhbHVlU2l6
ZSgpIGNvbnN0OwogCQlib29sIHJlcUJvZHlBbGxvd2VkKGRvdWJsZSAmZikgY29uc3Q7CiAJCVJu
ZERpc3RyICpwcm90b2NvbHMoY29uc3QgVG9rZW5JZGVudGlmaWVyICZwcm90b2NvbE5hbWVzKSBj
b25zdDsKKwkJYm9vbCByZXVzZVBvcnQoYm9vbCAmcnApIGNvbnN0OwogCiAJcHJvdGVjdGVkOgog
CQl2aXJ0dWFsIFN5blN5bSAqZHVwZShjb25zdCBTdHJpbmcgJmRUeXBlKSBjb25zdDsKZGlmZiAt
TmF1ciBwb2x5Z3JhcGgtNC45LjAub3JpZy9zcmMvcnVudGltZS9BZ2VudC5jYyBwb2x5Z3JhcGgt
NC45LjAvc3JjL3J1bnRpbWUvQWdlbnQuY2MKLS0tIHBvbHlncmFwaC00LjkuMC5vcmlnL3NyYy9y
dW50aW1lL0FnZW50LmNjCTIwMTQtMTAtMjMgMDA6MjI6MjIuMDAwMDAwMDAwICswMTAwCisrKyBw
b2x5Z3JhcGgtNC45LjAvc3JjL3J1bnRpbWUvQWdlbnQuY2MJMjAxNi0wMS0xMSAxMTozOTo1NS4z
MDc0MDUzMzUgKzAwMDAKQEAgLTEyMiw2ICsxMjIsMTMgQEAKIAlyZXR1cm4gczsKIH0KIAorU29j
a2V0IEFnZW50OjptYWtlTGlzdGVuU29ja2V0KGNvbnN0IE5ldEFkZHIgJmFkZHIsIGJvb2wgcmV1
c2VQb3J0KSB7CisJU29ja2V0IHMobWFrZVNvY2tldChhZGRyKSk7CisJaWYgKCFzIHx8IChyZXVz
ZVBvcnQgJiYgIXMucmV1c2VQb3J0KHRydWUpKSB8fCAhcy5iaW5kKGFkZHIpIHx8ICFzLmxpc3Rl
bigpKQorCQlzLmNsb3NlKCk7CisJcmV0dXJuIHM7Cit9CisKIFNvY2tldCBBZ2VudDo6bWFrZUxp
c3RlblNvY2tldChQb3J0TWdyICpjb25zdCBwb3J0TWdyKSB7CiAJQXNzZXJ0KHBvcnRNZ3IpOwog
CVNvY2tldCBzKG1ha2VTb2NrZXQocG9ydE1nci0+YWRkcigpKSk7CmRpZmYgLU5hdXIgcG9seWdy
YXBoLTQuOS4wLm9yaWcvc3JjL3J1bnRpbWUvQWdlbnQuaCBwb2x5Z3JhcGgtNC45LjAvc3JjL3J1
bnRpbWUvQWdlbnQuaAotLS0gcG9seWdyYXBoLTQuOS4wLm9yaWcvc3JjL3J1bnRpbWUvQWdlbnQu
aAkyMDE0LTEwLTIzIDAwOjIyOjIyLjAwMDAwMDAwMCArMDEwMAorKysgcG9seWdyYXBoLTQuOS4w
L3NyYy9ydW50aW1lL0FnZW50LmgJMjAxNi0wMS0xMSAxMDoxNDowOS4wNzA0NjUzODQgKzAwMDAK
QEAgLTU0LDYgKzU0LDcgQEAKIAkJdmlydHVhbCB2b2lkIGRlc2NyaWJlKG9zdHJlYW0gJm9zKSBj
b25zdDsKIAogCQlTb2NrZXQgbWFrZUxpc3RlblNvY2tldChjb25zdCBOZXRBZGRyICZhZGRyKTsK
KwkJU29ja2V0IG1ha2VMaXN0ZW5Tb2NrZXQoY29uc3QgTmV0QWRkciAmYWRkciwgYm9vbCByZXVz
ZVBvcnQpOwogCQlTb2NrZXQgbWFrZUxpc3RlblNvY2tldChQb3J0TWdyICpjb25zdCBwb3J0TWdy
KTsKIAogCXB1YmxpYzoKZGlmZiAtTmF1ciBwb2x5Z3JhcGgtNC45LjAub3JpZy9zcmMvc2VydmVy
L1NlcnZlci5jYyBwb2x5Z3JhcGgtNC45LjAvc3JjL3NlcnZlci9TZXJ2ZXIuY2MKLS0tIHBvbHln
cmFwaC00LjkuMC5vcmlnL3NyYy9zZXJ2ZXIvU2VydmVyLmNjCTIwMTQtMTAtMjMgMDA6MjI6MjIu
MDAwMDAwMDAwICswMTAwCisrKyBwb2x5Z3JhcGgtNC45LjAvc3JjL3NlcnZlci9TZXJ2ZXIuY2MJ
MjAxNi0wMS0xMSAxMDoxNDowOS4wNzQ0NjUzMTEgKzAwMDAKQEAgLTg3LDcgKzg3LDkgQEAKIAkJ
dGhlSG9zdElkeCA9IC0xOwogCiAJLy8gc2V0dXAgbGlzdGVuIHNvY2tldCAoWFhYOiBzaG91bGQg
YmUgbW92ZWQgdG8gc3RhcnQoKSwgdXNlIENvbW1lbnQpCi0JdGhlU29jayA9IG1ha2VMaXN0ZW5T
b2NrZXQodGhlSG9zdCk7CisJYm9vbCByZXVzZVBvcnQ7CisJY2ZnLT5yZXVzZVBvcnQocmV1c2VQ
b3J0KTsKKwl0aGVTb2NrID0gbWFrZUxpc3RlblNvY2tldCh0aGVIb3N0LCByZXVzZVBvcnQpOwog
CWlmICghdGhlU29jaykgewogCQljZXJyIDw8ICJlcnJvcjogdGhlIHNlcnZlciBgIiA8PCB0aGVL
aW5kIDw8ICInIGNhbm5vdCBsaXN0ZW4gb24gIiA8PCB0aGVIb3N0CiAJCQk8PCAiOyAiIDw8IEVy
cm9yOjpMYXN0KCkgPDwgZW5kbDsK


--=-rwMms1lQ9a0+8Fju+tDU
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Users mailing list
[email protected]
http://lists.web-polygraph.org/mailman/listinfo/users
--=-rwMms1lQ9a0+8Fju+tDU--