V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
oldcai
V2EX  ›  问与答

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

  •  
  •   oldcai · 2013-05-15 11:43:59 +08:00 · 4183 次点击
    这是一个创建于 4021 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我在自己的机器上开发程序并安装mongodb,但是经常遇到的问题是:每天开开关关,不出多少天,mongodb就会不自动启动了,然后去检查一下,多半是mongodb没安全退出导致死锁了。

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

    谢谢。

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

    是系统设定的耐心不好,导致淡定关闭进程超时于是暴力关闭进程了么,如果是这样,该如何设置才好?
    或者有没有其他什么办法,能够保证某个进程安全退出后才关闭系统呢?
    6 条回复    1970-01-01 08:00:00 +08:00
    likuku
        1
    likuku  
       2013-05-15 11:54:16 +08:00
    mogodb 有无类类似 fsck/recover 功能,让其每次启动时都先检查一遍数据库错误,并修复。
    oldcai
        2
    oldcai  
    OP
       2013-05-15 17:30:39 +08:00
    @likuku mongodb里面是这样的:启动检测,失败就需要去备份一下,然后执行repair,一般来说能直接repair好,不行的话就继续推测其他原因导致启动失败,自动的话,用shell应该也能办到。。但是不一定靠谱。
    我正在尝试增大kill timeout时间:http://www.oldcai.com/archives/700
    如果有用会来说一下的。
    mozartgho
        3
    mozartgho  
       2013-05-15 17:41:13 +08:00
    @oldcai 我觉得这是mogodb应用要做的事情,跟Linux系统没什么关系。数据库类应用应该有自己的数据恢复处理机制,以应对突然断电或关机等情况。一般情况下会将磁盘写入动作完整记录下来,断电重启后根据这个记录来回溯数据。
    oldcai
        4
    oldcai  
    OP
       2013-05-15 17:43:40 +08:00
    @mozartgho 是有,但是需要手动修复,我每天关机一次或以上,大概每周修复一次以上,这个节奏。
    likuku
        5
    likuku  
       2013-05-15 18:03:36 +08:00
    mogodb 没有可靠的正常关闭方式么?
    oldcai
        6
    oldcai  
    OP
       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
    有效性还待检验
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1020 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 19:32 · PVG 03:32 · LAX 12:32 · JFK 15:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.