MySQL填充内存并冻结

Posted

技术标签:

【中文标题】MySQL填充内存并冻结【英文标题】:MySQL fill the memory and freezes 【发布时间】:2011-07-06 07:43:10 【问题描述】:

我的 mysql 服务器 (Debian/Lenny) 有问题。有时 MySQL 守护进程填充内存和页面不可访问。重新启动 MySQL 守护程序会有所帮助,有时我必须重新启动整个服务器(无法再连接 SSH)。这是错误日志:

InnoDB: Error: pthread_create returned 12<br/> 110228 23:58:36 InnoDB: Started; log sequence number 0 43695 110228 23:58:36 [Note] /usr/sbin/mysqld: ready for connections. Version: '5.0.51a-24+lenny5' socket: '/var/run/mysqld/mysqld.sock' port: 3306 (Debian).


编辑

问题是,我没有使用 InnoDB 引擎。我所有的表都在 MyISAM 引擎中。 SHOW ENGINES 说:没有 InnoDB。我以前做过。

这是我的.cnf

[客户] 端口 = 3306 套接字 = /var/run/mysqld/mysqld.sock

[mysqld_safe] socket=/var/run/mysqld/mysqld.sock 不错 = 0 日志错误 = /var/log/mysql/error.log

[mysqld] 用户 = mysql pid 文件 = /var/run/mysqld/mysqld.pid 套接字 = /var/run/mysqld/mysqld.sock 端口 = 3306 basedir = /usr 数据目录 = /var/lib/mysql tmpdir = /tmp 语言 = /usr/share/mysql/english 跳过外部锁定 日志错误 = /var/log/mysql/error.log 绑定地址 = 127.0.0.1 key_buffer = 16M max_allowed_pa​​cket = 16M 线程堆栈 = 128K thread_cache_size = 8 myisam-recover = 备份 query_cache_limit = 1M query_cache_size = 16M expire_logs_days = 10 max_binlog_size = 100M 跳过-bdb

[mysqldump] 快速 引用名称 max_allowed_pa​​cket = 16M

[mysql] [isamchk] key_buffer = 16M

!includedir /etc/mysql/conf.d/

还有内存配置?我不确定你是什么意思。你能解释一下吗?谢谢!!

谁能给我解释一下?感谢并为我的英语感到抱歉。

【问题讨论】:

您可能需要关闭 InnoDB 作为解决方法。即使您所有的表都是 MyISAM,它也可以打开。运行SHOW ENGINES,查看是否启用了 InnoDB。 请粘贴您的 my.cnf 以及您的服务器配置、内存等。 您可能有一个配置最终会使用比您可用的内存更多的内存。如上所述,请发布您的配置 - 可能来自 /etc/my.cnf 我把我的日志。你怎么看? 【参考方案1】:

有一个 mysql 调优入门脚本:

http://www.day32.com/MySQL/

脚本直接下载地址:http://www.day32.com/MySQL/tuning-primer.sh

在您的数据库服务器上运行此脚本。它分析了为缓冲区和可用内存分配了多少内存并给出了建议。根据建议减小 mysql 缓冲区的大小。

【讨论】:

以上是关于MySQL填充内存并冻结的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用多线程将大型数据集填充到组合框中时,Windows 窗体冻结?

C# 使用NPOI导出Excel,首行冻结,添加筛选,填充颜色,列宽自适应

在同步 Web 服务数据上添加 UIActivityIndi​​catorView 并填充 UITableView

jQuery UI Datepicker 将备用字段填充并格式化为 MySQL 日期

如何在没有冻结UI的情况下使用加载屏幕正确暂停主线程直到满足条件,

PHP 创建XML文件并使用mySQL中的数据填充