MM-33893: Disable TCP_NO_DELAY for websocket connections (#17129)
* MM-33893: Disable TCP_NO_DELAY for websocket connections In very large installations, websocket messages cause too much traffic congestion by sending too small packets and thereby cause a drop in throughput. To counter this, we disable the TCP_NO_DELAY flag for websocket connections. This has shown to give noticeable improvements in load tests. We wrap this in a feature flag for now to let it soak in Community first. ```release-note NONE ``` https://mattermost.atlassian.net/browse/MM-33893 * fix gorilla specific conn
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
1f165799e0
Коммит
f60b7437da
@@ -7,6 +7,7 @@ import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net"
|
||||
"net/http"
|
||||
"sync"
|
||||
"sync/atomic"
|
||||
@@ -61,6 +62,17 @@ func (a *App) NewWebConn(ws *websocket.Conn, session model.Session, t i18n.Trans
|
||||
})
|
||||
}
|
||||
|
||||
if a.srv.Config().FeatureFlags.WebSocketDelay {
|
||||
// Disable TCP_NO_DELAY for higher throughput
|
||||
tcpConn, ok := ws.UnderlyingConn().(*net.TCPConn)
|
||||
if ok {
|
||||
err := tcpConn.SetNoDelay(false)
|
||||
if err != nil {
|
||||
mlog.Warn("Error in setting NoDelay socket opts", mlog.Err(err))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
wc := &WebConn{
|
||||
App: a,
|
||||
send: make(chan model.WebSocketMessage, sendQueueSize),
|
||||
|
||||
Ссылка в новой задаче
Block a user