根据这个职位,看起来我在MySQL优化方面遇到了一些严重的问题。
不幸的是,我不知道从哪里开始!
我正在运行一个基于DirectAdmin的CentOS专用服务器。这是一个英特尔四核3Ghz与8Gb内存。我在上面运行了很多网站,但我相信只有我的主要网站才有真正的流量。
我所关注的网站每周有大约30,000名独特的访问者/25万次点击。这是一个基于WordPress的网站。
我的my.cnf基本上是空的。我增加了max_connections来处理最初的问题(网站不断点击“数据库最大连接”错误,就像前面链接的那样),就是这样。
我尝试在服务器上运行两个脚本来确定如何优化我的设置。其中一个没有起作用,但另一个建议如下:
query_cache_sizetable_cache。table_definition_cache值。完整的源代码可以找到这里。
不幸的是,我真的不知道这做了什么,我也不想盲目地走进它。
有人对优化我的MySQL安装有什么建议吗?
发布于 2012-07-10 16:55:46
卡西是你的朋友!你能拿的桌子越多,你就越不需要敲硬盘。
您的主要性能问题是,人们访问您的数据库,必须等待硬盘驱动器撤回他们,而不是表在卡什。在大多数情况下,这是可以的,但是当您有多个人连接和退出表时,I/O队列就会开始备份,也就是当您遇到减速时。
发布于 2012-07-19 14:46:12
我对访问数据的代码更感兴趣。听起来,您的应用程序在处理连接方面做得很糟糕,以至于达到了允许的最大值。
这也可能是因为缺少索引,某些查询执行起来太长了。延迟执行很容易导致500个并发连接。
然而,基于流量的500个并发连接经常发生,听起来像是一个瓶颈(上面提到的这两个问题是最常见的)。
发布于 2012-07-19 15:32:36
Wordpress没有指定表引擎,因此它将使用默认的或您在my.cnf文件中设置为默认的任何内容。如果您的my.cnf中没有设置,那么您的默认设置将是MyISAM ( MySQL < 5.5 )和InnoDB ( MySQL >= 5.5 )。
一般(但仍然有效)建议: 90%的性能增益(来自调优)将来自于调整默认引擎的索引/分页缓冲区。我推荐阅读:http://www.mysqlperformanceblog.com/2007/11/03/choosing-innodb_缓冲器_池子_大小/
如果您正在运行< MySQL 5.5,则将您的key_buffer提高到80%的空闲内存。如果您正在运行>= MySQL 5.5,则将innodb_buffer_pool提高到空闲内存的80%。
如果您是99%的读取,那么Query_cache将扮演一个角色。类似于:
query_cache_size = 32M
query_cache_type = 1
query_cache_limit= 512K如果您是平衡的读写,只需关闭查询缓存,因为它会减慢您的速度,因为每次写都会使缓存的查询失效。
query_cache_type = 0但是,如果您有没有命中索引的查询,则这是一个代码评审问题。您必须权衡添加索引的成本/效益,以加快可能偶尔发生或每秒钟发生的查询。你的分析会说明这个故事的。
https://dba.stackexchange.com/questions/20652
复制相似问题