最近遇到线程池的问题,默认mongodb为每个连接(即new 出的一个连接对象)分配了一个线程池,里面最多有10个线程,网上说可以通过MongoOpection的connectionPerHost参数来调整线程池的大小,但是实际上无论我怎么修改这个参数的值线程池的大小都是10,请问这个是为什么,是不是有什么地方也要修改?
另外,对于一个网页的应用,是客户端每次点击界面产生一个连接(new一个连接的对象)的设计好,还是在程序开始的时候new一个连接,然后分配给它较大的线程池,每次客户连接就从线程池里面取一个的方式好? 个人感觉第一种在高并发的情况下对系统的负载较高。
Saya sendiri mendapati sebabnya:
1 Bilangan lalai utas ialah 10 kerana versi pemacu JAVA yang digunakan terlalu lama. Versi ialah 2.2, dan versi terkini ialah 2.12 Kumpulan benang lalai untuk satu sambungan telah ditetapkan kepada 100
2 Cadangan yang diberikan dalam dokumentasi rasmi adalah untuk membuka sambungan dan kemudian mengambil sambungan dari kumpulan benang
3 Kelas MongoOperation telah dimansuhkan dalam versi 2.12, tetapi ia boleh digunakan Walaupun menetapkan parameter connectionPerHost kononnya boleh mengubah suai bilangan utas dalam kumpulan benang dalam parameter sambungan, sebenarnya had atas kumpulan benang dalam latar belakang sistem. masih 100, dan parameter tidak Ia berkuat kuasa (Saya tertanya-tanya jika terdapat kaedah tetapan lain), tetapi saya secara peribadi fikir ia tidak terlalu penting Jika kolam benang secara konsisten boleh menduduki lebih daripada 100, mungkin ada sesuatu yang tidak kena reka bentuk sistem