Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySql服务器5.0.96有时会挂起_Mysql_Innodb - Fatal编程技术网

MySql服务器5.0.96有时会挂起

MySql服务器5.0.96有时会挂起,mysql,innodb,Mysql,Innodb,我的MySQL服务器版本5.0.96有问题。服务器上正在运行包含所有InnoDB表的数据库。 有时在繁重的工作负载期间,所有客户端同时都会遇到MySQL服务器无响应的情况。有时几分钟后服务器恢复,但有时只有重新启动MySQL服务才有帮助。 当连接的客户端不多时,服务器工作正常。连接的数量也不是问题,我检查了,在繁重的工作负载期间,连接的数量是300-400,我们将最大连接数量设置为5000。 机器和四核处理器上有32GB的RAM内存,所以这应该足够了。 来自服务器的InnoDB参数为 innod

我的MySQL服务器版本5.0.96有问题。服务器上正在运行包含所有InnoDB表的数据库。 有时在繁重的工作负载期间,所有客户端同时都会遇到MySQL服务器无响应的情况。有时几分钟后服务器恢复,但有时只有重新启动MySQL服务才有帮助。 当连接的客户端不多时,服务器工作正常。连接的数量也不是问题,我检查了,在繁重的工作负载期间,连接的数量是300-400,我们将最大连接数量设置为5000。 机器和四核处理器上有32GB的RAM内存,所以这应该足够了。 来自服务器的InnoDB参数为

innodb_thread_concurrence = 200
innodb_open_files = 2048
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
innodb_log_files_in_group = 2
innodb_log_file_size = 256M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_buffer_pool_size = 8192M
innodb_additional_mem_pool_size = 8M
innodb_concurrency_tickets = 500
innodb_commit_concurrency = 16
innodb_autoextend_increment = 8
innodb_adaptive_hash_index enabled 

我在某个地方读到innodb_线程_并发不应该大于16。这个参数的值太大是否会导致服务器挂起?

5.0InnoDB在大约4-8个活跃用户之后陷入困境。5000个空闲用户没有问题

当你有超过,比方说,8个用户时,他们会互相绊倒,每个人都需要越来越长的时间才能完成。与此同时,越来越多的用户试图进入;这只会加剧局势。这可能是您决定重新启动的时候。另一个解决方案是阻止客户端启动更多连接

你的客户是什么?如果它们在Apache中运行,请将MaxClient保持在较低的水平,例如10。这避免了MySQL过载,并使您的代码更容易为用户提供比崩溃更优雅的东西

5.6在这方面有很多改进。我建议你升级。(您落后了3个主要步骤,因此升级将是痛苦的。)

到目前为止,我已经忽略了您的设置,因为您“无法通过调整解决性能问题”(通常)。现在我来看看

您知道当问题发生时您是否受到I/O限制吗?如果是这样,考虑改变< /P>
innodb_flush_log_at_trx_commit from 1 to 2
这会降低安全性,但会显著减少I/O

能否将语句批处理到
BEGIN…COMMIT
块中?这会导致更少的I/O

你有备用公羊吗?您的数据和索引是否超过8GB?(显然您有7.43GB)如果有,请增加

innodb_buffer_pool_size from 8192M to 70% of _available_ RAM
无论如何,把它增加到9克

哦,糟糕:

query_cache_size = 512M
当对表进行任何写入时,需要从查询缓存中清除对该表的所有提及。这可能代价高昂。我建议该设置不超过50米。在写繁忙的系统中,我建议关闭QC

你说“所有InnoDB”,但你却在为MyISAM浪费2GB:
key\u buffer\u size=2048M
。换成20米


您已经打开了slowlog,但可能处于默认阈值10秒。将时间减少到2秒。但也许即使是在10岁的时候,您已经发现了一些导致崩溃的查询。查看slowlog(更好的是,使用pt查询摘要对其进行总结)。让我们讨论最糟糕的两个问题。清理其中一个可能是总的解决方案。

5.0InnoDB在大约4-8个活跃用户之后陷入困境。5000个空闲用户没有问题

当你有超过,比方说,8个用户时,他们会互相绊倒,每个人都需要越来越长的时间才能完成。与此同时,越来越多的用户试图进入;这只会加剧局势。这可能是您决定重新启动的时候。另一个解决方案是阻止客户端启动更多连接

你的客户是什么?如果它们在Apache中运行,请将MaxClient保持在较低的水平,例如10。这避免了MySQL过载,并使您的代码更容易为用户提供比崩溃更优雅的东西

5.6在这方面有很多改进。我建议你升级。(您落后了3个主要步骤,因此升级将是痛苦的。)

到目前为止,我已经忽略了您的设置,因为您“无法通过调整解决性能问题”(通常)。现在我来看看

您知道当问题发生时您是否受到I/O限制吗?如果是这样,考虑改变< /P>
innodb_flush_log_at_trx_commit from 1 to 2
这会降低安全性,但会显著减少I/O

能否将语句批处理到
BEGIN…COMMIT
块中?这会导致更少的I/O

你有备用公羊吗?您的数据和索引是否超过8GB?(显然您有7.43GB)如果有,请增加

innodb_buffer_pool_size from 8192M to 70% of _available_ RAM
无论如何,把它增加到9克

哦,糟糕:

query_cache_size = 512M
当对表进行任何写入时,需要从查询缓存中清除对该表的所有提及。这可能代价高昂。我建议该设置不超过50米。在写繁忙的系统中,我建议关闭QC

你说“所有InnoDB”,但你却在为MyISAM浪费2GB:
key\u buffer\u size=2048M
。换成20米


您已经打开了slowlog,但可能处于默认阈值10秒。将时间减少到2秒。但也许即使是在10岁的时候,您已经发现了一些导致崩溃的查询。查看slowlog(更好的是,使用pt查询摘要对其进行总结)。让我们讨论最糟糕的两个问题。清理其中一个可能是总的解决方案。

我按照您的建议更改了服务器参数,重负载情况会更好,但用户有时仍会体验到服务器不活动。现在更好了,因为服务器在短时间内处于非活动状态。我可以从CPU监视器上看到,在这种情况下,处理器几乎是100%,但其中一个内核,其他三个都是20%。它是部署服务器的机器上的四核处理器。MySQL 5.0.96是否可能无法使用所有CPU核?关于:innodb_flush_log_at_trx_commit从1到2您所说的“这将不太安全”是什么意思?是否存在数据丢失之类的可能性?一个连接最多使用一个CPU。所以,听起来好像有一个挂在CPU上的慢速查询。让我们看看,看看是否可以做些什么来加速它。
innodb\u flush\u log\u_