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

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

  •  
  •   jimrok · 2015-11-13 17:29:16 +08:00 · 3122 次点击
    这是一个创建于 1432 天前的主题,其中的信息可能已经有所发展或是发生改变。
    程序是 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
        1
    znoodl   2015-11-13 17:37:20 +08:00   ♥ 1
    其实只要手动 ulimit -c 10240 就行了,然后运行程序
    之后 gdb -c core.* program*调试

    PS:为啥不是写程序的人调试?
        2
    tesion99   2015-11-13 17:38:13 +08:00   ♥ 1
    编译的时候要加上相关的调试参数 -g,同时把编译的优化选项去掉,运行程序,根据产生的 core dump 文件,运行相关 gdb 命令,调试
    ps:注意查看 core dump 文件的生成路径,一般为当前程序运行目录下
        3
    jimrok   2015-11-13 17:42:58 +08:00
    @tesion99 我检查一下 build 的人使用的参数。
        4
    jimrok   2015-11-13 17:57:04 +08:00
    貌似都是加了,调试版本的代码很大。
        5
    ryd994   2015-11-13 18:05:03 +08:00
    上 valgrind 。另外这个难道不属于 bug 么?打回去返工
        6
    oott123   2015-11-13 18:20:37 +08:00
    =_= 难道没人提醒楼主是 crash 不是 cash ……
        7
    jimrok   2015-11-13 19:12:06 +08:00
    @oott123 是 crash ,焦头烂额。
        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 ?
        9
    jimrok   2015-11-13 19:31:38 +08:00
    @ryd994 压力测试和功能测试都出现不了。上了客户的网络就不定期的蹦溃,开发觉得只有 core dump 能知道问题了,代码看了几遍不知道在什么地方有问题。
        10
    julypanda   2015-11-13 19:48:39 +08:00   ♥ 1
    看见 cash 进来的
    感觉被骗了
        11
    jimrok   2015-11-13 19:56:57 +08:00
    @zzhhgo 已经加了,但每次 crash 都看不到 core , 难道哪里配置错误了,程序应该是 monit 在崩溃后带起来的。
        12
    jimrok   2015-11-13 19:59:46 +08:00
    感觉用 C 写代码技术不精就是受虐,开发,运维,老板,客户一起虐,可看着国外那么多 nginx , redis , memcached ,大把的 C 代码的产物。不知道是靠什么来保证品质的。
        13
    tinkerer   2015-11-13 21:32:21 +08:00 via iPhone   ♥ 1
    楼主用 cash 让我点击进来了…
        14
    freeznet   2015-11-13 21:51:45 +08:00   ♥ 1
    我如果遇到不 dump 的情况,就会选择直接用 tmux+gdb 执行程序,然后等待崩溃再切过去调试~。

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