如何调整 MySQL 性能

如何调整 MySQL 性能

我在在线服务的 MySQL 实例方面遇到了真正的问题。我们使用 hibernate 和 c3p0 池并采用以下设置:

c3p0.max_size=200
c3p0.min_size=5
c3p0.timeout=60000
c3p0.max_statements=20
c3p0.idle_test_period=300
c3p0.acquire_increment=3
c3p0.unreturnedConnectionTimeout=70000

我注意到服务(网站)已关闭,因为它拒绝连接。我登录 MySQL 控制台,并show processlist在列表中显示了与相关数据库的 30 个休眠(命令)连接。这让我很担心。我们每次都期望有 200 个连接,并将 MySQL 最大连接数设置为 300。这是我的 .cnf

key_buffer        = 16M
max_allowed_packet    = 16M
thread_stack        = 128K
thread_cache_size    = 8
max_connections        = 300
#table_cache            = 64
#thread_concurrency     = 10

满的我的cnf

我做了一个小研究,发现 table_cache 大小必须相应更新。该机器是一台四核机器,运行 ubuntu 9.10 服务器 4gb 内存

猫/proc/cpuinfo

**问题1:**如何强制c3p0释放空闲连接。

**问题 2:**我需要修复哪些 tache_cache 和所有其他参数,以允许服务器充分发挥其潜力并且不会拒绝连接

**问题 3:** 在我重新启动 Tomcat 后,MySQL 连接数下降到 4。我需要尽快修复此问题,为此我需要您的经验。但我也希望在未来获得这种经验。从 MySQL 性能调整到集群,您应该推荐哪本书?

答案1

Mysql 调优可以通过几个脚本来实现。

Mysqltuner、mytop、mysqlreport、tuning-primer......这些脚本将为您提供有关服务器的详细信息......

例如检查下一个链接

http://www.serveradminblog.com/2011/03/tuning-mysql-performance-howto-part-1/

答案2

优化是一个永无止境的追求,但以下几点可能会有所帮助:

  1. 增加max_connect_errors(我用的是 10,但你可以尝试更多)
  2. 增加table_open_cache:我使用的是 2048,但这取决于您的应用程序中的表的数量。
  3. 在授权语句中使用所有 IP 地址,并禁用 DNS:[mysqld] skip-name-reslove = 1
  4. 肯定会增加query_cache_size(即 64 MB)

相关内容