一個簡單web系統的接口性能分析及調優過程

在測試一個簡單系統接口性能壓力時,壓到必定數量,程序老是崩潰,查看相關機器相關數據時,CPU、內存、IO佔用均不高,問題天然出如今其它地方
先介紹下系統部件架構html

 

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 reservedjava

mysql版本爲:
Server version: 5.5.39mysql


在跑接口壓力時,當TPS達到100時,程序當報錯提示爲resin重啓了linux

[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

 

問題該怎麼解決呢?這裏先,說說性能問題瓶頸解決的一個思路:
一、查看是否爲服務器硬件瓶頸,這裏涉及到CPU、內存、IO讀寫,咱們能夠經過vmstat、sar或iostat來觀察;經過觀察,在本例中問題不存在硬件的瓶頸
二、網絡瓶頸,能夠經過查看網絡利用率來肯定,方式不少,這裏不介紹;不過若是在局域網內、且這僅僅是一個web服務類型網站,與視頻類網站不一樣,因此本例中也不存在網絡的問題
三、linux操做系統瓶頸,linux關於性能方面設計到的內核參數太多,這裏能夠參數《Linux服務器性能調整》一書,當作參考書使用;本例中,對linux TCP鏈接釋放時間作了調整,但問題依舊;
四、中間件瓶頸,這裏指的就是第三方的中間件,好比tomcat、JVM、數據庫等等,通常在網絡下載後的程序,須要根據服務器實際情部分作調整;在本例中,調整了相關參數後,性能有所提升,但個別接口還有問題;
五、應用的瓶頸,這就須要與開發一塊兒調試,好比業務邏輯、sql的優化、算法等等ios

本例中,linux內核相關參數調整,網上有更詳細的參數,請自行參考:web

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30

 

在本次測試中,相關中單件的調整以下:
一、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/2114697sql

二、web數據庫鏈接參數調整
有的程序中參web鏈接數據的處理能力有作限制,本例中,默認初始處理能力爲1,這裏作修改數據庫

dbInitialCapacity="1" (初始化處理能力)
dbMaxCapacity="5" (最大處理能力

 

三、mysql數據庫性能處理調整
具體的可參數MySQL數據庫性能能調整進行,根據機器內存,CPU狀況進行調整,能夠參考blog:http://www.educity.cn/shujuku/692462.html
本例中,對最大鏈接數、鏈接池作了調整tomcat

--max_connections=1200 
--innodb_buffer_pool_size=2500M

四、程序內部問題,好比登錄時達到了最大的文件打開數,等等
這裏設計到內部程序這裏就不例舉了

 

參考資料:

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

相關文章
相關標籤/搜索