在測試一個簡單系統接口性能壓力時,壓到一定數量,程序總是崩潰,查看相關機器相關數據時,CPU、內存、IO占用均不高,問題自然出現在其它地方
先介紹下系統部件架構
Resin版本為:
[root@localhost lib]# java -classpath ./resin.jar com.caucho.Version
Resin-3.2.1 (built Fri, 17 Oct 2008 04:11:01 PDT)
Copyright(c) 1998-2008 Caucho Technology. All rights reserved
mysql版本為:
Server version: 5.5.39
在跑接口壓力時,當TPS達到100時,程序當報錯提示為resin重啟了
[2016-03-23 12:07:17] JDK detected deadlock. Restarting Resin. [12:07:17.929] {resin-41} JDK detected deadlock. Restarting Resin. [2016-03-23 12:07:17] "001" Id=79 BLOCKED on com.orient.dbpool.o@2726965a owned by "http--80-32" Id=59
問題該怎么解決呢?這里先,說說性能問題瓶頸解決的一個思路:
1、查看是否為服務器硬件瓶頸,這里涉及到CPU、內存、IO讀寫,我們可以通過vmstat、sar或iostat來觀察;通過觀察,在本例中問題不存在硬件的瓶頸
2、網絡瓶頸,可以通過查看網絡利用率來確定,方式很多,這里不介紹;不過如果在局域網內、且這僅僅是一個web服務類型網站,與視頻類網站不同,所以本例中也不存在網絡的問題
3、linux操作系統瓶頸,linux關於性能方面設計到的內核參數太多,這里可以參數《Linux服務器性能調整》一書,當做參考書使用;本例中,對linux TCP連接釋放時間做了調整,但問題依舊;
4、中間件瓶頸,這里指的就是第三方的中間件,比如tomcat、JVM、數據庫等等,一般在網絡下載后的程序,需要根據服務器實際情部分做調整;在本例中,調整了相關參數后,性能有所提高,但個別接口還有問題;
5、應用的瓶頸,這就需要與開發一起調試,比如業務邏輯、sql的優化、算法等等
本例中,linux內核相關參數調整,網上有更詳細的參數,請自行參考:
net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_fin_timeout = 30
在本次測試中,相關中單件的調整如下:
1、Resin 處理能務的調整:
Resin目錄下conf\resin.xml文件參數調整
<jvm-arg>-server</jvm-arg> <jvm-arg>-Xmx512m</jvm-arg> <jvm-arg>-Xms256m </jvm-arg> <jvm-arg>-Xss256k</jvm-arg> <memory-free-min>10M</memory-free-min> <thread-max>3000</thread-max> <socket-timeout>20s</socket-timeout> <keepalive-timeout>15s</keepalive-timeout>
具體的調整方式,可以參考JVM的性能調優相關文章,如:http://uule.iteye.com/blog/2114697
2、web數據庫連接參數調整
有的程序中參web連接數據的處理能力有做限制,本例中,默認初始處理能力為1,這里做修改
dbInitialCapacity="1" (初始化處理能力) dbMaxCapacity="5" (最大處理能力
3、mysql數據庫性能處理調整
具體的可參數MySQL數據庫性能能調整進行,根據機器內存,CPU情況進行調整,可以參考blog:http://www.educity.cn/shujuku/692462.html
本例中,對最大連接數、連接池做了調整
--max_connections=1200
--innodb_buffer_pool_size=2500M
4、程序內部問題,比如登陸時達到了最大的文件打開數,等等
這里設計到內部程序這里就不例舉了
參考資料:
linux性能調整:http://download.csdn.net/detail/machen_smiling/7736543
mysql性能調整:http://www.educity.cn/shujuku/692462.html
linux性能監控命令:http://os.51cto.com/art/201412/460698_all.htm