性能測試簡單調優

1.系統性能瓶頸分析前端

影響系統性能的因素:程序員

  • CPU:計算
  • MEM:緩存
  • 磁盤:持久化存儲
  • 網絡:數據傳輸

2.不一樣的系統性能壓力點不一樣sql

門戶網站、文件服務、政企辦公:網絡帶寬瓶頸、緩存多(偏靜)數據庫

流媒體應用、科學計算:進程多、消耗內存多、磁盤IO頻繁(偏動)apache

企業生產應用:DB壓力大、存儲壓力大、內存壓力大、CPU壓力大(動&靜)數組

 

3.系統架構層次分析:緩存

各層次性能的關注點:tomcat

  • 操做系統資源分配

     系統資源:服務器、客戶機cpu、內存、硬盤等配置安全

     操做系統:操做系統資源分配服務器

  • 應用服務中間件配置

    鏈接數等等

  • 程序和數據庫

    程序:內存、線程的鎖、或其餘功能性的問題

    數據庫:參數的配置

 

4.中間件Tomcat配置調優

Tomcat鏈接數配置實例:

A項目的server.xml的配置文件

sudo find / -name *tomcat*

 

 

相關配置參數解釋:

  • maxThreads:Tomcat使用線程來處理接收的每個請求。這個值表示Tomcat能夠建立的最大的線程數。默認值爲200.能夠根據機器的實際性能和內存大小調整,通常能夠在400-500,這個數值決定最多同時處理的鏈接
  • minSpareThreads="25"     表示即便沒有用戶也要開25個空線程等待。
  • maxSpareThreads="75"    表示若是最多能夠空75個線程,例如某時刻有80用戶訪問,以後沒有用戶訪問了,則tomcat不會保留80個空線程,而是關閉5個空線程
  • acceptCount  指定全部能夠使用處理請求的線程數都被使用時,能夠放處處理隊列中的請求數,超過這個數,請求將不予處理。默認值10
  • connectionTimeout    網絡鏈接超時,默認值20000,單位:毫秒。設置爲0表示永不超時,這樣設置存在隱患。一般可設置爲30000毫秒

遇到的問題:鏈接數配置不夠,併發數超出最大鏈接數

  • Loadrunner報錯:Error -27791 Server "173.31.1.20" has shut down the connection prematurely

查看tomcat的日誌(tomcat的安裝目錄下logs文件夾)文件catalina.-11-25.log,其中有如下錯誤信息:

  1.-11-25 18:26:03 org.apache.tomcat.until.threads.ThreadPool logFull

  2.嚴重:All threads(150) are currently busy, watting. Increase maxThreads(150) or check the servlet status.

 

五、jvm參數配置優化和代碼優化

jvm參數配置

  a. 設置環境變量: 變量名:CATALINA_OPTS 變量值:-Xmx128m -Xms64m -Xmn32m -Xss16m

  b.打開Tomcat根目錄下的bin文件夾,編輯catalina.sh,將其中的%CATALINA_OPTS%(共有四處)替換爲:-Xmx128m -Xms64m -Xmn32m -Xss16m

 

最容易調優的地方

  • 代碼
  • 最爲成熟的部分主要開銷是CPU
  • 經過配置和應用平臺調整能夠實現

Java代碼方面優化

  1.減小new對象;用移位符號替代乘除號。

  2.多使用局部變量,減小使用靜態變量。

  3.避免使用finalize,該方法會給GC增添很大負擔;

  4.若是是單線程,儘可能使用非多線程安全的,由於線程安全來自於同步機制,同步機制會下降性能。

  5.儘可能使用基本類型而不是包裝類型,儘可能使用一維數組而不是二維數組。

  6.儘可能使用final修飾符,final表示不可修改,訪問效率高。

  7.單線程狀況下,字符串儘可能使用StringBuilder,比StringBuffer要快。

  • 其實就是開發人員在寫代碼時到處都在考慮行問題;
  • 這是一個成爲高級程序員的必修之路,不在只考慮功能實現,還要考慮實現的效果如何

六、Mysql的監控和調優

系統SQL分析調優

優化方面:

  主從複製

  靜動分開(好比百度就是這樣的)

  加數據庫緩存

  設計優化(數據庫、表結構、標的設計上須要優化)

  索引或視圖減小查詢內容

  優化SQL結構(經過explan優化sql的結構)

Mysql配置優化

  • 數據庫鏈接數佔滿,事物失敗
  • 容器線程數佔滿(如tomcat)
  • 鏈接池配置
  • 設置慢查詢

慢查詢

  分析出慢的緣由

  SQL自己

  索引

前端調優-有效and難

一般前端的一些措施:

  • 減小HTTP請求數據量及個數
  • 使用CDN數據加速
  • 合理使用Expires增長緩存效果
  • 使用動態或靜態壓縮技術
  • 在頂部加載CSS,JS放在頁面底部,使用外部
  • 使用AJAX請求可緩存
  • 減小DNS查詢

相關文章
相關標籤/搜索