MySQL不断崩溃OS服务器..请帮助调整my.ini!

我在Windows 2008计算机上安装了MySQL 5.0(3GB RAM)。 我的服务器定期(几乎每天一次)崩溃总是只有这个错误:

Changed limits: max_open_files: 2048 max_connections: 800 table_cache: 619 

我没有使用沉重的InnoDB .ini文件,虽然我正在重新思考我应该有的吗? 我担心大的configuration更改会使我当前的网站停止工作。 我该怎么办?

这是我目前的ini设置:

 default-character-set=latin1 default-storage-engine=INNODB max_connections=800 query_cache_size=84M table_cache=1520 tmp_table_size=30M thread_cache_size=38 myisam_max_sort_file_size=100G myisam_sort_buffer_size=30M key_buffer_size=129M read_buffer_size=64K read_rnd_buffer_size=256K sort_buffer_size=256K innodb_additional_mem_pool_size=6M innodb_flush_log_at_trx_commit=1 innodb_log_buffer_size=3M innodb_buffer_pool_size=250M innodb_log_file_size=50M innodb_thread_concurrency=10 

以下是来自phpMyAdmin的一些额外信息:

服务器:MYSERVER(通过TCP / IP的本地主机)
服务器版本:5.0.90-community-nt
协议版本:10
MySQL字符集:UTF-8 Unicode(utf8)
微软IIS / 7.0
MySQL客户端版本:5.0.90
PHP扩展:mysqli

从我的研究来看,在我看来,这个错误是说操作系统硬编码限制不断受到打击,我应该使用innoDB沉重的.ini文件。 但是,我不知道我的网站使用MySQL会有什么影响。 下面是我想用它取代它的重型innoDBconfiguration,谁能告诉我这将意味着我的网站与现有的数据库? 他们都是InnoDB,甚至所有的表都是InnoDB。 我在正确的轨道上?

[客户]
端口= 3306
socket = /tmp/mysql.sock

的[mysqld]
端口= 3306
socket = /tmp/mysql.sock

back_log = 50
max_connections = 100
max_connect_errors = 10
table_cache = 2048
max_allowed_pa​​cket = 16M
binlog_cache_size = 1M
max_heap_table_size = 64M
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_table_type = MYISAM
thread_stack = 192K
transaction_isolation = REPEATABLE-READ
tmp_table_size = 64M
login斌= mysql的斌
log_slow_queries
long_query_time = 2
log_long_format
server-id = 1
key_buffer_size = 32M
read_buffer_size = 2M
read_rnd_buffer_size = 16M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_max_extra_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover
跳联合
跳BDB
innodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size = 2G
innodb_data_file_path = ibdata1:10M:autoextend
innodb_file_io_threads = 4
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 = 120

[mysqldump的]
max_allowed_pa​​cket = 16M

[MySQL的]
无自动翻版

[使用isamchk]
key_buffer = 512M
sort_buffer_size = 512M
read_buffer = 8M
write_buffer = 8M

[myisamchk的]
key_buffer = 512M
sort_buffer_size = 512M
read_buffer = 8M
write_buffer = 8M

[mysqlhotcopy的]
互动超时

[mysqld_safe的]
打开文件限制= 8192

我不认为MySQL应该杀死你的操作系统,即使它是不正确的。 你描述的是一个健康的服务器不正常 。 在最糟糕的情况下, MySQL实例会死亡,而不是整个服务器。

您应该调查可能的硬件问题,如冷却不足或RAM芯片损坏。 所以你应该先排除这些。

如果你同意这可能确实是一个硬件问题,你可以这样做:

  • 改善冷却。 也许打开服务器的情况下,让它跑这种方式来certificate理论。
  • 刻录一张memcheck live CD并快速进行内存检查。 这需要重新启动,但我认为你的服务器正在给你每天的机会,对吧? 😉

祝你好运! – 伊夫

它应该改善使用innodb数据库的所有站点的响应和性能。 他们不会停止工作,因为这些变化。 我build议在非繁忙时间进行调整。 configuration列表是一个好的开始,但最终你将不得不微调它以最好地满足你的需求。 我利用phpmyadmin的页面来打开服务器。

我会改变innodb_buffer_pool_size = 2G到1GB,因为你只有3GB的RAM,你需要足够的系统运行

小心改变INI文件。

你显示的新的不包括像默认字符集一些重要的设置; 你只显示改变的部分?

另外,如果在操作系统崩溃时打开的文件是2048,那么将开放文件限制更改为8192似乎很奇怪。