標籤:資料庫 架構 linux 伺服器 壓力測試
1,
使用 mysqlslap 進行壓力測試
mysqlslap --defaults-file=/etc/my.cnf --concurrency=200 --iterations=1 --number-int-cols=1 --auto-generate-sql --auto-generate-sql-load-type=write --engine=myisam,innodb --number-of-queries=200 -S/home/mysql/mysql.sock --debug-info -uroot -p123
下面我們就來看看一些比較重要的參數:
--defaults-file,設定檔存放位置
--create-schema,測試的schema,MySQL中schema也就是database
--concurrency,並發數
--engines,測試引擎,可以有多個,用分隔字元隔開。
--iterations,迭代的實驗次數
--socket,socket,檔案位置
--debug-info,列印記憶體和CPU的資訊
--only-print,只列印測試語句而不實際執行
--auto-generate-sql,自動產生測試SQL
--auto-generate-sql-load-type,測試SQL的類型。類型有mixed,update,write,key,read。
--number-of-queries,執行的SQL總數量
--number-int-cols,表內int列的數量
--number-char-cols,表內char列的數量
--query=name,使用自訂指令碼執行測試,例如可以調用自訂的一個預存程序或者sql語句來執行測試。
指定資料庫的測試:
--create-schema,指定資料庫名稱
--query, 指定SQL語句,可以定位到某個包含SQL的檔案
例如:
[[email protected] ~]# /usr/local/mysql/bin/mysqlslap --defaults-file=/etc/my.cnf --concurrency=50 --iterations=1 --create-schema=test --query=/root/test.sql -S/tmp/mysql.sock -uroot -p123
對MySQL進行並發測試過程中遇到的一個小問題,記錄一下。
用mysqlslap進行並發訪問測試,在1024線程的時候報錯:
bin/mysqlslap: Error when connecting to server: 1135 Can‘t create a new thread (errno 11); if you are not out of available memory, you can consult the manual for a possible OS-dependent bug
Linux系統的open files數已經修改。當然仍然報錯。ulimit -a命令,可查看當前系統限制情況
max user processes = 1024
通過ulimit -u 10000命令修改當前session的限制值,然後重啟MySQL,問題解決。如果你想使此值永久生效,可配置在/etc/profile 中。