我们在应用程序中遇到了一个不寻常的问题,在过去的一个月里,我们的应用程序达到了不可恢复的状态,它在应用程序重启后恢复.
背景:我们的应用程序进行数据库查询以获取一些信息,并且此数据库托管在单独的节点上.
有问题的情况:当分析线程转储时,我们看到所有线程都处于可运行状态,从数据库中获取数据,但即使在20分钟后也没有完成.
按预期发布应用程序重启所有线程都已恢复.CPU使用率也很正常.
下面是线程转储
ThreadPool:2:47"prio = 3 tid = 0x0000000007334000 nid = 0x5f runnable [0xfffffd7fe9f54000] java.lang.Thread.State:RUNNABLE at oracle.jdbc.driver.T2CStatement.t2cParseExecuteDescribe(Native Method)at oracle.jdbc.driver.T2CPreparedStatement .executeForDescribe(T2CPreparedStatement.java:518)at oracle.jdbc.driver.T2CPreparedStatement.executeForRows(T2CPreparedStatement.java:764)at ora
All threads in the same state.
Run Code Online (Sandbox Code Playgroud)
问题:
问题是关于 Web Socket 连接建立过程。
从 RFC 6455 中,我了解到 WebSocket 技术是为基于浏览器的应用程序开发的,用于与服务器建立全双工 TCP 连接。
我的问题,
那么当我们说基于浏览器时,建立Web Socket连接的唯一方法是使用javaScripts?即所有基于浏览器的客户端都可以使用 JS 建立 webSocket 连接吗?
我们可以使用 WebSockets URL 在浏览器上呈现网页吗?浏览器支持吗?
就像在地址栏中输入 ws://www.sample.com/login 会显示登录页面一样?浏览器是否将“ws”理解为协议并建立连接并显示页面?
因此,对于我的问题2,我的理解是,要从浏览器建立 WebSocket 连接,我们应该已经有一个网页,并且该网页中的逻辑将建立 WebSocket 连接。如果我错了,请纠正我。
谢谢普拉迪普