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_packet = 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_packet = 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 服务数据上添加 UIActivityIndicatorView 并填充 UITableView
jQuery UI Datepicker 将备用字段填充并格式化为 MySQL 日期