[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--