我正在運行MySql 5.6,並且我注意到,當我對服務器進行基準測試(在一段時間內並行執行幾百個查詢)時,m1.large aws實例的CPU利用率從未超過50% 。未充分利用MySQL服務器; threads_running小於2
我已在thread_cache變量設置爲50和max_connections 500當我執行從殼下面的命令,
中mysqladmin -u根-ppassword -r -i 1個分機| grep的由Threads_created
我注意到,創建的線程不穿過3
中mysqladmin -u根-ppassword -r -i 1個分機| grep Threads_running
我注意到,運行的線程永遠不會穿越3,有時會變成-1。
SHOW STATUS; (從MySQL控制檯運行此)
我注意到Threads_Cached是0,儘管thread_cache_size的是50
我運行前端服務器的連接請求轉發到MySQL。我正在使用大小爲50的連接池。不應該把threads_created更改爲50嗎?我理解這個權利嗎?
更新:
我更新了我的前端服務器從承運人到Jetty。我現在使用c3p0來完成連接池。我配置了50個連接,現在我可以注意到threads_running和threads_running上升到50.
但是,我的CPU利用率仍然沒有超過60%爲我的MySQL進程。
機的詳細信息:AWS m1.large例如,2個內核(4個vCPU),7.5GB RAM 的MySQL版本:5.6 引擎:MyISAM數據 行:85個百萬 查詢類型:只讀 查詢:選擇一個, b,c從表格WHERE文本=? AND date> =?和日期< =?; 我對文本,日期字段有一個複合索引,當我在這個查詢上運行EXPLAIN時,我能夠看到正在使用索引。
感謝, V
這是我第一次發帖,我很想知道我的錯在哪裏,以便我糾正自己,而不是僅僅得到否定的投票。 – Venkey
如果您是基準測試,那麼您是如何運行並行mysql線程或查詢的?你是否禁用了query_cache? 最大的線程是上限,不需要總是運行 – georgecj11
您好cjg, 我正在使用JMeter ...現在我有一個自定義程序,產生'n'指定的線程。每個線程運行'k'指定查詢次數.. 我還沒有禁用查詢緩存!我可以做? – Venkey