Java 做的大型網(wǎng)站用什么服務(wù)器軟件?Tomcat、Weblogic 還是其它服務(wù)器?
時(shí)間:2024-01-22 23:45:01 | 來(lái)源:網(wǎng)站運(yùn)營(yíng)
時(shí)間:2024-01-22 23:45:01 來(lái)源:網(wǎng)站運(yùn)營(yíng)
Java 做的大型網(wǎng)站用什么服務(wù)器軟件?Tomcat、Weblogic 還是其它服務(wù)器?:我用Tomcat搞過(guò)QPS到20萬(wàn)的程序,功能還挺復(fù)雜的,但是基本上沒(méi)有啥問(wèn)題,只要你代碼寫(xiě)的好邏輯處理得當(dāng),Tomcat絕對(duì)不是你應(yīng)用的瓶頸.
我用Tomcat最怕的就是阻塞線程,Tomcat的設(shè)計(jì)模型就是這樣,一個(gè)請(qǐng)求一個(gè)線程,Tomcat線程池?cái)?shù)量是有限的,如果線程全部在active,那么新的請(qǐng)求是沒(méi)有線程可以處理的,對(duì)應(yīng)的就是前端nginx等反向代理的502錯(cuò)誤,所以,Tomcat的線程千萬(wàn)不能阻塞,你應(yīng)該確保你的程序在可控的范圍完成業(yè)務(wù)邏輯,這樣直接決定了你的部署規(guī)模和集群性能.所以,對(duì)于Tomcat應(yīng)用,我有如下的忠告:
1 盡量少做IO操作,線程阻塞最多的地方就是阻塞在IO,該緩存在本地內(nèi)存的就盡量緩存在本地內(nèi)存,這里推薦一個(gè)我最喜歡的guava cache模塊
2 保持你應(yīng)用邏輯的簡(jiǎn)潔性,Tomcat不應(yīng)該完成太復(fù)雜的邏輯處理,如果是復(fù)雜的邏輯處理,建議分開(kāi)N個(gè)模塊,通過(guò)MQ等解耦工具異步處理.
3 單機(jī)性能是有限的,一個(gè)Tomcat耗盡所有CPU,網(wǎng)絡(luò)資源是非常簡(jiǎn)單的, 這種情況下,你換Weblogic也是一樣,所以瓶頸絕對(duì)不在tomcat.