84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
前提: 大家好,現在要壓測一台tomcat伺服器,想找出應用程式的瓶頸在哪,但在測試過程中,jvm資源佔用的cpu一直還沒到50%, mysql已經被拖垮了。
現在我想找出應用程式服務的瓶頸,多少併發時,cpu會被佔用過高,請問怎麼實現呢? 我想到的方法是:在程式碼層面上建立多個線程,不讀寫資料庫,讓cpu上去。請問可行不? ? 感謝~~
一般來說Web應用的瓶頸都在資料庫上,應用伺服器(無論是Tomcat還是別的)負載過大的話,一般來說只要加伺服器就能解決的。
如果希望降低成本,找出應用的瓶頸在哪,壓測是有些竅門的,例如:
把mysql儲存引擎改成blackhole,這樣資料庫就不會容易被輕易拖垮。
blackhole
如果 CPU 佔用太多,是不是已經使用了資料庫連接池,限制連結的建立。為了減少資料庫的訪問,某些更新少的資料是不是可以放快取如 Redis,不需要每次都訪問資料庫去取資料。
簡單壓力的測試,我喜歡用 apache server 裡的 ab,複雜的可以試試 JMeter,壓力測試就比較容易分析找出問題在那裡。
jvm資源佔用的cpu一直還沒到50%,mysql已經被拖垮了
這怎麼看都像是資料庫操作方面的問題,例如 SQL 需要最佳化,或是需要加上快取以減少資料庫操作。看不出與 Tomcat 有什麼關係。
mysql都掛了,應該不是tomcat瓶頸,你要查一下sql是否都優化了,另外開啟mysql統計,查查看是否有慢sql,是否有全表掃描,索引是否高效。另外有沒有使用連線池對資料庫做並發控制,mysql支援的並發跟cpu核心數有關。一般慢sql容易拖垮資料庫
一般系統瓶頸的話增加伺服器數量、優化請求基本上都能解決,更大的瓶頸基本上都是在資料庫連結上,按照你說的你是想要測試一下你的請求並發瓶頸,但是如果你不連結資料庫進行測試,基本上是沒什麼效果的,對真實專案並沒有什麼幫助,取得的瓶頸並不是你真正的瓶頸
一般來說Web應用的瓶頸都在資料庫上,應用伺服器(無論是Tomcat還是別的)負載過大的話,一般來說只要加伺服器就能解決的。
如果希望降低成本,找出應用的瓶頸在哪,壓測是有些竅門的,例如:
把mysql儲存引擎改成
blackhole
,這樣資料庫就不會容易被輕易拖垮。如果 CPU 佔用太多,是不是已經使用了資料庫連接池,限制連結的建立。為了減少資料庫的訪問,某些更新少的資料是不是可以放快取如 Redis,不需要每次都訪問資料庫去取資料。
簡單壓力的測試,我喜歡用 apache server 裡的 ab,複雜的可以試試 JMeter,壓力測試就比較容易分析找出問題在那裡。
這怎麼看都像是資料庫操作方面的問題,例如 SQL 需要最佳化,或是需要加上快取以減少資料庫操作。看不出與 Tomcat 有什麼關係。
mysql都掛了,應該不是tomcat瓶頸,你要查一下sql是否都優化了,另外開啟mysql統計,查查看是否有慢sql,是否有全表掃描,索引是否高效。另外有沒有使用連線池對資料庫做並發控制,mysql支援的並發跟cpu核心數有關。一般慢sql容易拖垮資料庫
一般系統瓶頸的話增加伺服器數量、優化請求基本上都能解決,更大的瓶頸基本上都是在資料庫連結上,按照你說的你是想要測試一下你的請求並發瓶頸,但是如果你不連結資料庫進行測試,基本上是沒什麼效果的,對真實專案並沒有什麼幫助,取得的瓶頸並不是你真正的瓶頸