-
-
Notifications
You must be signed in to change notification settings - Fork 618
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Enable TCP_NODELAY flag #1751
Enable TCP_NODELAY flag #1751
Conversation
small note - the stream can be any duplex Stream instance, so might worth adding a check if |
But I'm more than happy to make any changes needed to the PR, just let me know. |
fixes #14990 - there was a bug in `mysql2` [1] when connecting to Azure DBs, but this was subsequently fixed, so this commit bumps the package in Ghost and `knex-migrator`, where this was also bumped - of note, this release includes sidorares/node-mysql2#1666 and sidorares/node-mysql2#1751, which are very interesting [1]: sidorares/node-mysql2#1438
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [mysql2](https://github.com/sidorares/node-mysql2) | dependencies | major | [`^2.2.5` -> `^3.0.0`](https://renovatebot.com/diffs/npm/mysql2/2.2.5/3.2.4) | --- ### Release Notes <details> <summary>sidorares/node-mysql2</summary> ### [`v3.2.4`](https://github.com/sidorares/node-mysql2/blob/HEAD/Changelog.md#​324-httpsgithubcomsidoraresnode-mysql2comparev323v324-2023-04-25) [Compare Source](sidorares/node-mysql2@v3.2.3...v3.2.4) ##### Bug Fixes - **server:** Added missing encoding argument to server-handshake ([#​1976](sidorares/node-mysql2#1976)) ([a4b6b22](sidorares/node-mysql2@a4b6b22)) ### [`v3.2.3`](https://github.com/sidorares/node-mysql2/blob/HEAD/Changelog.md#​323-httpsgithubcomsidoraresnode-mysql2comparev322v323-2023-04-16) [Compare Source](sidorares/node-mysql2@v3.2.2...v3.2.3) ##### Bug Fixes - **types:** add decimalNumbers to createConnection/createPool typings. fixes [#​1803](sidorares/node-mysql2#1803) ([#​1817](sidorares/node-mysql2#1817)) ([bb48462](sidorares/node-mysql2@bb48462)) ### [`v3.2.2`](https://github.com/sidorares/node-mysql2/blob/HEAD/Changelog.md#​322-httpsgithubcomsidoraresnode-mysql2comparev321v322-2023-04-16) [Compare Source](sidorares/node-mysql2@v3.2.1...v3.2.2) ##### Bug Fixes - `ConnectionOptions` conflict between `mysql` and `mysql/promise` ([#​1955](sidorares/node-mysql2#1955)) ([eca8bda](sidorares/node-mysql2@eca8bda)) ### [`v3.2.1`](https://github.com/sidorares/node-mysql2/blob/HEAD/Changelog.md#​321-httpsgithubcomsidoraresnode-mysql2comparev320v321-2023-04-13) [Compare Source](sidorares/node-mysql2@v3.2.0...v3.2.1) ##### Bug Fixes - Add typings for Connection.promise(). ([#​1949](sidorares/node-mysql2#1949)) ([e3ca310](sidorares/node-mysql2@e3ca310)) - PoolConnection redundancy when extending Connection interface in TypeScript ([7c62d11](sidorares/node-mysql2@7c62d11)) ### [`v3.2.0`](https://github.com/sidorares/node-mysql2/blob/HEAD/Changelog.md#​320-httpsgithubcomsidoraresnode-mysql2comparev312v320-2023-03-03) [Compare Source](sidorares/node-mysql2@v3.1.2...v3.2.0) ##### Features - maxVersion ssl option to tls.createSecureContext ([0c40ef9](sidorares/node-mysql2@0c40ef9)) ### [`v3.1.2`](https://github.com/sidorares/node-mysql2/blob/HEAD/Changelog.md#​312-httpsgithubcomsidoraresnode-mysql2comparev311v312-2023-02-08) [Compare Source](sidorares/node-mysql2@v3.1.1...v3.1.2) ##### Bug Fixes - update `lru-cache` reset method to clear ([114f266](sidorares/node-mysql2@114f266)) ### [`v3.1.1`](https://github.com/sidorares/node-mysql2/blob/HEAD/Changelog.md#​311-httpsgithubcomsidoraresnode-mysql2comparev310v311-2023-02-07) [Compare Source](sidorares/node-mysql2@v3.1.0...v3.1.1) ##### Bug Fixes - remove accidental log in caching_sha2\_password.js ([c1202b6](sidorares/node-mysql2@c1202b6)) ### [`v3.1.0`](https://github.com/sidorares/node-mysql2/blob/HEAD/Changelog.md#​310-httpsgithubcomsidoraresnode-mysql2comparev301v310-2023-01-30) [Compare Source](sidorares/node-mysql2@v3.0.1...v3.1.0) ##### Features - cleanup buffer/string conversions in hashing/xor helpers that were failing in Bun ([a2392e2](sidorares/node-mysql2@a2392e2)) ##### Bug Fixes - when port is pased as a string convert it to a number (Bun's net.connect does not automatically convert this) ([703ecb2](sidorares/node-mysql2@703ecb2)) ### [`v3.0.1`](https://github.com/sidorares/node-mysql2/blob/HEAD/Changelog.md#​301-httpsgithubcomsidoraresnode-mysql2comparev300v301-2023-01-13) [Compare Source](sidorares/node-mysql2@v3.0.0...v3.0.1) ##### Miscellaneous Chores - release 3.0.1 ([d5a6b2c](sidorares/node-mysql2@d5a6b2c)) ### [`v3.0.0`](https://github.com/sidorares/node-mysql2/blob/HEAD/Changelog.md#​300-httpsgithubcomsidoraresnode-mysql2comparev300-rc1v300-2023-01-12) [Compare Source](sidorares/node-mysql2@v2.3.3...v3.0.0) - named-placeholders library is updated to use newer `lru-cache` dependency, allowing it do dedupe and be shared between mysql2 and named-placeholders - sidorares/node-mysql2#1711, mysqljs/named-placeholders#19 - `chai` and `mocha` moved to devDependencies [#​1774](sidorares/node-mysql2#1774) - Amazon RDS ssl certificates updated including AWS China [#​1754](sidorares/node-mysql2#1754) - `TCP_NODELAY` flag enabled, avoiding long connect timeout in some scenarios [#​1751](sidorares/node-mysql2#1751) - typing improvements: [#​1675](sidorares/node-mysql2#1675), [#​1674](sidorares/node-mysql2#1674) - fix: ensure pooled connections get released [#​1666](sidorares/node-mysql2#1666) ##### Miscellaneous Chores - release 3.0.0 ([11692b2](sidorares/node-mysql2@11692b2)) ### [`v2.3.3`](sidorares/node-mysql2@v2.3.2...v2.3.3) [Compare Source](sidorares/node-mysql2@v2.3.2...v2.3.3) ### [`v2.3.2`](sidorares/node-mysql2@v2.3.1...v2.3.2) [Compare Source](sidorares/node-mysql2@v2.3.1...v2.3.2) ### [`v2.3.1`](sidorares/node-mysql2@v2.3.0...v2.3.1) [Compare Source](sidorares/node-mysql2@v2.3.0...v2.3.1) ### [`v2.3.0`](sidorares/node-mysql2@v2.2.5...v2.3.0) [Compare Source](sidorares/node-mysql2@v2.2.5...v2.3.0) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC43NC4yIiwidXBkYXRlZEluVmVyIjoiMzQuNzQuMiJ9--> Co-authored-by: Renovate Bot <[email protected]> Reviewed-on: https://gitea.vylpes.xyz/RabbitLabs/Droplet/pulls/128 Reviewed-by: Vylpes <[email protected]> Co-authored-by: RenovateBot <[email protected]> Co-committed-by: RenovateBot <[email protected]>
This fixes the massive slowness I experienced on some machines (Amazon Linux 2 on AWS EC2), where each query was taking ~60ms. Running a script that executes 100 UPDATE queries in sequence takes ~6.5s before patch, and 0.3s after patch.
And somewhat less interestingly.. the setting doesn't make much difference if I execute the script on my local PC. I'm guessing there are settings at the OS level that can amplify this slowness.
I don't know much about the TCP_NODELAY flag, only that it should always be set for time sensitive network communications (like for a MySQL client). And forgetting to set this flag seems to be a common issue, for example this blog post has a nice explanation: https://vorner.github.io/2020/11/06/40-ms-bug.html