zoukankan      html  css  js  c++  java
  • windows运行正常但是linux下程序在浏览器控制台console报websocket is closed before the connection is established

    原因:

    连接socket时需要通过IP获取到对应主机的域名来进行连接,此过程会相当耗时。前端有一个超时时间,导致无法在规定时间内收到服务端消息而触发超时操作。

    表现:

    windows及linux下可不同时出现,与DNS解析的配置有关。浏览器console界面会打印大量websocket is closed 错误消息。可能伴随着刷新很慢之类的相关异常现象

    解决方法:

    1 在hosts文件中添加对应IP的反解析,如:示例IP IP ,其中IP为服务机器的内网地址,无效则自己通过堆栈在某个地方debug代码来确认

       我是通过第一种办法解决的;
    
        sudo vim /etc/hosts  (通过hostnamectl获取机器名)
    
        追加一行
    
        内网IP 机器名全称 机器名(去掉.后缀)
    实例:
        192.168.0.11    AP-SHA-VM-P85.internal.sungard.corp AP-SHA-VM-P85

    2 重写SocketWrapperBase类的getLocalName方法,直接返回其私有属性localAddr。此处不做赘述,存在多个类可用于重写代码,根据需要自己合理选择
    3 修改DNS相关配置(可能还存在其他相关配置,个人没有找到方法1外的相关配置,故无法给出实际例子)
    推荐:

          卡顿的时候可以使用JDK自带工具进行分析

           获取程序进程号

    JPS
           获取当前程序的堆栈

    JSTACK PID > stack.log

  • 相关阅读:
    mysql的sql性能分析器
    Maven(一)
    SVN使用(二)
    SVN使用(一)
    php smarty section使用
    php smarty foreach循环注意
    PHP unlink() 函数
    PHP file_exists() 函数
    PHP realpath() 函数
    PHP dirname() 函数
  • 原文地址:https://www.cnblogs.com/huangjinyong/p/13231020.html
Copyright © 2011-2022 走看看