Мы используем молы версию 9.3.11 Версии контейнер пристани для развертывания нашего приложенияИспользования PERMESSAGE_DEFLATE вызывая нативную утечку памяти в JETTY9.3.11
мы используем клиент Тира для подключения клиента к серверу WebSocket, что мы развернутый.
при подключении с помощью следующего кода:
WebSocket ws = null;
try {
ws = new WebSocketFactory().createSocket(server)
.addListener(new NotifierAdapter(userId, channel))
.addExtension(WebSocketExtension.PERMESSAGE_DEFLATE).connect();
} catch (WebSocketException we) {
connect(server, userId, channel);
}catch(Exception e)
{
e.printStackTrace();
}return ws;
Около 8000 соединений моя машина принимает 40% памяти
Но с прицелом модификации кода (удаление выкачать расширение)
try {
ws = new WebSocketFactory().createSocket(server)
.addListener(new NotifierAdapter(userId, channel))
.connect();
} catch (WebSocketException we) {
connect(server, userId, channel);
}catch(Exception e)
{
e.printStackTrace();
}return ws;
Был способен подключаться к 15000 соединениям с 15% -ой памятью Есть ли утечка с соответствующими выпрямителями даже в последней версии J сервер Этти ..
Есть ли способ отключить PERMESSAGE_DEFLATE в серверной стороне причала .. Также мы используем пружинный WebSocket прохождения СТРАТЕГИИ jettyrequestupgrade
Spring конфигурационный код выглядит следующим образом:
@Configuration
@EnableWebMvc
@EnableAspectJAutoProxy
@EnableWebSocket
public class WebMVCConfig extends WebMvcConfigurerAdapter implements WebSocketConfigurer {
private static final String NOTIFIER_ENDPOINT_URL = "/notificationHandler";
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(socketHandler(), NOTIFIER_ENDPOINT_URL).setAllowedOrigins("*");
}
@Bean
public WebSocketHandler socketHandler() {
return new NotificationSocketHandler();
}
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
@Bean
public DefaultHandshakeHandler handshakeHandler() {
WebSocketPolicy policy = new WebSocketPolicy(WebSocketBehavior.SERVER);
policy.setInputBufferSize(8192);
policy.setIdleTimeout(600000);
WebSocketServerFactory ws=new WebSocketServerFactory(policy);
ws.getExtensionFactory().unregister("permessage-deflate");
return new DefaultHandshakeHandler(new JettyRequestUpgradeStrategy(ws));
}
}
Хотя я сделал un register of permessage-deflate, когда я подключаюсь из браузера в заголовке ответа, я вижу, что этот флаг по-прежнему включен, любые другие изменения должны быть сделаны в контейнере для этого?
Или есть какие-либо проблемы с конфигурацией пружины WebSocket:
Также заголовок ответа выглядит следующим образом:
Connection:Upgrade
Sec-WebSocket-Accept:xbbUnu7pDWs9Q0st4T1LzsIfqao=
Sec-WebSocket-Extensions:permessage-deflate
Upgrade:WebSocket
Я думаю, что ошибка ниже Havent решен.
https://github.com/eclipse/jetty.project/issues/293
Есть ли обходной путь для этого (Explicit конфигурации в молы сервере отключить PERMESSAGE_DEFLATE в молы сервера контейнера или пружинной конфигурации для Jetty
После поиска я не смог найти какое-либо решение на контейнере сервера конфигурации/код с пружинным websocket не работал.
Как обходной путь я написал перехватчик, который удалит параметр Sec Websocket entension из заголовка .. так что этот сервер отправит ответ без этого расширения
Я уже сделал незарегистрированную версию этого расширения. Политика WebSocketPolicy = новая WebSocketPolicy (WebSocketBehavior.SERVER); policy.setInputBufferSize (8192); policy.setIdleTimeout (600000); WebSocketServerFactory ws = new WebSocketServerFactory (политика); ws.getExtensionFactory(). Unregister ("permessage-deflate"); return new DefaultHandshakeHandler (новая версия JettyRequestUpgradeStrategy (ws)); –
Поскольку мы делаем unregister на websocketServerFactory, он должен отключить дефлят разрешения, но с указанным выше кодом, указанным также в браузере Chrome, я все еще вижу Connection: Upgrade Sec-WebSocket-Accept: xbbUnu7pDWs9Q0st4T1LzsIfqao = Sec-WebSocket-Extensions: permessage -deflate..может ли вы предоставить любое прерывание работы в контейнере сервера (конфигурации сервера причала) –
Также есть ли что-либо подобное в контейнере контейнера-пристани (не приложение) http://stackoverflow.com/questions/28894316/tomcat- jsr356-websocket-disable-permessage-deflate-compression –