免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 17503 | 回复: 19
打印 上一主题 下一主题

MYSQL Out of memory & restart 故障求助 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-12 10:33 |只看该作者 |倒序浏览
MYSQL版本:mysql 5.0.51a
操作系统版本: SUSE Linux Enterprise Server 10 (i586)
                   VERSION = 10
                   PATCHLEVEL = 1
内核:      2.6.16.54-0.2.3
080612  3:27:50 [ERROR] /usr/local/mysql/bin/mysqld: Out of memory (Needed 1043392 bytes)
080612  3:27:50 [ERROR] /usr/local/mysql/bin/mysqld: Out of memory (Needed 1043392 bytes)
080612  3:28:00 [ERROR] /usr/local/mysql/bin/mysqld: Out of memory (Needed 1044076 bytes)
080612  3:28:00 [ERROR] /usr/local/mysql/bin/mysqld: Out of memory (Needed 1043392 bytes)
080612  3:28:00 [ERROR] /usr/local/mysql/bin/mysqld: Out of memory (Needed 1043392 bytes)
080612  3:28:00 [ERROR] /usr/local/mysql/bin/mysqld: Out of memory (Needed 1044076 bytes)
080612  3:38:00 [ERROR] /usr/local/mysql/bin/mysqld: Out of memory (Needed 1044076 bytes)
080612  3:39:42 - mysqld got signal 11;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
We will try our best to scrape up some info that will hopefully help diagnose
the problem, but since we have already crashed, something is definitely wrong
and this may fail.

key_buffer_size=67108864
read_buffer_size=1044480
max_used_connections=200
max_connections=768
threads_connected=198
It is possible that mysqld could use up to
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_connections = 1635322 K
bytes of memory
Hope that's ok; if not, decrease some variables in the equation.

我现在应该怎么办? 是调小sort_buffer_size还是增大key_buffer_size ?
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_connections 这个公式我也觉得郁闷。 我用的是innodb表,key_buffer_size不是对myisam表才有影响的吗?
谢谢 。

[ 本帖最后由 cycker 于 2008-6-12 11:03 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-06-12 11:02 |只看该作者
原帖由 cycker 于 2008-6-12 10:33 发表
080612  3:27:50 [ERROR] /usr/local/mysql/bin/mysqld: Out of memory (Needed 1043392 bytes)
080612  3:27:50 [ERROR] /usr/local/mysql/bin/mysqld: Out of memory (Needed 1043392 bytes)
080612  3:28: ...



1.从错误提示分析得到
可能是mysql的bug,若是bug,更改版本比较好,

也有可能是版本与系统之间的不兼容存在问题

也有可能是硬件的问题

2.out of memory内存不足,加大物理内存.这个大家都知识.

3.增大sort_buffer_size还是增大key_buffer_size,这有一个标准,我没有使用你的公式.我的标准如下

key_buffer_size的值会影响索引缓存的大小
执行mysqladmin extended-status查看
   Key_read_requests                 | 26959    |
     Key_reads                               | 628      |


Key_reads/Key_reads_requests比值为1/100比较好.1/1000会更好.1/10性能就比较差.此时可加大.key_buffer_size大小.

sort_buffer_size值的大小.取决于Sort_merge_passes值的大小.系统不忙时为0.若是大于1K以上.适当加大sort_buffer_size值

论坛徽章:
0
3 [报告]
发表于 2008-06-12 11:29 |只看该作者
See the earlier  post.

论坛徽章:
0
4 [报告]
发表于 2008-06-12 11:54 |只看该作者
感谢你的回复。
原帖由 todayhero 于 2008-6-12 11:02 发表


1.从错误提示分析得到
可能是mysql的bug,若是bug,更改版本比较好,

也有可能是版本与系统之间的不兼容存在问题

也有可能是硬件的问题

   我也在想换到另外一台机器上试试。 不过我们这个MYSQLD的负载也是有问题的。负载相当高,一秒种有1400多次的SELECT。

2.out of memory内存不足,加大物理内存.这个大家都知识.

这个内存不足我比较难理解,我的机器内存是8G的,MYSQLD应该只能用到其中的2G,怎么也不会不够。
而且看free的结果,也是还有3g多的内存做在系统buffer
mysql@XXX:/data/mysqldata/data> free -  
             total       used       free     shared    buffers     cached
Mem:       8302504    7897568     404936          0     337188    5639604
-/+ buffers/cache:    1920776    6381728
Swap:      2104504        168    2104336


3, 增大sort_buffer_size还是增大key_buffer_size
我查到  
Key_read_requests      | 393506 |
| Key_reads              | 11     |     
看来key_buffer_size应该是够的

4, sort_buffer_size值

| Sort_merge_passes | 4377  | 我这边非常大。


SO。 我把sort_buffer_size调大试一下。
...

[ 本帖最后由 cycker 于 2008-6-12 14:05 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2008-06-12 14:41 |只看该作者
兄弟,很大的可能是你的【mysqld】里面的参数设置不正确。
原来我的数据库里面的“innodb_buffer_pool_size = 2G”的时候,出现这样的错误,现在改小点,目前还没有出现,多看看参数设置。:wink:

论坛徽章:
0
6 [报告]
发表于 2008-06-12 16:39 |只看该作者
3, 增大sort_buffer_size还是增大key_buffer_size
我查到  
Key_read_requests      | 393506 |
| Key_reads              | 11     |     
看来key_buffer_size应该是够的,

这个结果,要长时间运行查看的结果才有意思.至少24小时(24小时,MYSQL经历了访问高峰).如果24小时之后还是这样的话,建议将key_buffer_size设置的小些,节省内存资源

[ 本帖最后由 todayhero 于 2008-6-12 16:40 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2008-06-13 09:06 |只看该作者
减小各个内存相关参数到保守值,然后根据运行状况逐渐调整

论坛徽章:
0
8 [报告]
发表于 2008-06-13 09:18 |只看该作者
Can you tell us the size of your total memory?

论坛徽章:
0
9 [报告]
发表于 2008-06-14 14:35 |只看该作者
原帖由 cycker 于 2008-6-12 10:33 发表
MYSQL版本:mysql 5.0.51a
操作系统版本: SUSE Linux Enterprise Server 10 (i586)
                   VERSION = 10
                   PATCHLEVEL = 1
内核:      2.6.16.54-0.2.3
080612  3:27:50 [ ...



有个小疑问,你没有用myisam,怎么设置如此大的key_buffer_size ?

论坛徽章:
0
10 [报告]
发表于 2008-06-15 11:30 |只看该作者

如果用innodb就调整innodb_buffer_pool_size

innodb_buffer_pool_size = 2G 改为1个G,这个 我以前遇到过,也是这么解决的。和楼上一个 一样。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP