V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jimrok
V2EX  ›  程序员

最近在 CentOS 6 上了一个新服务,经常 cash,搞的焦头烂额,有什么办法

  •  
  •   jimrok · 2015-11-13 17:29:16 +08:00 · 4502 次点击
    这是一个创建于 3300 天前的主题,其中的信息可能已经有所发展或是发生改变。
    程序是 c 做的,可是我不会呀,写代码的人说要开 core dump 。我 google 一下,做了几件事。

    修改 /etc/security/limits.conf 增加
    * soft core 10240

    修改 /etc/sysctl.conf ,加了这几项。
    kernel.core_uses_pid = 1
    kernel.core_pattern = /tmp/core-%e-%s-%u-%g-%p-%t
    fs.suid_dumpable = 1

    执行生效
    sysctl -p

    再启动的脚本里增加
    ulimit -c 10240
    DAEMON_COREFILE_LIMIT='unlimited'

    最后连 monit 的脚本也加上
    ulimit -c 10240
    DAEMON_COREFILE_LIMIT='unlimited'

    还是没有任何 core dump 的信息,大家有什么大招快砸来吧,除了不能重启环境,因为是生产系统。
    20 条回复    2015-11-16 14:19:53 +08:00
    znoodl
        1
    znoodl  
       2015-11-13 17:37:20 +08:00   ❤️ 1
    其实只要手动 ulimit -c 10240 就行了,然后运行程序
    之后 gdb -c core.* program*调试

    PS:为啥不是写程序的人调试?
    tesion99
        2
    tesion99  
       2015-11-13 17:38:13 +08:00   ❤️ 1
    编译的时候要加上相关的调试参数 -g,同时把编译的优化选项去掉,运行程序,根据产生的 core dump 文件,运行相关 gdb 命令,调试
    ps:注意查看 core dump 文件的生成路径,一般为当前程序运行目录下
    jimrok
        3
    jimrok  
    OP
       2015-11-13 17:42:58 +08:00
    @tesion99 我检查一下 build 的人使用的参数。
    jimrok
        4
    jimrok  
    OP
       2015-11-13 17:57:04 +08:00
    貌似都是加了,调试版本的代码很大。
    ryd994
        5
    ryd994  
       2015-11-13 18:05:03 +08:00
    上 valgrind 。另外这个难道不属于 bug 么?打回去返工
    oott123
        6
    oott123  
       2015-11-13 18:20:37 +08:00
    =_= 难道没人提醒楼主是 crash 不是 cash ……
    jimrok
        7
    jimrok  
    OP
       2015-11-13 19:12:06 +08:00
    @oott123 是 crash ,焦头烂额。
    zzhhgo
        8
    zzhhgo  
       2015-11-13 19:19:48 +08:00   ❤️ 1
    ulimit -c unlimited

    这个为了让你当前环境可以用

    echo "ulimit -c unlimited" >> ~/.bash_profile

    这个让你在下次 ssh 连上可以用

    ulimit -a
    这个用来查看

    查看当前 core size 是不是显示 unlimited ?
    jimrok
        9
    jimrok  
    OP
       2015-11-13 19:31:38 +08:00
    @ryd994 压力测试和功能测试都出现不了。上了客户的网络就不定期的蹦溃,开发觉得只有 core dump 能知道问题了,代码看了几遍不知道在什么地方有问题。
    julypanda
        10
    julypanda  
       2015-11-13 19:48:39 +08:00   ❤️ 1
    看见 cash 进来的
    感觉被骗了
    jimrok
        11
    jimrok  
    OP
       2015-11-13 19:56:57 +08:00
    @zzhhgo 已经加了,但每次 crash 都看不到 core , 难道哪里配置错误了,程序应该是 monit 在崩溃后带起来的。
    jimrok
        12
    jimrok  
    OP
       2015-11-13 19:59:46 +08:00
    感觉用 C 写代码技术不精就是受虐,开发,运维,老板,客户一起虐,可看着国外那么多 nginx , redis , memcached ,大把的 C 代码的产物。不知道是靠什么来保证品质的。
    tinkerer
        13
    tinkerer  
       2015-11-13 21:32:21 +08:00 via iPhone   ❤️ 1
    楼主用 cash 让我点击进来了…
    freeznet
        14
    freeznet  
       2015-11-13 21:51:45 +08:00   ❤️ 1
    我如果遇到不 dump 的情况,就会选择直接用 tmux+gdb 执行程序,然后等待崩溃再切过去调试~。

    其实我也经常遇到不 dump 的情况,一直没搞懂为毛会不 dump ,坐等大神解答。
    frienmo
        15
    frienmo  
       2015-11-13 21:56:07 +08:00   ❤️ 1
    昨天中美两国程序员
    今天上个新服务器就 cash
    stanhou
        16
    stanhou  
       2015-11-13 22:16:00 +08:00   ❤️ 1
    还以为 LZ 收 CASH 收到手抽筋呢
    aliipay
        17
    aliipay  
       2015-11-14 13:13:12 +08:00
    要是不是 crash 而是自己 exit ,这就搞笑了
    aliipay
        18
    aliipay  
       2015-11-14 13:13:52 +08:00
    如果不是 crash 而是自己 exit ,这就搞笑了
    zzhhgo
        19
    zzhhgo  
       2015-11-15 20:48:41 +08:00   ❤️ 1
    @jimrok 看看 core 文件是不是在其他目录下,或者在小流量环境下直接开 gdb 吧
    jimrok
        20
    jimrok  
    OP
       2015-11-16 14:19:53 +08:00
    @zzhhgo 貌似 core 是能够通过 kill 产生,产生的位置符合 core_pattern 的设置,我还找了这篇文章: https://www.centos.org/forums/viewtopic.php?t=5962 ,不过好像然并卵。我有点开始怀疑某处代码自己退出了系统。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3121 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 13:58 · PVG 21:58 · LAX 05:58 · JFK 08:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.