一台Java服务器如何跑多少个线程

一台Java服务器如何跑多少个线程,第1张

首先确认你是cpu密集型的还是io密集型的,

如果是cpu密集型的线程数可以设置到和cpu个数一致,

如果是io密集型的,首先需要确认你io wait的时间,线程数和io wait时间成正比, 具体需要根据测试得出。

线程池的最大线程数:

1、net40,32位机器最大线程数,每核1023个

2、net40,64位机器最大线程数,每核32768个

3、net30,最大线程数,每核250个

4、net20,最大线程数,每核25个

默认的最小线程数是每核1个。在服务器端环境,比如iis下的aspnet最小线程数会更大可能超过50。

线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池将插入另一个辅助线程来使所有处理器保持繁忙。如果所有线程池线程都始终保持繁忙,但队列中包含挂起的工作,则线程池将在一段时间后创建另一个辅助线程但线程的数目永远不会超过最大值。超过最大值的线程可以排队,但他们要等到其他线程完成后才启动。

组成部分:

服务器程序利用线程技术响应客户请求已经司空见惯,可能您认为这样做效率已经很高,但您有没有想过优化一下使用线程的方法。该文章将向您介绍服务器程序如何利用线程池来优化性能并提供一个简单的线程池实现。

1、线程池管理器(ThreadPoolManager):用于创建并管理线程池。

2、工作线程(WorkThread):线程池中线程。

3、任务接口(Task):每个任务必须实现的接口,以供工作线程调度任务的执行。

4、任务队列:用于存放没有处理的任务。提供一种缓冲机制。

256。websocket限制线程数量是256。256的限制是Chrome浏览器对WebSocket进行的限制。而实际上受电脑的处理能力的限制,还有实现方法的限制,以及线程复杂程度的限制,并发数量远达不到这个数字。客户机与已联结服务器之间创建的每个 WebSocket 都需要两个 WebSocket 工作程序线程。max-worker-threads设置必须配置为允许使用此线程。

这阵子开始做比较基因组的项目,由于没有root而且也不想折腾orthomcl,所以首选orthofinder,故而先是安装,这次使用conda安装

安装完成之后,本来打算用raxml进行建树 *** 作的,但一旦软件进行check的时候,就会发现raxml没有安装,但你检查一下raxml确实是已经安装好了的,这时你进去orthofinder的配置文件,就会发现原来默认用的是raxmlHPC-AVX,而你检查的时候只有raxmlHPC-AVX2,所以需要进去修改一下

而后就可以选择跑程序的选择了

然后就是等,结果一等就是5天,我以为跑完了,结果就这样报错了

百度查了一下原因,原来是使用shell时候,默认环境里是直接服务器多少线程就多少线程,即使你被限制了,软件还是默认你有那么多线程,如果达不到就会报错,故而我们需要在软件中限制一下运行环境中的线程数,提前给软件一个提示,我这里就只有这么多线程,你不能超过这个数,然后软件检查的时候,已经被你提前通知了就不会报错了,具体修改方法如下:

再次运行就不会报错了。

同时如果服务器被限制到线程,在运行一些java软件的时候也会出现GCthreads报错,这个真的就是看用的软件的运气了,如果软件写得好,那可以通过下面这样来限制环境的线程数

正常就可以运行了,但是类似tassel这个坑爹软件的话,会提示

如果你不做限制,或者限制接近你被限制的线程总数,则会提示这样的报错

具体接近看我后面怎么试了,幸好还有其他服务器可以用,转移一下数据就行,但也是够烦的,祝大家都买得起自己的塔式服务器,当自己的管理员,不用被限制到


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/12674067.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)

保存