系統信息
利用邏輯 就是用c3p0 到數據庫查詢數據并http返回Json數據
1 調優前的最初的測試結果 JMeter test result
No. |
Type |
Original |
1000 data bigger |
1 |
500Connection |
250 query/S |
63q/S |
2 |
1000 connections |
255q/S |
57q/S 65 q/S |
這個數據是從程序的log 中打印出的 數據庫select語句 中得出的結果(正確與否后面會有討論)。
2 經過IOD系統打印 SQL query 的履行時間 和 tomcat 每一個request 的 響應時間,找出 系統瓶頸 是由于1個 select語句 使用了 in:
SELECT* FROM infoobject_table where category = 'advertisement' and deleteflag=falseand (id in (select info_object_fk from timespan_table where vod_id = ? and deleteflag=false))Order By Rand() Limit
在 原來的小數據庫中 數據較少 查詢 時間 100ms 左右
在 1000個 video 的數據庫中 查詢的時間 到達 超過 1S
先注釋掉 這個語句 ,想辦法用優化的辦法實現這個功能。
注釋掉 這個 select 語句后得到的測試數據(還是計算從程序的log中打印出的 數據庫select語句)Jmeter testresult
No. |
Type |
Original |
1000 bigger |
1 |
500Connection |
250 query/S |
CPU 100% |
2 |
1000 connections |
255q/S |
160q/S 160q/S |
現在 的問題 是碰到 tomcat request 160q/S 再怎樣調優 增加不了了,tomcat的內存 配置了4G 實際使用了不到 1個G ,CPU 8核心 利用率 只有10%。
3 發現前面的統計系統響應 性能有問題,很多時候sql 語句打印出來了,但是并沒有履行完成, 由于c3p0 連接數只有15個,都在等待數據庫連接,后來改變統計方式。
還有就是打印出 c3p0 的連接池的工作狀態
后來進行mysql(默許100最大鏈接), tomcat(連接數default)tomcat 內存配置, c3p0(最大15個鏈接) 鏈接池優化。
Mysql: 在system/programdata/mysql/my.ini中配置
max_connections=1000
Tomcat: 配置連接數
配置 tomcat 運行jvm 配置
set JAVA_OPTS=-server -Xms4400M-Xmx4400M -Xss512k -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:PermSize=128M-XX:MaxPermSize=256M -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=31-XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection-XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly-Djava.awt.headless=true
利用 c3p0 連接池配置:
查詢配置了mysql 最大連接數 1000, 配置 c3p0 連接池 800 配置 tomcat 鏈接 800 測試結果:
CPU 8Core 12% usage
Memmory900M/2.4G 120q/S
這個時候碰到的問題就是 cpu 和 內存 都沒有到達上限,但是查詢的 性能卻提升不上去了。
5 試用jconsole 查看tomcat 中的 線程狀態,好多線程都是 blocked on java.util.logging.console 原來是線程1直在等待寫日志被block住了。
把寫log的語句 全部注釋掉。OK 系統終究飛起來了。
現在 能到達 250q/S。
需要檢查的地方:
CPU
內存
mysql最大連接數
tomcat 連接數配置
tomcat JVM 配置 重要的是內存大小
數據庫連接池配置:
程序內部的瓶頸。
上一篇 ListView嵌套ScrollView后,設置dividerHeight屬性后高度計算
下一篇 DP備份報錯 ORA-19554: error allocating device, device type: SBT_TAPE ORA-27211