【问题标题】:GlassFish 5 Valid SSL Certificate SLOW https ERROR Write timeout exceeded when trying to flush the dataGlassFish 5 有效的 SSL 证书慢速 https 错误尝试刷新数据时超出写入超时
【发布时间】:2018-05-09 15:43:38
【问题描述】:

大家好,请验证我在 glassfish 上的 SSL 实现?

我的 glassfish 服务器中有一个域 cloud3.dyalogodev.com。

SSL 可以充电,但我的应用程序的渲染速度很慢,你能测试一下吗?

https://cloud3.dyalogodev.com:8182/dyalogocbx/

BUt 没有 https 很快:

http://cloud3.dyalogodev.com:8081/dyalogocbx/

In addition the server throw an error:

java.io.IOException: Write timeout exceeded when trying to flush the data
    at org.glassfish.grizzly.http.io.OutputBuffer.blockAfterWriteIfNeeded(OutputBuffer.java:1023)
    at org.glassfish.grizzly.http.io.OutputBuffer.write(OutputBuffer.java:725)
    at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:336)
    at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:323)
    at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:154)
    at java.nio.channels.Channels$WritableByteChannelImpl.write(Channels.java:458)
    at com.sun.faces.application.resource.ResourceHandlerImpl.handleResourceRequest(ResourceHandlerImpl.java:351)
    at javax.faces.application.ResourceHandlerWrapper.handleResourceRequest(ResourceHandlerWrapper.java:178)
    at org.primefaces.application.resource.PrimeResourceHandler.handleResourceRequest(PrimeResourceHandler.java:87)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:667)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1580)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:338)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:100)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:250)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.glassfish.tyrus.servlet.TyrusServletFilter.doFilter(TyrusServletFilter.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:250)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:652)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:591)
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:371)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:238)
    at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:463)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:168)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:242)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
    at org.glassfish.grizzly.http2.Http2Session.sendMessageUpstream(Http2Session.java:1309)
    at org.glassfish.grizzly.http2.Http2Session.sendMessageUpstream(Http2Session.java:1285)
    at org.glassfish.grizzly.http2.Http2ServerFilter$2.run(Http2ServerFilter.java:1033)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:593)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:573)
    at java.lang.Thread.run(Thread.java:748)


java.io.IOException: Connection is closed
    at org.glassfish.grizzly.nio.NIOConnection.assertOpen(NIOConnection.java:460)
    at org.glassfish.grizzly.http.io.OutputBuffer.write(OutputBuffer.java:687)
    at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:336)
    at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:323)
    at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:154)
    at java.nio.channels.Channels$WritableByteChannelImpl.write(Channels.java:458)
    at com.sun.faces.application.resource.ResourceHandlerImpl.handleResourceRequest(ResourceHandlerImpl.java:351)
    at javax.faces.application.ResourceHandlerWrapper.handleResourceRequest(ResourceHandlerWrapper.java:178)
    at org.primefaces.application.resource.PrimeResourceHandler.handleResourceRequest(PrimeResourceHandler.java:87)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:667)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1580)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:338)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:100)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:250)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.glassfish.tyrus.servlet.TyrusServletFilter.doFilter(TyrusServletFilter.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:250)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:652)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:591)
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:371)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:238)
    at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:463)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:168)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:242)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
    at org.glassfish.grizzly.http2.Http2Session.sendMessageUpstream(Http2Session.java:1309)
    at org.glassfish.grizzly.http2.Http2Session.sendMessageUpstream(Http2Session.java:1285)
    at org.glassfish.grizzly.http2.Http2ServerFilter$2.run(Http2ServerFilter.java:1033)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:593)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:573)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.io.IOException: Locally closed

请帮助我,谢谢。

【问题讨论】:

  • 我刚刚尝试了您的 https 链接,响应时间非常好!问题是否已解决,还是间歇性问题?
  • 感谢您的评论,请在 mozilla firefox 中尝试。
  • 我只想提一下,在使用 Firefox 时,我偶尔也会看到渲染其他 https 链接的长时间延迟,尤其是对于谷歌新闻 (news.google.com/gn/news/headlines?hl=en&ned=us&gl=US)。虽然您的代码可能存在问题,但对于大量使用的谷歌 URL 来说似乎不太可能。但是,区别在于其他 https URL 在 Firefox 中很少加载缓慢,而您的总是如此。 CC Graph Reduction 期间加载 google 新闻页面的延迟类似于我在下面的屏幕截图中为您的页面显示的延迟。
  • 尝试过是否不是偶然的 http/2 问题? forum.primefaces.org/…
  • 如果我禁用 http/2,SSL 也很快(虽然比 http 慢)。对我来说,在 FireFox (60.0.2) 和 Chrome (67.0.3396.99) 中使用 http/2 需要 10-15 秒,使用 http/1.1 (都是 ssl) 和 http/2 需要 3 秒我看到资源在两者中都无法加载FF 和 Chrome

标签: ssl glassfish-5


【解决方案1】:

这不是您感兴趣的问题的解决方案,但我需要比 cmets 更多的空间来提供一些反馈。

  • 在一台 Windows 10 机器上,我在几个浏览器中尝试了 URL https://cloud3.dyalogodev.com:8182/dyalogocbx/:Chrome、Edge、Firefox、Opera 和 Vivaldi。
  • 在所有浏览器中响应都很快,除了 Firefox,它的响应大约需要一分钟才能完成。
  • 使用 Web Developer > Performance 我捕获了the Waterfall output。请参阅下面的屏幕截图。
  • 似乎几乎所有时间都花在了垃圾回收的各个阶段(CC Graph Reduction非增量 GCMinor GCCycle Collection),或这些阶段之间的转换。屏幕截图显示,除了 CC Graph Reduction,Mozilla 将其描述为“Cycle Collection 的准备/预优化”之外,只花费了大约 16 秒。花费这么长时间显然是有问题的。
  • 请注意,屏幕截图底部还有一些警告

    1. 来源为“https://cloud3.dyalogodev.com:8182/dyalogocbx/javax.faces.resource/jquery/jquery-plugins.js.jsf?ln=primefaces&v=6.0”的
    2. TypeError: this.jq.draggable 不是函数[了解更多]
  • 以上信息只是描述性的,不是诊断性的。我不知道是什么导致了这个问题。也许您可以简化 JSF 页面中的代码,然后在性能问题消失后逐步重新引入复杂性。

  • 我认为这个问题可能比 Stack Overflow 更适合 Mozilla 论坛或SuperUser

【讨论】:

  • 开启SSL后速度降低正常吗?我读了几篇博客并这么说。
  • 启用 SSL 时会执行更多操作,所以是的,速度降低是正常的
  • Firefox 对我来说与本网站上的 Chrome 不相上下。
猜你喜欢
  • 2017-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-07
  • 2014-10-06
  • 1970-01-01
  • 1970-01-01
  • 2021-01-19
相关资源
最近更新 更多