1. 程式人生 > >系統技術非業餘研究 » Tsung用於壓測MySQL伺服器的指令碼

系統技術非業餘研究 » Tsung用於壓測MySQL伺服器的指令碼

這個MySQL伺服器壓測的需求是 :

環境: Linux RHEL 5U4 X86-64, 24G記憶體, 16核.
MySQL伺服器在xx.232.36.1上。

壓力由最多32個客戶端發起,每個客戶端分別做update, insert, delete操作,概率分別是50%, 30%, 20%, 每種操作迴圈999999 × 100次,每100次操作後休息1-3秒。
這樣的壓力最多持續2個小時。

我們用的是著名的tsung壓力測試工具, 之前我有篇blog介紹過, 見這裡

以下是用到的指令碼, 用到了比較先進的隨機動態引數替換等技術,對於編寫此類指令碼有很大的借鑑意義。

<!DOCTYPE tsung SYSTEM "/usr/local/share/tsung/tsung-1.0.dtd">
<tsung loglevel="warning" dumptraffic="false">

  <clients>
    <client host="localhost" use_controller_vm="true"/>
  </clients>

 <servers>
  <server host="xx.232.36.1" port="3306" type="tcp"/>
 </servers>

 <load>
  <arrivalphase phase="1" duration="2" unit="hour">
    <users interarrival="0.1" unit="second" maxnumber="32"></users>
  </arrivalphase>
 </load>

 <sessions>
  <session probability="50" name="st-replace" type="ts_mysql">

      <request>
        <mysql type="connect" />
      </request>  
      <request>
        <mysql type="authenticate" database="test" username="test" password="mysqltest" />
      </request>  

      <for from="1" to="999999" var="counter">
        <for from="1" to="100" var="counter">
          <setdynvars sourcetype="random_number" start="1" end="999999999">
            <var name="rnd_uid" />
          </setdynvars>
          <setdynvars sourcetype="random_string" length="13">
            <var name="rnd_uname" />
          </setdynvars>
          <setdynvars sourcetype="random_number" start="0" end="1">
            <var name="rnd_male" />
          </setdynvars>
          <setdynvars sourcetype="random_number" start="1" end="120">
           <var name="rnd_age" />
         </setdynvars>
         <setdynvars sourcetype="random_string" length="10">
           <var name="rnd_city" />
         </setdynvars>
         <setdynvars sourcetype="random_string" length="52">
           <var name="rnd_profile" />
         </setdynvars>
         <request subst="true">        
           <mysql type="sql">replace into user(tid, uname, male, age, city, profile) values(%%_rnd_uid%%, "%%_rnd_uname%%", %%_rnd_male%%, %%_rnd_age%%, "%%_rnd_city%%", "%%_rnd_profile%%") </mysql>
         </request>  
        </for>
        <thinktime min="2" max="5" random="true" />
      </for>

      <request>        
        <mysql type="close"></mysql>
      </request>
  </session>

  <session probability="20" name="st-delete" type="ts_mysql">

      <request>
        <mysql type="connect" />
      </request>  
      <request>
        <mysql type="authenticate" database="test" username="test" password="mysqltest" />
      </request>  

      <for from="1" to="999999" var="counter">
        <for from="1" to="100" var="counter">
          <setdynvars sourcetype="random_number" start="1" end="999999999">
            <var name="rnd_uid" />
          </setdynvars>
          <request subst="true">        
            <mysql type="sql">delete from user where tid = %%_rnd_uid%% </mysql>
          </request>  
        </for>
        <thinktime min="2" max="5" random="true" />
      </for>

      <request>        
        <mysql type="close"></mysql>
      </request>
  </session>

  <session probability="30" name="st-update" type="ts_mysql">

      <request>
        <mysql type="connect" />
      </request>  
      <request>
        <mysql type="authenticate" database="test" username="test" password="mysqltest" />
      </request>  

      <for from="1" to="999999" var="counter">
        <for from="1" to="100" var="counter">
          <setdynvars sourcetype="random_number" start="1" end="999999999">
            <var name="rnd_uid" />
          </setdynvars>
         <setdynvars sourcetype="random_string" length="52">
           <var name="rnd_profile" />
         </setdynvars>

         <request subst="true">        
           <mysql type="sql">update  user set profile = "%%_rnd_profile%%" where tid = %%_rnd_uid%% </mysql>
         </request> 
        </for> 
        <thinktime min="2" max="5" random="true" />
      </for>

      <request>        
        <mysql type="close"></mysql>
      </request>
  </session>


 </sessions>
</tsung>

祝壓測開心!

Post Footer automatically generated by wp-posturl plugin for wordpress.

相關推薦

系統技術業餘研究 » Tsung用於MySQL伺服器指令碼

這個MySQL伺服器壓測的需求是 : 環境: Linux RHEL 5U4 X86-64, 24G記憶體, 16核. MySQL伺服器在xx.232.36.1上。 壓力由最多32個客戶端發起,每個客戶端分別做update, insert, delete操作,概率分別是50%, 30%, 20%

系統技術業餘研究 » Tsung壓力測試工具介紹PPT

準備為測試部門的同學作個Tsung的講座, 點選下載Tsung 需要進一步瞭解Tsung的同學 點這裡看官方的文件! 想了解如何使用的還可以到Erlang china這裡看看! Post Footer automatically generated by wp-posturl plugin f

系統技術業餘研究 » ECUG2010分享:C1000K高效能伺服器構架技術

點選這裡下載 ppt 視訊這裡 照片這裡 這次ECUG2010的講師來自不同的國家,有點國際化的味道,也說明了這個世界越來越扁平,技術越越來越同步,我們追隨技術的壓力也越來越大。 Post Footer automatically generated by wp-posturl plugin

系統技術業餘研究 » 低成本和高效能MySQL雲資料的架構探索

該文已在《程式設計師》2012年10期上發表。 MySQL作為一個低成本、高效能、可靠性好而且開源的資料庫產品,在網際網路企業應用非常廣泛,例如淘寶網有數千臺MySQL伺服器的規模。雖然近兩年來NoSQL的發展很快,新產品層出不窮,但在業務中應用NoSQL對開發者來說要求比較高,而MySQL擁有

系統技術業餘研究 » Fio工具和io佇列深度理解和誤區

Fio 是個強大的IO壓力測試工具,我之前寫過不少fio的使用和實踐,參見 這裡。 隨著塊裝置的發展,特別是SSD盤的出現,裝置的並行度越來越高。利用好這些裝置,有個訣竅就是提高裝置的iodepth, 一把餵給裝置更多的IO請求,讓電梯演算法和裝置有機會來安排合併以及內部並行處理,提高總體效率。

系統技術業餘研究

ItPub寫的文章“2017 年度 DB-Engines 資料庫冠軍得主:PostgreSQL 封王!”, 點選 這裡 進一步閱讀 升的最快的幾個資料庫,我簡單的無責任點評: PG資料庫是很老的資料庫,不過這幾年冉冉升起,因為是學院派的,有很好的學術和智力的支援,一直以來在資料庫的體系結構,程式碼

系統技術業餘研究 » MySQL資料庫架構的演化觀察

MySQL資料庫架構的演化觀察 December 14th, 2017 Categories: 資料庫 Tags: mysql

系統技術業餘研究 » inet_dist_connect_options

Erlang 17.5版本引入了inet_dist_{listen,connect}_options,對於結點間的互聯socket可以有更精細的控制,RPC的時候效能可以微調: raimo/inet_tcp_dist-priority-option/OTP-12476: Document ke

系統技術業餘研究 » 推薦工作機會

最後更新時間:2014/11/28 請賜簡歷至:[email protected], 感謝您對加入我們公司有興趣,我們希望能早日和您共事。 以下幾個職位1年內有效,歡迎內部轉崗:
 資深資料工程師 公司:阿里(核心系統資料庫組) 工作地點:杭州(西溪園區) 崗位描述: 分析雲服務產生的海

系統技術業餘研究 » 新的工作和研究方向

和大家更新下: 做了將近8年資料庫後,我的工作和研究方向將會延伸到虛擬化和計算相關的雲服務,希望能夠和大家一起進步,Happy New Year! 預祝大家玩得開心! Post Footer automatically generated by wp-posturl plugin for w

系統技術業餘研究 » 叢集引入inet_dist_{listen,connect}_options更精細引數微調

Erlang 17.5版本引入了inet_dist_{listen,connect}_options,對於結點間的互聯socket可以有更精細的控制,RPC的時候效能可以微調: raimo/inet_tcp_dist-priority-option/OTP-12476: Document ke

系統技術業餘研究 » 2017升的最快的幾個資料庫無責任點評

ItPub寫的文章“2017 年度 DB-Engines 資料庫冠軍得主:PostgreSQL 封王!”, 點選 這裡 進一步閱讀 升的最快的幾個資料庫,我簡單的無責任點評: PG資料庫是很老的資料庫,不過這幾年冉冉升起,因為是學院派的,有很好的學術和智力的支援,一直以來在資料庫的體系結構,程式碼

系統技術業餘研究 » Erlang 17.5引入+hpds命令列控制程序預設字典大小

Erlang 17.5釋出引入控制程序預設字典大小的命令列引數: Erlang/OTP 17.5 has been released Written by Henrik, 01 Apr 2015 Some highlights of the release are: ERTS: Added co

系統技術業餘研究 » inet_dist_listen_options

Erlang 17.5版本引入了inet_dist_{listen,connect}_options,對於結點間的互聯socket可以有更精細的控制,RPC的時候效能可以微調: raimo/inet_tcp_dist-priority-option/OTP-12476: Document ke

系統技術業餘研究 » 老生常談: ulimit問題及其影響

ulimit最初設計是用來限制程序對資源的使用情況的,因為早期的系統系統資源包括記憶體,CPU都是非常有限的,系統要保持公平,就要限制大家的使用,以達到一個相對公平的環境。以下是典型的機器預設的限制情況: $ ulimit -a core file size (blocks,

系統技術業餘研究 » 求賢帖

原創文章,轉載請註明: 轉載自系統技術非業餘研究 本文連結地址: 求賢帖 作為一個優秀的工程師,你其實不缺少才華,你缺少的是神一樣的隊友、充滿挑戰的世界級技術難題,和一個可以施展自己才華的大舞臺。加入阿里核心系統資料庫開發團隊吧,你缺的這裡都有。來吧,戳這裡,給我們見識你的機會:http://b

系統技術業餘研究 » Erlang R16B03釋出,R17已發力

Erlang R16B03釋出了,通常03版本是bug fix版本,進入生產版本,官方的說明如下: OTP R16B03 is a service release with mostly a number of small corrections and user contributions. B

系統技術業餘研究 » Erlang R13B04 Installation

R13B04後erlang的原始碼編譯為了考慮移植性,就改變了編譯方式,以下是官方wiki上的安裝文件: 1. Cloning Here are the basic steps to build Erlang/OTP in the Git repository. Start by cloning:

系統技術業餘研究 » Understanding Linux CPU Load 資料彙總

最近關注線上CPU load的人挺多,很多人覺得load太高系統就有問題,就想各種辦法來折騰。其實在我看來load只是系統CPU執行佇列的在執行程序數的近似值, 如下圖: 對於Unix發展的初期,機器的效能比較差,CPU核數也少,參考意義比較大。現在的機器都是非常強悍的,CPU,記憶體,IO各個

系統技術業餘研究 » Erlang R15的記憶體delayed dealloc特性對訊息密集型程式的影響

在新的NUMA體系結構下,每個CPU都有自己的本地記憶體,如果要訪問其他CPU的記憶體,那算remote了,要走CPU之間的QPI通道,通常這樣速度會有40%的下降。 那麼對於多執行緒的程式來講,這個硬體的變化對軟體也有很大的影響。在多執行緒程式裡面,通常一個執行緒會為一個物件分配記憶體,然後把這