threadpool-Oceanus配置说明

2019-03-10 12:56|来源: 网路

configurations.xml 该配置文件说明了 Oceanus 初始化内容,文件名称不固定。root 节点为 <configurations> </configurations>,下面介绍配置节点:


2.1 threadpool

作用:

   Oceanus 内部执行器

属性:

   id – 唯一标识

   size – 线程池大小。根据DB操作并发量和服务器硬件情况调整

   qsize – 执行队列的长度

   timeout – 执行超时时间

示例:

   <threadpool id="default" size="100" qsize="1024" timeout="100000" />



本文来源:58同城Oceanus使用文档


相关问答

更多
  • Threadpool正在使后台线程执行在主线程中止时将停止中止的任务。 您必须等待所有线程完成,然后刷新流。 由于你遗漏了最后几行,你很可能只有一个Flush()问题,而不是中止的线程。 我相信你也知道你的代码比在单个线程中完成工作更糟糕。 在创建所有开销的同时,没有真正的并行发生。 Threadpool is making Background threads to perform the tasks that will stop be aborted if the main thread is abor ...
  • 依赖线程池空虚是不可能和危险的。 你能做的就是自己计算你的活动任务。 监视器的低级方法: class Program { static object _ActiveWorkersLock = new object(); static int _CountOfActiveWorkers; static void Go(object state) { try { ...
  • 线程池将为频繁和相对较短的操作提供益处 重用已经创建的线程,而不是创建新的线程(一个昂贵的过程) 调整线程创建的速度,当有一个新的工作项目的请求突发(我相信这只是在.NET 3.5) 如果您排队100个线程池任务,则只会使用与已创建的线程相同的线程来为这些请求提供服务(例如10)。 线程池会进行频繁检查(相信3.5 SP1中每500ms),如果有排队任务,则会产生一个新的线程。 如果您的任务很快,那么新线程的数量将会很小,并且重用10个左右的线程来缩短任务速度将比创建100个线程快。 如果您的工作负载始终具 ...
  • 如果要执行的线程数量超过taskQueue大小,将会阻止调用线程? 队列的大小是未运行的任务数。 通常,即使线程繁忙,它也会为空。 具有与线程数匹配的队列长度没有意义,此时没有什么特别的事情发生。 在这里我们可以看到,在这种情况下,它是被拒绝的执行处理程序的工作 仅当队列已满时才会调用拒绝处理程序。 您的队列没有限制,因此即使您支持此功能也不会调用它。 但是,如果它确实有限制并且它支持此功能,则典型的行为是抛出异常。 你可以让它做其他的事情,例如阻止,让当前线程运行任务(这是我的首选)或者忽略任务。 我仍然 ...
  • 如果您需要这种行为,我建议使用Task类(在.NET 4.0中添加)。 它支持取消 ,您可以让任意数量的任务监听相同的取消令牌,这使您可以通过单个方法调用取消所有任务。 更新(非4.0解决方案): 你真的只有两个选择。 一:实现自己的事件解复用器(由于64个句柄的等待限制,这比它看起来要复杂得多); 我不能推荐这个 - 我必须做一次(在非托管代码中),这很可怕。 这留下了第二个选择:有信号取消任务。 当然, RegisteredWaitHandle.Unregister可以取消RWFSO部分。 QUWI更复 ...
  • 不同之处在于SimpleThreadPool(或Quartz属性中配置的任何其他线程池实现)提供的线程是非托管线程 ,即不由容器管理的线程。 另一方面,配置的工作管理器提供的线程是由容器创建的托管线程 ,通常通过容器的管理控制台进行配置。 在J2EE世界中,通常非常不鼓励创建非托管线程,如果你检查J2EE规范,你会发现它在那里被明确提到(或曾经在那里)。 您可能需要查看此SO帖子以获取有关该主题的更多详细信息。 The difference is that threads provided by the S ...
  • 嗯看起来应该工作。 日志声明怎么说你不使用你的线程池? 注意事项: 1)您的路由需要利用线程池来取消默认模板。 2)您始终可以通过以下语法手动将线程池分配给组件:executorServiceRef =“outTestThreadPoolProfile”但请确保检查组件的文档 3)如果您的默认线程池配置文件不起作用,您可以简单地使用标准ThreadPool标记来创建可以直接分配给组件的隔离线程池。 Hmm looks like that should work. What about the logging ...
  • 目前无法配置线程优先级,因为该设置对许多平台大多没有影响,因此符合安慰剂的条件。 如果您启动并主动使用比CPU内核更多的线程,那么由此产生的竞争将是代价高昂并且会浪费资源,因此您最好小心地将线程池大小与CPU绑定部分的可用内核相匹配。 发布的配置示例让我想知道:系统真的有超过30个内核吗? 否则, contexts.admin调度程序无论如何都无法从优先级中获益。 最后,只有一种方法可以为特定任务保留CPU时间,也就是永远不会将这些内核提供给任何其他任务(如果您编写低级C代码并使用Unix实时优先级,还有其 ...
  • 使用.NET 4.0,您可以使用任务并行库: Task.Factory.StartNew(() => { Save(ConcurrentCollectionStorage.Bus1); }); Task.Factory.StartNew(() => { Save(ConcurrentCollectionStorage.Bus2); }); Task.Factory.StartNew(() => { Save(ConcurrentCollectionSto ...
  • 通过设置最小线程数,您要求.NET运行时唯一要做的就是为线程池分配至少2个线程。 你不是要求它仅限于2。 因此,无法保证您的程序将使用多少线程。 这取决于您的系统和许多其他因素。 我做了一个简单的测试(对你的程序进行微小改动以跟踪进入睡眠呼叫的同时线程)一次运行最多4次,另一次运行3次,另一次运行7次,另一次运行10次等。 您真的不需要更改线程池大小。 你想达到什么目的? By setting the minimum number of threads, the only thing you're aski ...