未解决 mirai在linux上运行会自己把自己kill掉
-
,已经发生很多次了,不知道为什么自己就把自己kill了
-
@ConstantineQAQ
为啥不先看看日志呢 -
@cssxsh 上面这个就是日志里的
-
-
看样子像是被系统或者第三方原因杀掉了
mirai-console 关闭的时候会有相关的日志的
-
@cssxsh 在mcl自己的log里我也没看到,就很奇怪
-
-
我问了一些用户,说是 oom 内存泄露
-
demsg
可以看为什么被kill了,用dmesg | grep java
查一下。 -
我上次遇到的时候,查原因是OOM,被Linux杀了(Linux在内存不足时会kill掉占用内存最多的家伙)。
[2466296.103826] Out of memory: Killed process 24092 (java) total-vm:4033584kB, anon-rss:614500kB, file-rss:0kB, shmem-rss:0kB, UID:1000 pgtables:1740kB oom_score_adj:0 [2466296.150658] oom_reaper: reaped process 24092 (java), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
我现在分别使用两种办法来缓解。
一是创建交换分区,因为这个服务器是轻量应用云,只有2G内存,而且默认没有Swap,加上以后可以大大减少OOM的情况。
其次我现在使用systemd托管mirai,就算kill了也会很快重启。作为参考,这是我的Unit文件:
[Unit] Description=Mirai Console After=syslog.target After=network.target [Service] RestartSec=2s Type=simple User=admin Group=admin WorkingDirectory=/home/admin/Mirai/ ExecStart=/usr/bin/java -Xmx1G -cp "/home/admin/Mirai/libs/*" net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader Restart=always [Install] WantedBy=multi-user.target
-
@jie65535 谢谢你
-
可以使用fight recoder来看看是不是发生了内存泄漏
https://skyscribe.github.io/post/2017/08/22/performance-tuning-with-java-flight-recorder/