Java 开始成千上万的工作
我是石英行业的新手,我需要每10秒开始一万份工作 可能吗?如果是,我怎么做?是否有特定配置或任何建议 编辑: 我将提供有关我的问题的更多信息: 我的平台面向大约1000名用户。每个用户最多可以有10个仪表盘。每个仪表板都与托管在单独服务器上的文本文件相关。这些文本文件可以由我可能无法控制的其他应用程序更新。用户可以配置其仪表板的更新频率。最小允许值为10秒 为了解决这个问题,我认为我们应该为每个仪表板创建一个作业/线程/进程/工作者(可以随意称呼它:),并将“作业”配置为每x秒读取一次相关文本文件,并在检测到更改时更新仪表板 所以,在最坏的情况下,我的解决方案应该每10秒支持10000个“作业” 技术环境是:Java 开始成千上万的工作,java,quartz-scheduler,crontab,Java,Quartz Scheduler,Crontab,我是石英行业的新手,我需要每10秒开始一万份工作 可能吗?如果是,我怎么做?是否有特定配置或任何建议 编辑: 我将提供有关我的问题的更多信息: 我的平台面向大约1000名用户。每个用户最多可以有10个仪表盘。每个仪表板都与托管在单独服务器上的文本文件相关。这些文本文件可以由我可能无法控制的其他应用程序更新。用户可以配置其仪表板的更新频率。最小允许值为10秒 为了解决这个问题,我认为我们应该为每个仪表板创建一个作业/线程/进程/工作者(可以随意称呼它:),并将“作业”配置为每x秒读取一次相关文本文
- Ubuntu 14.04服务器版
- 内存:6G内存
- CPU:4x2GHz
- JavaEE、Spring和cxf
#============================================================================
# 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的问题;我们可能会提供比您提议的更好的解决方案。