Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 开始成千上万的工作_Java_Quartz Scheduler_Crontab - Fatal编程技术网

Java 开始成千上万的工作

Java 开始成千上万的工作,java,quartz-scheduler,crontab,Java,Quartz Scheduler,Crontab,我是石英行业的新手,我需要每10秒开始一万份工作 可能吗?如果是,我怎么做?是否有特定配置或任何建议 编辑: 我将提供有关我的问题的更多信息: 我的平台面向大约1000名用户。每个用户最多可以有10个仪表盘。每个仪表板都与托管在单独服务器上的文本文件相关。这些文本文件可以由我可能无法控制的其他应用程序更新。用户可以配置其仪表板的更新频率。最小允许值为10秒 为了解决这个问题,我认为我们应该为每个仪表板创建一个作业/线程/进程/工作者(可以随意称呼它:),并将“作业”配置为每x秒读取一次相关文本文

我是石英行业的新手,我需要每10秒开始一万份工作

可能吗?如果是,我怎么做?是否有特定配置或任何建议

编辑:

我将提供有关我的问题的更多信息:

我的平台面向大约1000名用户。每个用户最多可以有10个仪表盘。每个仪表板都与托管在单独服务器上的文本文件相关。这些文本文件可以由我可能无法控制的其他应用程序更新。用户可以配置其仪表板的更新频率。最小允许值为10秒

为了解决这个问题,我认为我们应该为每个仪表板创建一个作业/线程/进程/工作者(可以随意称呼它:),并将“作业”配置为每x秒读取一次相关文本文件,并在检测到更改时更新仪表板

所以,在最坏的情况下,我的解决方案应该每10秒支持10000个“作业”

技术环境是:

  • Ubuntu 14.04服务器版
  • 内存:6G内存
  • CPU:4x2GHz
  • JavaEE、Spring和cxf
我已经尝试过JavaQuartz调度器,但在调用web服务时遇到了一些问题,如HeapSpace和沉重。这是我的石英配置:

#============================================================================
# Configure Main Scheduler Properties  
#============================================================================
org.quartz.scheduler.instanceName: MyScheduler
org.quartz.scheduler.instanceId = AUTO
#============================================================================
# Configure ThreadPool  
#============================================================================
org.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount: 100
org.quartz.threadPool.threadPriority: 5
#============================================================================
# Configure JobStore  
#============================================================================
org.quartz.jobStore.misfireThreshold = 60000
org.quartz.jobStore.class: org.quartz.simpl.RAMJobStore
创建作业:

job = JobBuilder.newJob(WidgetGraphJob.class)
                .withIdentity("jobName"), "groupName").requestRecovery(true).build()
创建触发器:

trigger = TriggerBuilder.newTrigger().withIdentity("triggerName", "groupNmae").startNow() .withSchedule(simpleSchedule().withIntervalInSeconds(10).repeatForever()).build();
开始作业:

 Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
 scheduler.scheduleJob(job, trigger);
石英配置:

#============================================================================
# Configure Main Scheduler Properties  
#============================================================================
org.quartz.scheduler.instanceName: MyScheduler
org.quartz.scheduler.instanceId = AUTO
#============================================================================
# Configure ThreadPool  
#============================================================================
org.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount: 100
org.quartz.threadPool.threadPriority: 5
#============================================================================
# Configure JobStore  
#============================================================================
org.quartz.jobStore.misfireThreshold = 60000
org.quartz.jobStore.class: org.quartz.simpl.RAMJobStore
这个问题有没有更好的解决方案?我能把Linux CRANTAB看作一个可能的解决方案(我应该单独管理秒部分,因为CrutAB不支持秒)还是石英足够了,我只需要增强我的硬件配置或者选择另一个JooSturn配置?
非常感谢你的帮助。致以最诚挚的问候

为什么要这样做?创建作业并为它们定义cron表达式,但每10秒数万次似乎太多了。最好的方法是让1000台计算机,每台计算机每10秒运行10个作业。正如我所知,Quartz可用于创建简单或复杂的计划,以执行数十、数百次,甚至数万份工作。但我不知道这样做的好配置。例如,我们可以使用RAMJobStore为每个调度程序实例最多配置100个,但我可以看到一些heapspace问题,丢失作业引用,在只运行100个作业后会很重。我使用的服务器带有4G RAM和4*2GHZ这是一个X Y问题。你有问题X,你认为Y会解决它,但你不是问X,而是问如何使你的解决方案Y起作用。问我们关于X的问题;我们可能会提供比您建议的更好的解决方案。为什么要这样做?为它们创建作业并定义cron表达式,但每10秒数万个似乎太多了。最好的方法是让1000台计算机,每10秒运行10个作业。正如我所知,Quartz可用于创建简单或复杂的计划,以执行数十个、数百个甚至数万个作业。但我不知道这样做的好配置。例如,我们可以使用RAMJobStore为每个调度程序实例最多配置100个,但我可以看到一些heapspace问题,丢失作业引用,在只运行100个作业后会很重。我使用的服务器带有4G RAM和4*2GHZ这是一个X Y问题。你有问题X,你认为Y会解决它,但你不是问X,而是问如何使你的解决方案Y起作用。问我们关于X的问题;我们可能会提供比您提议的更好的解决方案。