因此,我运行一个使用嵌入式jetty和maven app-assembler插件的web服务器。当我直接调用app-assembler应用程序(以root身份运行)时,服务器启动正常。即使在nohup下运行,Web服务器也完全正常启动。Java服务器挂在CentOS启动5
当我将app-assembler脚本注册为init.d脚本(Runlevels 235/Start pri 98/Stop pri 20)并使用service命令运行init.d脚本时,Web服务器在启动过程中会挂起。
应用程序挂起的地方是在Struts 2约定插件中的类路径扫描期间。
如果我杀了使用“杀-QUIT” web服务器,代码看起来是停留在Unix文件系统:
"main" prio=10 tid=0x09add800 nid=0xb33 runnable [0xb7361000]
java.lang.Thread.State: RUNNABLE
at java.io.UnixFileSystem.getBooleanAttributes0(Native Method)
at java.io.UnixFileSystem.getBooleanAttributes(UnixFileSystem.java:228)
at java.io.File.isDirectory(File.java:754)
我做了一些研究,似乎有可能是性能问题与NFS,Java和文件系统访问。
我遇到的问题是我们没有在我们的服务器上运行NFS,并且据我所知我们正在以相同的方式,由同一用户运行该应用程序。
即使模仿服务命令的工作方式(在脚本启动之前运行'env -i'),直接运行脚本也不会挂起。
寻找任何建议或指针来解决这个问题,或任何方式来解决它。
更新(4/8/12)
我使用Sun(甲骨文)JDK 1.6.0_31
/usr/java/latest/bin/java -version
java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) Server VM (build 20.6-b01, mixed mode)
你在使用OpenJDK吗? – Quaternion 2012-04-08 23:55:27
我正在使用Sun JDK。更新的问题包括这个信息 – ArcSine 2012-04-09 00:05:49
这将是很好的尝试OpenJDK。有一个关于它成为标准的Oracle/Sun视频。我所知道的仅仅是我所使用的并且没有任何问题(Ubuntu 11.10/Netbeans/Web应用程序开发/ Glassfish) – Quaternion 2012-04-09 00:32:42