【问题标题】:Scheduling multiple instance of a single java process调度单个java进程的多个实例
【发布时间】:2015-08-28 02:13:16
【问题描述】:

我们有一个 Java 进程,我们想要对其执行负载测试。此过程对外部供应商进行 REST 调用。我们想监控周末的表现。应该在运行大约 1000 个进程实例的情况下对其进行测试。有哪些可能的方法?

我有两个解决方案:

  1. 在多个终端中启动进程,但是鉴于我们想要 对 1000 个实例执行此操作是不切实际的。

  2. 编写一个 shell 脚本来实例化它,进行克隆。

有没有更好的解决办法?

任何图书馆都会有所帮助。

以下是我们要安排的示例代码:

 public static void main(String[] args) {


    try {
        getToken();
        Thread.sleep(10000);
    } catch (Exception e) {

        e.printStackTrace();
    }


    final Timer timer = new Timer();
    Timer stopTaskTimer = new Timer();
    TimerTask task = new TimerTask() {
        @Override
        public void run() {
            try {
                /*getToken();

                Thread.sleep(15000);*/
                getResponse("#############");


            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    };
    TimerTask stopTask = new TimerTask() {
        @Override
        public void run() {
            timer.cancel();

        }
    };

    timer.scheduleAtFixedRate(task, 0, 60000);
    try {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = sdf.parse("2015-06-20 19:41:30");
        //stopTaskTimer.schedule(stopTask, date);
    } catch (ParseException e) {
        e.printStackTrace();
    }

}

【问题讨论】:

  • 一个代码 sn-p 可能很有用。一般看一下“线程”类。
  • 添加了示例代码sn-p

标签: java scheduled-tasks scheduling scheduler job-scheduling


【解决方案1】:

使用JMeter 或其他类似的负载测试工具。它支持您开箱即用的所有需求。

【讨论】:

    【解决方案2】:

    @h22 可能有更好的解决方案,但要回答您的问题:

    将代码从 main 移动到“run”方法中并让您的类实现“runnable”,然后在“main”中创建一个循环,启动所需数量的 java.lang.Thread https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-11
      • 2020-12-05
      • 2015-12-26
      • 2018-09-30
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      相关资源
      最近更新 更多