-
Notifications
You must be signed in to change notification settings - Fork 767
帮助作者改善 SSRoT
ssrlive edited this page Apr 29, 2020
·
28 revisions
有同学发帖说 SSRoT 本来工作得好好的,但某天突然就不管用了,排除站点被 GFW 封锁的情况,极大可能是 SSR 服务器软件崩了。
为了让大家尽快帮助作者找到崩溃点,迅速修正错误。就有了这篇小文。
我们可以使用 Linux 的 coreDump
组件将崩溃现场转储到一个指定文件里,然后用 gdb
打开这个文件查看结果。
- 我们用
sudo su
命令将当前账号切换到管理员权限。
sudo su
- 用
vi
编辑软件打开本机的全局配置文件/etc/rc.local
vi /etc/rc.local
- 按下
i
键(是i
,I
, 不是L
, 也不是1
)让vi
切换到文本编辑模式,按动下箭头
移动文本插入点到/etc/rc.local
文件的末尾的 exit 指令之前,添加如下命令
echo "/core-%e-%p-%s-%t" > /proc/sys/kernel/core_pattern
像下图这个样子,然后按下 ESC
键退出编辑模式,并敲入 :wq
和 回车 这 四个 键(冒号
w
q
回车
)保存修改并退出 vi
编辑器。
- 敲入
chmod +x /etc/rc.local
命令为rc.local
加入可执行
属性。
chmod +x /etc/rc.local
- 用
vi
编辑/etc/security/limits.conf
文件, 设置所有用户 core file size soft 和 hard limit 为 unlimited。打开文件的命令是vi /etc/security/limits.conf
,像上一步一样,在文件内输入如下文本,并保存退出,像下图这个样子。
* soft core unlimited
* hard core unlimited
- SSRoT 服务器的 系统服务 配置文件是
/lib/systemd/system/ssr-native.service
, 可以用vi
打开编辑, 目前服务崩溃后重启的时间间隔是 35秒, 你可以改大或者改小,值得注意的是,不要改得太小,如果服务程序一直崩溃,大量的崩溃转储文件会撑爆你的硬盘.
如果希望对系统
systemd service
全局设置,可修改/etc/systemd/system.conf
文件。加入设置DefaultLimitCORE=infinity
。当然这一步不是必须的。
- 敲入
reboot
命令重启主机,当前的准备工作就完成了。
reboot
- 当有崩溃事故发生时,再次登入主机,用
ls / | grep ssr
命令列出根目录/
文件夹里文件名带ssr
字样的文件,找到具体的崩溃转储
文件名,然后用gdb
命令查看崩溃现场,比如我这里就是像这样
gdb /usr/bin/ssr-server /core-dump-ssr-server-3140-11-1587191352
具体到你的情况,其中的 转储 文件名得换成你机器上的实际存在的名字。
-
把你看到的信息复制下来,以提交 issue 的方式发给开发者,不胜感激。
-
经常检查你的根目录,看有没有
转储文件
。如果有的话请将分析后的结果发送给开发者,大家共同完善这款软件。
参考资料: coredump配置、产生、分析以及分析示例
任何疑问或建议, 请到 Issues 提出.