0

目前我有 3 台服务器正在运行,2 台远程,主服务器运行MySQL 5.5.24和备份运行MySQL 5.1.63,1 台本地运行MySQL 5.5.20用于开发。主服务器用于报告目的;目前有 144 个表(MyISAMInnoDB),大约 80GB 的数据,较大的表每个大约有 1300 万行。

在远程服务器上,我通过 webmin 的访问权限非常有限,因此我无法直接进行更改,我需要向 IT 部门询问。

自从我们上个月发生 MySQL 崩溃以来,我在主服务器上遇到了一些严重的性能问题。服务器正在运行一个有一些磁盘写入错误的开发版本,在恢复之后我们安装了该MySQL 5.5.23版本,这就是性能问题开始的时候。我们最近安装了MySQL 5.5.24(最新的稳定版本),但仍然存在性能问题

以下是服务器配置,都是专用服务器:

主要

Operating system: Gentoo Linux
Kernel and CPU: Linux 2.6.31-gentoo-r6 on x86_64 
Processor information: Intel(R) Xeon(TM) CPU 2.66GHz, 8 cores
Real memory (ram): 23.55 GB total
Virtual memory: 3.74 GB total
Local disk space: 463.38 GB total (about 30% free)

备份

Operating system: Gentoo Linux
Kernel and CPU: Linux 2.6.31-gentoo-r6 on x86_64
Processor information: Intel(R) Core(TM)2 Duo CPU E6405 @ 2.13GHz, 2 cores
Real memory (ram): 15.68 GB total
Virtual memory: 16.01 GB total
Local disk space: 4.73 TB total (about 80% free)

发展

Operating system: Ubuntu Linux 9.04
Kernel and CPU: Linux 2.6.32-33-server on x86_64
Processor information: Intel(R) Core(TM)2 Duo CPU E6550  @ 2.33GHz, 2 cores
Real memory (ram): 1.95 GB total
Virtual memory: 5.65 GB total
Local disk space: 141.15 GB total (about 5% free)

所有服务器都具有相同的 my.cnf 配置,除了innodb_buffer_pool_size

我的.cnf

[mysqld]
back_log = 50
max_connections = 100
max_connect_errors = 10
table_open_cache = 2048
max_allowed_packet = 16M
binlog_cache_size = 1M
max_heap_table_size = 64M
read_buffer_size = 2M
read_rnd_buffer_size = 16M
sort_buffer_size = 8M
join_buffer_size = 8M
thread_cache_size = 8
thread_concurrency = 8
query_cache_size = 64M
query_cache_limit = 2M
ft_min_word_len = 4
default-storage-engine = MYISAM
thread_stack = 262K
stored_program_cache= 1024
transaction_isolation = REPEATABLE-READ
tmp_table_size = 64M
binlog_format=mixed
slow_query_log
long_query_time = 2
key_buffer_size = 512M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover
innodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size = 8G
innodb_data_file_path = ibdata1:10M:autoextend
innodb_write_io_threads = 8
innodb_read_io_threads = 8
innodb_thread_concurrency = 16
innodb_flush_log_at_trx_commit = 1
innodb_log_buffer_size = 8M
innodb_log_file_size = 256M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 240
server-id = 1
event_scheduler = 1
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 512M
sort_buffer_size = 512M
read_buffer = 8M
write_buffer = 8M
[mysqlhotcopy]
interactive-timeout
[mysqld_safe]
open-files-limit = 8192

我已经尝试了几个Stored Procedures具有大量列和数据的大型服务器,备份服务器比主服务器快 10 倍,在开发服务器上运行它们比主服务器快 5 倍。

由于主服务器和备份服务器位于同一个远程位置并且通过 VPN,我知道没有连接速度问题。

我无法发布Stored Procedures代码,但我知道问题出在最后SELECT,因为所有临时表的创建速度都非常快,而且我可以在 MySQL 监视器(使用SHOW FULL PROCESSLIST)中看到SELECT它占用了 95% 的时间。大多数Stored Procedures工作都处理大量数据,并带有多个连接。

任何想法为什么主服务器的性能可能如此糟糕,即使它是最强大的?

我们一直在寻找最新版本的报告性能错误,但我们发现根本没有帮助http://bugs.mysql.com/bug.php?id=44585

我真的很感激任何帮助

在服务器故障时会更好地问这个问题吗?这是我的第一个问题

对不起我的英语。

4

2 回答 2

0

您尝试的存储过程中的所有有问题的 SELECT 语句是否都涉及相同的表?也许需要在其中一些上重建索引统计信息 - 查看OPTIMIZE TABLE命令。

于 2012-05-30T15:06:54.970 回答
0

最后我们将数据库移到另一台服务器上,新版本的 MySQL

于 2012-07-24T20:49:54.720 回答