免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1016 | 回复: 6
打印 上一主题 下一主题

超级郁闷:为何我的程序启动这么慢,在windows上是很快的!各位帮忙 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-12-18 18:07 |只看该作者 |倒序浏览
各位弟兄:我真实急死了!
我的一个java通讯程序,在它的main函数(程序入口)处要启动5,6个模块,每个模块里都会启动2-3个线程来发送,接收或者保存数据,可是现在的状况是:程序运行后启动了第一,二个模块后,主线程死活就停止了一样,后面的模块都不启动了(我的每个模块启动之前都会有log信息打印出来给我看,程序打印1,2个模块的启动信息后,不再打印后面其它模块的信息了),但是这个java进程并没有死,因为已经启动了的两个模块内的线程运行良好。菜鸟俺在windows下跑这个程序一切正常,启动所有模块只有几秒的时间。可是在linux下要好几个小时(20多分钟后,我发现后面的模块还是启动了,晕)。
我真不知道该怎么办,这个程序早两天在linux上也是运行正常的!现在我的扫描模块,接收模块等功能都要在程序启动几十分钟之后才能运行,这程序几乎是费掉了。请求各位大侠给予指教,我的代码如下(在windows上运行正常,而且昨天还在linux上正常,因此我不想考虑代码的问题,请问是否系统在启动第一个,二个模块后,就降低了主线程的优先级别,因此导致1,2模块内的线程运行正常而主线程停止?求问大家了!情况很紧急,谢谢大家了,这是我生产系统上的东东!
Constants.getInstance().initParams();
    logger.info("获取配置文件初始化参数完毕!");

    this.aSleep(100);

    logger.info("正在启动数据库连接管理线程...");
    Thread conManager = new Thread(ConnectionManager.getInstance());
    conManager.start();

/*
    this.aSleep(500);
    logger.info("正在启动业务处理线程....");
    try {
      BusiServer.getInstance().startServer();
    }
    catch (Exception ex) {
      logger.error("启动MM7 业务处理线程出错, 正在退出系统...", ex); //启动处理业务的线程,并向接收服务注册自己
      System.exit(1);
    }
*/
    logger.info("here11111");
    this.aSleep(500);
    logger.info("正在启动SMS业务处理线程....");
    try {
      SMSBusiServer.getInstance().startServer();
    }
    catch (Exception ex) {
      logger.error("启动SMS 业务处理线程出错, 正在退出系统...", ex); //启动处理业务的线程,并向接收服务注册自己
      System.exit(1);
    }
logger.info("here2222222222");
    this.aSleep(100);
    logger.info("正在启动MMS接收线程...");
    if (Constants.MMSC_TYPE.equals("0")) {
      // Huawei sdk
      // MMSReportReceiver.getInstance().start();
    }
    else {
      // 中移mm7
      try {
        MM7MmsRevServer.getInstance().startServer();
      }
      catch (Exception ex) {
        logger.error("启动MM7 MMS接收线程失败, 正在退出系统...", ex); //实际启动了接收和保存的线程
        System.exit(1);
      }
    }

    this.aSleep(100);
    logger.info("正在启动MMS发送线程...");
    try {
      MmsSenderServer.getInstance().startServer(); //每个发送线程包含了一个mm7sender对象用于发送,一个MmsMtResp用于保存网关回应
    }
    catch (Exception ex) {
      logger.error("启动MMS发送线程失败", ex);
      System.exit(1);
    }

    this.aSleep(100);
    logger.info("正在启动扫描数据库MT表线程....");
    try {
      MmsScanServer.getInstance().startServer(); // 扫描数据库MMS发送表线程,扫描只用了一个线程
    }
    catch (Exception ex) {
      logger.error("启动扫描数据库MMS发送表线程失败", ex);
      System.exit(1);
    }

论坛徽章:
0
2 [报告]
发表于 2005-12-18 18:25 |只看该作者
大家救命啦,明天周1了

论坛徽章:
0
3 [报告]
发表于 2005-12-18 21:13 |只看该作者
顶一下,大家指点一下吧,我真的找不出原因,

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
4 [报告]
发表于 2005-12-19 00:51 |只看该作者
昨天正常,今天不正常, 那你应该想想昨天和今天的系统/程序有什么不同.

论坛徽章:
0
5 [报告]
发表于 2005-12-19 08:46 |只看该作者
程序真的没什么不同呀,系统是否有人做了改动,我不知道...................

论坛徽章:
0
6 [报告]
发表于 2005-12-19 09:19 |只看该作者
停止系統中不必要的服務

论坛徽章:
0
7 [报告]
发表于 2005-12-19 10:54 |只看该作者
系统中只启动了oracle服务,而这个是必须的呀。用top命令看我的系统,其实cpu和内存都是非常非常充裕的。都还只使用了0.x%,呵呵,大侠们,请帮我找找几个原因,好吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP