我正在运行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