由于我们在Vaadin应用程序中启用了Push,因此我们得到了以下类型的大量例外情况:
2015-08-10 14:32:06,934 ERROR [Atmosphere-Shared-AsyncOp-14341] com.vaadin.server.communication.PushAtmosphereHandler
Exception in push connection java.io.IOException: Connection remotely closed for c84be8fd-2168-4759-990f-b36bbc4f2712
at org.atmosphere.websocket.WebSocket.write(WebSocket.java:229)
at org.atmosphere.websocket.WebSocket.write(WebSocket.java:219)
at org.atmosphere.websocket.WebSocket.write(WebSocket.java:47)
at org.atmosphere.cpr.AtmosphereResponse$2.write(AtmosphereResponse.java:552)
at org.atmosphere.handler.AbstractReflectorAtmosphereHandler.onStateChange(AbstractReflectorAtmosphereHandler.java:148)
at com.vaadin.server.communication.PushAtmosphereHandler.onStateChange(PushAtmosphereHandler.java:51)
at org.atmosphere.cpr.DefaultBroadcaster.invokeOnStateChange(DefaultBroadcaster.java:1074)
at org.atmosphere.cpr.DefaultBroadcaster.prepareInvokeOnStateChange(DefaultBroadcaster.java:1094)
at org.atmosphere.cpr.DefaultBroadcaster.executeAsyncWrite(DefaultBroadcaster.java:899)
at org.atmosphere.cpr.DefaultBroadcaster$3.run(DefaultBroadcaster.java:520)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745),
Exception in push connection
自启用推送以来,我们也遇到了性能问题。对于某些用户,该应用程序通常会导致无应答的用户界面和无限的加载指示符。
我们的设置是:
Vaadin 7.5.0,自动推模式(websockets)
码头9
具有以下配置的HAProxy(仅相关片段):
defaults
log global
mode http
option httplog
option dontlognull
option forwardfor
option http-server-close
#for jetty, tomcat...
option http-pretend-keepalive
retries 3
option redispatch
maxconn 4000
timeout connect 5s
timeout client 600s
timeout server 600s
timeout client-fin 60s
timeout tunnel 3600s