小内存服务器MySQL出现Out of memory错误
2012-12-16更新:这方法貌似没有什么用,MySQL依然一天挂掉3次,给服务器加上swap文件 试试。
使用阿里云服务器的第二天,我就收到阿里云的提醒短信,说网站挂掉了。
上网站一看,提示数据库连接错误,重启MySQL了事。
没想到11点钟的时候MySQL再次挂掉了,上服务器一看,原来是MySQL进程被Kill了,原因是 Out of memory
。
Dec 14 11:38:02 aliyun kernel: [69756.532361] Out of memory: Kill process 11168 (mysqld) score 114 or sacrifice child Dec 14 11:38:02 aliyun kernel: [69756.532430] Killed process 11168 (mysqld) total-vm:821140kB, anon-rss:57004kB, file-rss:0kB
我的服务器内存只有512MB,而且没有配置SWAP分区,看来是MySQL占用的太多内存。找到 /etc/mysql/my.cnv
配置进行修改(注意备份):
1key_buffer = 16K
2max_allowed_packet = 1M
3thread_stack = 64K
4thread_cache_size = 4
5sort_buffer = 64K
6net_buffer_length = 2K
7#max_connections = 100
8#table_cache = 64
9#thread_concurrency = 10
同时也修改Apache的配置
1Timeout 45
2KeepAlive On
3MaxKeepAliveRequests 200
4KeepAliveTimeout 3
5<IfModule mpm_prefork_module>
6 StartServers 5
7 MinSpareServers 5
8 MaxSpareServers 10
9 MaxClients 30
10 MaxRequestsPerChild 2000
11</IfModule>
重启Apache 和 MySQL
1service apache2 restart
2service mysql restart
参考资料:
- http://forum.slicehost.com/index.php?p=/discussion/3629/out-of-memory-kill-process/p1
- http://www.chrisjohnston.org/tech/configuring-a-lightweight-apache-mysql-install-on-debian-ubuntu
- 文章ID:1762
- 原文作者:zrong
- 原文链接:https://blog.zengrong.net/post/out_of_memory_mysql/
- 版权声明:本作品采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可,非商业转载请注明出处(原文作者,原文链接),商业转载请联系作者获得授权。