最近遇到线程池的问题,默认mongodb为每个连接(即new 出的一个连接对象)分配了一个线程池,里面最多有10个线程,网上说可以通过MongoOpection的connectionPerHost参数来调整线程池的大小,但是实际上无论我怎么修改这个参数的值线程池的大小都是10,请问这个是为什么,是不是有什么地方也要修改?
另外,对于一个网页的应用,是客户端每次点击界面产生一个连接(new一个连接的对象)的设计好,还是在程序开始的时候new一个连接,然后分配给它较大的线程池,每次客户连接就从线程池里面取一个的方式好? 个人感觉第一种在高并发的情况下对系统的负载较高。
J'ai trouvé la raison moi-même :
1 Le nombre de threads par défaut est 10 car la version du pilote JAVA utilisée est trop ancienne. La version est 2.2 et la dernière version est 2.12. Le pool de threads par défaut pour une connexion a été défini sur 100
. 2 La suggestion donnée dans la documentation officielle est d'ouvrir une connexion puis de prendre la connexion du pool de threads
3 La classe MongoOperation a été supprimée dans la version 2.12, mais elle peut être utilisée. Bien que la définition du paramètre connectionPerHost puisse ostensiblement modifier le nombre de threads dans le pool de threads dans les paramètres de connexion, en fait la limite supérieure du pool de threads en arrière-plan du système. est toujours 100, et le paramètre ne prend pas effet (je me demande s'il existe une autre méthode de réglage), mais personnellement, je pense que ce n'est pas trop important si le pool de threads peut systématiquement occuper plus de 100, il y a probablement quelque chose qui ne va pas. la conception du système