mysql 内存太大被杀_数据库mysqld进程屡次被杀,真的只是MySQL的问题?

曾经在我的博客服务器上发现过这样一个问题,每隔几天mysql服务进程就会莫名其妙的消失掉。这个问题持续时间非常长,前前后后花了我大半个月的时间,因为每次出现问题都是正常运行几天后。

e19162c482abf2e6356f5d291a7afc53.png

我意识到可能我的MySQL数据库出现了问题。使用putty连接到我的服务器上,使用top命令后按下shift+M键以内存大小排列果然看不到mysqld进程了。打开系统的日志文件(cat /var/log/mysqld.log),发现在下午的时候出现了内存报警的情况,随后系统就杀掉了占据内存最大的MySQL进程,来缓解服务器压力。

重新启动mysql进程,并使用top命令盯着服务器上的进程列表到底发生了什么变化。10分钟左右,异常出现了,一大堆httpd进程冒了出来。而且每个进程都占据了2%-3%左右的内存,直到MySQL再次被杀时,服务器上被启动的httpd进程已经高达三十多个,大约占据了快80%的内存,再加上mysqld占据的20%左右,几乎没有可以分配的内存了。原来问题出现在了Apache的身上。

069677f6d8defe7e7e10c35df3c78225.png

在这里说说Apache的工作原理。Apache有两种工作模式,一种是prefork模式,另一种是worker模式。这两种模式各有各的优点,prefork模式下每个连接创建一个进程,单对单。worker模式下一个进程对应多个连接,使用线程来进行处理,多对单。

然并卵,修改apache的工作模式,很麻烦,也不安全。不提倡修改。还是老老实实地优化prefork模式吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值