线上奇葩问题汇总

1.正式环境更新后不就服务器cpu飙升,最终服务器卡死,重启tomcat后正常,不就后又再次卡死.javascript

  缘由:更新时使用./shutdown.sh中止服务器,未能将quartz线程杀死,从新启动以后,原认定任务仍然在继续执行.css

  解决:kill 掉进程后从新启动正常. 在代码中增长服务器中止后,手动关闭quartz任务.html

  

public class QuartzStop implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) { }

    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        try {
            Scheduler defaultScheduler = StdSchedulerFactory.getDefaultScheduler();
            defaultScheduler.shutdown(true);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

2.hessian链接通道关闭,但接口地址可以正常访问java

  缘由:设置的hessian链接超时关闭时间太短,在接口尚未返回或整准备返回执行结果时,发现通道已经被关闭.mysql

  解决:增加链接超时关闭时长,改进接口熔断机制.linux

HessianProxyFactory hessianProxyFactory = new HessianProxyFactory();
        hessianProxyFactory.setConnectTimeout(10000);
        hessianProxyFactory.setReadTimeout(10000);

 

 

3.外网,内网可以正常访问页面,可是专网没法打开页面,但接口可以正常访问sql

  缘由:调试发现,页面须要的其中一个js文件返回 http 206 ,curl时也同样,在分段续传的过程当中,防火墙将js其中一段截取了下来,致使续传永远没法完成,持续等待.数据库

  解决:开启服务器压缩,采用gzip方式传输浏览器

  可是,某些浏览器不支持,会增长服务器以及客户端的cpu压力缓存

compression="on"
compressionMinSize="2048"
noCompressionUserAgents="gozilla,traviata"
compressableMimeType="text/html,text/xml,text/javascript,application/x-javascript,application/javascript,text/css,text/plain"

 

4. 新建任务时,任务的建立时间忽然变成了明天的时间,服务器date -R显示时间时区均正常

  缘由:经过hwclock --show 查看linux硬件时间时发现与系统时间相差8小时,而程序获取到的时间正好是这个时间,也就是说代码  System.currentTimeMillis() 

  获取到了硬件时间而不是系统时间,奇怪的是过段时间去查看系统硬件时间又变回正常,暂未找到解决办法.

 

5.mysql 行锁以后没法释放,出现死锁,整个业务卡死

  缘由:mysql 的select ..for update 与oracle存在差别,mysql 不支持nowait的方式,在等待的过程当中,程序向下继续执行了长select操做,同时默认的等待超时时间过长(数据库设置两分钟),致使任务直接卡住两分钟,在此过程当中,整个业务卡死,没法操做.

  解决:取消了锁行后的长select操做,同时将行锁的释放提早,同时在分支处理方式中添加释放锁的操做.

 

6.ORA-01882: timezone region not found

JAVA_OPTS="-Duser.region=CN -Duser.timezone=GMT=GMT+8"

7.tomcat版本升级以后url访问失败

  tomcat 新版本对于url连接中的特殊字符处理,旧版本中空格和中文不作处理可能能够识别,但在新版本中,某些浏览器下中文必须urlencode ,空格必须移除。原来处理图片缓存的url连接以后跟的new Date()须要替换成毫秒值。

 

8.elastic job 启动 Splitter 类中 splitToList 方法找不到。

  更换guava 版本为18.0再也不出现。

相关文章
相关标签/搜索