linux下如何保证进程每次关机安全退出(如mongodb)

2013-05-15 11:43:59 +08:00
 oldcai
我在自己的机器上开发程序并安装mongodb,但是经常遇到的问题是:每天开开关关,不出多少天,mongodb就会不自动启动了,然后去检查一下,多半是mongodb没安全退出导致死锁了。

有没有办法可以根治老死锁。

谢谢。

已测试过update-rc.d mongodb defaults,自动生成的关闭顺序为20的
/etc/rc0.d/K20mongodb
/etc/rc1.d/K20mongodb
/etc/rc6.d/K20mongodb
还是没有解决,再次死锁了。

是系统设定的耐心不好,导致淡定关闭进程超时于是暴力关闭进程了么,如果是这样,该如何设置才好?
或者有没有其他什么办法,能够保证某个进程安全退出后才关闭系统呢?
4301 次点击
所在节点    问与答
6 条回复
likuku
2013-05-15 11:54:16 +08:00
mogodb 有无类类似 fsck/recover 功能,让其每次启动时都先检查一遍数据库错误,并修复。
oldcai
2013-05-15 17:30:39 +08:00
@likuku mongodb里面是这样的:启动检测,失败就需要去备份一下,然后执行repair,一般来说能直接repair好,不行的话就继续推测其他原因导致启动失败,自动的话,用shell应该也能办到。。但是不一定靠谱。
我正在尝试增大kill timeout时间:http://www.oldcai.com/archives/700
如果有用会来说一下的。
mozartgho
2013-05-15 17:41:13 +08:00
@oldcai 我觉得这是mogodb应用要做的事情,跟Linux系统没什么关系。数据库类应用应该有自己的数据恢复处理机制,以应对突然断电或关机等情况。一般情况下会将磁盘写入动作完整记录下来,断电重启后根据这个记录来回溯数据。
oldcai
2013-05-15 17:43:40 +08:00
@mozartgho 是有,但是需要手动修复,我每天关机一次或以上,大概每周修复一次以上,这个节奏。
likuku
2013-05-15 18:03:36 +08:00
mogodb 没有可靠的正常关闭方式么?
oldcai
2013-05-15 19:09:48 +08:00
@likuku 有,可以mongod --shutdown,也可以./mongo admin --eval "shutdownServer()",还可以发送kill -2发送退出信号给mongod进程
我自认为还可以,于是用的系统默认的类似kill -2的发送退出信号的方法。
但是系统的耐心不够,只等待5S时间,具体办法参看
http://www.oldcai.com/archives/700
有效性还待检验

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/68895

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX