现在服务器上有一个后台服务,这个服务会从其他地方取来需要处理的数据,然后再本地做查询计算,然后将结果更新到远程服务器,本地查询操作较为费时,一个sql连接查询大约需要1分钟时间想充分利用服务器性能(主频2.1G,4U,单cpu为8核16线程),我应该配置线程池的最大线程数是多少比较合适,是否有一般通用的合理线程数计算公式?
应该少强行设定线程数,这种东西有需要就申请,何必额外加个人为限制。
这里你更多的需要考虑连接数,如果你一个sql需要跑一分钟,那么这一分钟这个连接就被一直占用着,而且跑一分钟的sql肯定对db压力也不小,那么你开个500线程一起跑(假设都能够拿到连接),那么你这个db估计也就离跪没多远了。
所以你这里应该更加关注如何降低sql执行时间,而不是关注如何限制线程数。
sql执行时间暂时实在是没有什么办法去缩短,您说的的确是问题的根源,有没有什么办法能动态控制sql连接数,并充分利用cpu
@MSky: 没办法,你这里的木桶效应太明显,不可能在不动sql前充分利用资源。