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

2015-11-13 17:29:16 +08:00
 jimrok
程序是 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 的信息,大家有什么大招快砸来吧,除了不能重启环境,因为是生产系统。
4534 次点击
所在节点    程序员
20 条回复
znoodl
2015-11-13 17:37:20 +08:00
其实只要手动 ulimit -c 10240 就行了,然后运行程序
之后 gdb -c core.* program*调试

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

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

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

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

ulimit -a
这个用来查看

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

其实我也经常遇到不 dump 的情况,一直没搞懂为毛会不 dump ,坐等大神解答。
frienmo
2015-11-13 21:56:07 +08:00
昨天中美两国程序员
今天上个新服务器就 cash
stanhou
2015-11-13 22:16:00 +08:00
还以为 LZ 收 CASH 收到手抽筋呢
aliipay
2015-11-14 13:13:12 +08:00
要是不是 crash 而是自己 exit ,这就搞笑了
aliipay
2015-11-14 13:13:52 +08:00
如果不是 crash 而是自己 exit ,这就搞笑了
zzhhgo
2015-11-15 20:48:41 +08:00
@jimrok 看看 core 文件是不是在其他目录下,或者在小流量环境下直接开 gdb 吧
jimrok
2015-11-16 14:19:53 +08:00
@zzhhgo 貌似 core 是能够通过 kill 产生,产生的位置符合 core_pattern 的设置,我还找了这篇文章: https://www.centos.org/forums/viewtopic.php?t=5962 ,不过好像然并卵。我有点开始怀疑某处代码自己退出了系统。

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

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

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

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

© 2021 V2EX