小编How*_*owy的帖子

不能在Kepler下安装Maven for Eclipse 1.5.0插件

我下载了Eclipse Kepler,并尝试从其更新站点安装M2Eclipse .

选择Maven Integration for Eclipse后,我单击Next并出现以下错误:

缺少要求:Maven Integration for Eclipse 1.5.0.20140606-0033(org.eclipse.m2e.core 1.5.0.20140606-0033)需要'bundle com.google.guava [14.0.1,16.0.0)'但无法找到

所以我通过互联网搜索了解如何安装Guava Eclipse插件.有人说它来自Eclipse市场,但无法下载.我下载了二进制文件,并尝试将其复制到Eclipse的插件目录中.结果仍然相同.

cp ~/Downloads/guava-16.0.1.jar /Applications/eclipse/plugins/com.google.guava_16.0.1.v1234.jar
Run Code Online (Sandbox Code Playgroud)

如何为开普勒安装m2e插件?

eclipse maven guava m2e

37
推荐指数
3
解决办法
3万
查看次数

谁在ubuntu服务器上神秘地发送了一个SIGKILL到我的进程

10月25日更新:

现在我发现了导致问题的原因.

1)子进程自杀,这就是strace/perf/auditctl无法跟踪它的原因.

2)从Java线程触发创建进程的JNI调用.当线程最终死亡时,它也会破坏它创建的进程.

3)在我的代码fork和execve()子进程中,我有代码来监视父进程死亡并使用以下行终止我的子进程:prctl(PR_SET_PDEATHSIG,SIGKILL); 我的错,我没有特别注意这个标志在b/c之前它被认为是我的其他项目的最佳实践,其中子进程从主线程分叉.

4)如果我注释掉这一行,问题就消失了.最初的目的是在父进程消失时终止子进程.即使没有这个标志,它仍然是正确的行为.好像是ubuntu框的默认行为.

5)最后发现它是一个内核bug,在内核版本3.4.0中修复,我在AWS上的ubuntu框是内核版本3.13.0-29-generic.

这些问题有几个有用的链接:

a)http://www.linuxprogrammingblog.com/threads-and-fork-think-twice-before-using-them

b)在父线程退出时调用prctl(PR_SET_PDEATHSIG,SIGNAL),而不是父进程退出.

c)https://bugzilla.kernel.org/show_bug.cgi?id=43300

10月15日更新:

非常感谢所有的建议.我正在调查系统的一个区域到另一个区域.很难找到理由.

我想知道两件事.1)为什么像strace,auditctl和perf脚本这样强大的工具无法追踪导致杀戮的人?

2)被SIGKILL +++杀死的+++真的意味着它被信号杀死了吗?

原始邮政

我从Ubuntu 12中的Java应用程序服务器通过JNI接口启动了一个长时间运行的C进程.我使用JNI接口来启动进程而不是通过Java的进程构建器的原因是b/c的性能原因.对于java进程构建器来说,使用IPC非常低效,特别是b/c额外的缓冲引入了很长的延迟.

它会定期被SIGKILL神秘地终止.我发现的方式是通过strace,它说:"+++被SIGKILL +++杀死"

我检查了以下内容:

  1. 这不是崩溃.
  2. 这不是OOM.dmesg没什么.我的进程仅占用1 GB内存的3.3%.
  3. Java层没有杀死进程.如果代码终止进程,我会在JNI代码中放入一个日志,但是没有写入日志来指示.
  4. 这不是许可问题.我试图以sudo或其他用户身份运行,这两种情况都会导致进程被杀死.
  5. 如果我在shell中本地运行进程,一切正常.更重要的是,在我长时间运行的C代码中,我忽略了信号SIGHUP.只有当它作为Java服务器的子进程运行时,才会被杀死.
  6. 该过程非常耗费CPU.它使用了30%的CPU.有很多自愿上下文切换和nonvoluntary_ctxt_switches.
  7. (新更新)一个重要的事情很可能与我的进程被杀的原因有关.如果这个过程做了一些繁重的工作,它就不会被杀死,但是,有时它会做很少的CPU密集工作.当发生这种情况时,过了一会儿,大概1分钟就会被杀死.它的状态始终是S(睡眠)而不是R(跑步).操作系统似乎决定在大多数时间处于空闲状态时终止进程,如果进程繁忙则不会终止进程.
  8. 我怀疑Java的GC是罪魁祸首,然而,Java绝不会垃圾收集与JNI相关联的单例对象.(我的JNI对象与该单例绑定).

我被它终止的原因感到困惑.有没有人有一个很好的建议如何追踪它?

PS

  1. 在我的ubuntu限制 - 结果是:

    core file size          (blocks, -c) 0
    data seg size           (kbytes, -d) unlimited
    scheduling priority             (-e) 0
    file size               (blocks, -f) unlimited
    pending signals                 (-i) 7862
    max locked memory       (kbytes, -l) 64
    max memory size         (kbytes, -m) unlimited
    open files …
    Run Code Online (Sandbox Code Playgroud)

c java linux ubuntu java-native-interface

24
推荐指数
2
解决办法
9046
查看次数

标签 统计

c ×1

eclipse ×1

guava ×1

java ×1

java-native-interface ×1

linux ×1

m2e ×1

maven ×1

ubuntu ×1