Skip to content
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

[native] Transfer idle HTTPSession between IO threads in exchange source #22922

Merged
merged 1 commit into from
Jun 5, 2024

Conversation

Yuhta
Copy link
Contributor

@Yuhta Yuhta commented Jun 4, 2024

Currently each endpoint (server) has only one SessionPool, which can only be attached to one EventBase. If there is some skewness among the distribution (i.e. too many endpoints being attached to one event base), that event base would become bottleneck and cause regression in query wall time.

Fix this by creating one SessionPool for each endpoint and event base pair. Allow transfer of idle session between different event bases by using ServerIdleSessionController. This way we eliminate the bottleneck in event base while still keep the HttpSessions reusable.

After the fix, enabling connection pool should no longer cause any regression to wall time. The SSL handshake cost (EVP_DigestSignFinal) is not visible in shuffle heavy queries when connection pool is enabled.

Reviewed By: xiaoxmeng, arhimondr

Differential Revision: D57842433

… source (prestodb#22903)

Summary:

Currently each endpoint (server) has only one `SessionPool`, which can only be attached to one `EventBase`.  If there is some skewness among the distribution (i.e. too many endpoints being attached to one event base), that event base would become bottleneck and cause regression in query wall time.

Fix this by creating one `SessionPool` for each endpoint and event base pair.  Allow transfer of idle session between different event bases by using `ServerIdleSessionController`.  This way we eliminate the bottleneck in event base while still keep the `HttpSession`s reusable.

After the fix, enabling connection pool should no longer cause any regression to wall time.  The SSL handshake cost (`EVP_DigestSignFinal`) is not visible in shuffle heavy queries when connection pool is enabled.

Reviewed By: xiaoxmeng, arhimondr

Differential Revision: D57842433
@xiaoxmeng xiaoxmeng merged commit ab3bda7 into prestodb:master Jun 5, 2024
59 checks passed
@wanglinsong wanglinsong mentioned this pull request Jun 25, 2024
36 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants