如上圖:jmeter客戶端實(shí)現(xiàn)方式有三種,一種是java,,一種是httpclient4,還有一種默認(rèn),,我們來看一下java與httpclient4的區(qū)別: Java:選擇壓測時(shí),,鏈接是復(fù)用的(代碼中的http調(diào)用都加了連接池) 從JMeter 5.0開始,當(dāng)使用默認(rèn)的HC4實(shí)現(xiàn)時(shí),,JMeter將在每個(gè)線程組迭代時(shí)重置HTTP狀態(tài)(SSL狀態(tài)+連接),。如果您不想要此行為,請?jiān)O(shè)置httpclient.reset_state_on_thread_group_iteration = false 所以httpclient4 在連接復(fù)用設(shè)置打開的情況下,,壓測結(jié)果與java的是不一樣的,,因?yàn)閖ava復(fù)用鏈接,httpclient4每次連接都會重新建立tcp連接,,如果httpclient4吞吐量過低,,需要考慮網(wǎng)絡(luò)帶寬的限制 java實(shí)現(xiàn)適合壓榨性測試,httpclient4適合真實(shí)場景的模擬,, 連接池的作用于原理: 正常訪問數(shù)據(jù)庫的過程中,,每次訪問都需要?jiǎng)?chuàng)建新的連接,這會消耗大量的資源,;連接池的就是為數(shù)據(jù)庫連接建立一個(gè)“緩沖區(qū)”,,預(yù)先在緩沖池中放入一定數(shù)量的連接對象,,當(dāng)需要建立數(shù)據(jù)庫連接時(shí),,只需從“緩沖池”中取出一個(gè),使用完畢之后再放回去,;且連接池允許多個(gè)客戶端使用緩存起來的連接對象,,這些對象可以連接數(shù)據(jù)庫,它們是共享的,、可被重復(fù)使用的,;使用連接池可以節(jié)省大量資源,提高程序運(yùn)行速度,。 連接池的基本原理是:先初始化一定的數(shù)據(jù)庫連接對象,,并且把這些連接保存在連接池中。這些數(shù)據(jù)庫連接的數(shù)量是由最小數(shù)據(jù)庫連接數(shù)來設(shè)定的,。連接池的最大數(shù)據(jù)庫連接數(shù)量限定了這個(gè)連接池能占有的最大連接數(shù),,當(dāng)應(yīng)用程序向連接池請求的連接數(shù)超過最大連接數(shù)量時(shí),這些請求將被加入到等待隊(duì)列中,。當(dāng)程序需要訪問數(shù)據(jù)庫的時(shí)候,,如果連接池中有空閑的連接,可直接得到一個(gè)連接,;如果連接池對象中沒有空閑的連接,,且連接數(shù)沒有達(dá)到最大,會創(chuàng)建一個(gè)新的連接從連接池中取出一個(gè)連接,數(shù)據(jù)庫操作結(jié)束后,,再把這個(gè)用完的連接重新放回連接池,。 |
|