赞
踩
这是一个非常的大的坑,差点就被坑懵逼了。因为一开始你不知道这个错误从何而来,你无从下手。2018-09-29T03:53:09.373370Z 0 [Error] mmap(137428992 bytes) failed; errno 12这样一行错误,我是从mysql日志中找到的。先说一下我们部署项目的经过吧,我部署的是一个Spring boot的项目,要部署在一个有java集成环境的服务器上。我已经在Linux上创建了war文件,当然这其中也是踩过很多坑的。错误经历的过了,你也就一点点在成长,我们报着感恩的心感谢那些bug让我变得强大。
闲话不多少,为什么这是一个坑呢,因为这个报错不是正面报错,而是侧面的报了个这样的错误:Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.最后我还是mysql日志文件中才找到真的错误,是swap内存问题。当初我的目的呢就是把那个生成的war文件部署到正式环境上去,但是当我在启动mysql(systemctl restart mysqld)的时候呢,服务器给我报了一个上面的错误。
这个错误呢,就是告诉你mysql启动失败,提示你,分别使用systemctl status mysqld.service和journalctl -xe查看服务启动失败的原因。但是这个命令,我查阅了资料,还是不能知道出错真的原因是什么。
最后从mysql日志(/var/log/mysqld.log)找到了问题的所在,有一行这样的错误[Error] mmap(137428992 bytes) failed; errno 12。在这个文件中记录的所有的日志,为了方面查询错误,我们可以先删除,然后重新启动mysql它又会生成,这样文件篇幅简单我们也便于查看。然后free查看内存,你会发现swap为0。
说到这里,很明显是swap内存的问题了。既然swap为0那我们就增加swap内存进去,这里我们添加1G swap为例。$ sudo dd if=/dev/zero of=/swapfile bs=1M count=1024 #增加1G的SWAP进去
$ sudo mkswap /swapfile
$ sudo swapon /swapfile
$ free
total used free shared buffers cached
Mem: 608476 601432 7044 0 824 88752
-/+ buffers/cache: 511856 96620
Swap: 1048572 0 1048572
添加后,再次free查看内存情况,这下我们就能看swap内存。最后重新启动mysql,mysql就能启动成功,项目正常运行。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。