遇到怪事了 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
uxstone
V2EX    问与答

遇到怪事了

  •  
  •   uxstone 2016-02-17 14:31:00 +08:00 9712 次点击
    这是一个创建于 3526 天前的主题,其中的信息可能已经有所发展或是发生改变。

    digitalocean 部署 tomcat
    终端显示启动成功,但无法访问 tomcat 首页,
    关闭时遇到

    Feb 17, 2016 1:29:34 AM org.apache.catalina.startup.Catalina stopServer
    SEVERE: Could not contact localhost:8005. Tomcat may not be running.
    Feb 17, 2016 1:29:34 AM org.apache.catalina.startup.Catalina stopServer
    SEVERE: Catalina.stop:
    java.net.ConnectException: Connection refused
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at java.net.Socket.connect(Socket.java:538)
    at java.net.Socket.<init>(Socket.java:434)
    at java.net.Socket.<init>(Socket.java:211)
    at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:476)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:408)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:497)

    不能访问 tomcat 首页了....
    同样的设置在本地就可以,
    为这事把 VPS 重装了系统,只装了 jdk 和 tomcat,环境变量也配了
    有谁遇到过吗?

    26 条回复    2016-02-18 16:17:09 +08:00
    hcymk2
        1
    hcymk2  
       2016-02-17 14:44:43 +08:00
    先 ps 看下 tomcat 的那个进程在不在,估计是不在了。
    如果在直接 kill ,之后再 startup 。
    之后在 vps 上 curl 下 tomcat 的首页。
    hcymk2
        2
    hcymk2  
       2016-02-17 14:47:21 +08:00
    还有能贴下启动的日志么?我觉得是没启动成功。
    uxstone
        3
    uxstone  
    OP
       2016-02-17 14:57:16 +08:00
    @hcymk2
    uxstone@ux1:~/tomcat/bin$ ./startup.sh
    Using CATALINA_BASE: /home/uxstone/tomcat
    Using CATALINA_HOME: /home/uxstone/tomcat
    Using CATALINA_TMPDIR: /home/uxstone/tomcat/temp
    Using JRE_HOME: /usr/lib/jvm/jdk1.8.0_73/jre
    Using CLASSPATH: /home/uxstone/tomcat/bin/bootstrap.jar:/home/uxstone/tomcat/bin/tomcat-juli.jar
    Tomcat started.
    uxstone
        4
    uxstone  
    OP
       2016-02-17 14:59:36 +08:00
    @hcymk2
    执行了 curl -X GET http://127.0.0.1:8080
    光标一直闪,没反应.
    hcymk2
        5
    hcymk2  
       2016-02-17 14:59:54 +08:00
    @uxstone
    说错了 是贴下启动时 catalina.out 的内容。
    hcymk2
        7
    hcymk2  
       2016-02-17 15:13:42 +08:00
    @uxstone
    私有的啊。。。。
    uxstone
        8
    uxstone  
    OP
       2016-02-17 15:18:39 +08:00
    kingwrcy
        9
    kingwrcy  
       2016-02-17 15:20:56 +08:00
    java.net.BindException: Address already in use

    8080 被用了吧?换个端口?
    hcymk2
        10
    hcymk2  
       2016-02-17 15:22:39 +08:00
    @uxstone
    ["http-nio-8080"]
    17-Feb-2016 01:32:35.845 SEVERE [main] org.apache.coyote.AbstractProtocol.init Failed to initialize end point associated with ProtocolHandler ["http-nio-8080"]
    java.net.BindException: Address already in use
    看到了


    先改下端口吧 ajp 如果不用可以先注释掉。
    uxstone
        11
    uxstone  
    OP
       2016-02-17 15:26:51 +08:00
    @hcymk2 @kingwrcy
    把 8080 改成 8081,还是不能用,
    我都把 VPS 系统重装了,
    只安装了 JDK 和 tomcat ,
    hcymk2
        12
    hcymk2  
       2016-02-17 15:34:11 +08:00
    那你看下 vps 上现在有进程在 8080 端口么?
    uxstone
        13
    uxstone  
    OP
       2016-02-17 15:44:14 +08:00
    @hcymk2
    lsof -i:8080
    netstart -ap |grep 8080

    都没有发现占用 8080
    hcymk2
        14
    hcymk2  
       2016-02-17 15:48:18 +08:00
    你远程直接 telnet 你的 vps 的 8080 这可真是怪了。
    uxstone
        15
    uxstone  
    OP
       2016-02-17 15:48:58 +08:00
    @hcymk2
    执行./shutdown.sh
    不能关闭 tomcat
    显示
    SEVERE: Could not contact localhost:8005. Tomcat may not be running.

    但我看 tomcat 又的确是运行的
    hcymk2
        16
    hcymk2  
       2016-02-17 16:02:11 +08:00
    不是的那个只是进程在。但是 Server 都没起起来, Connector 当然没有创建。
    所以是访问不了首页的。
    你远程 telnet vpsip:8080 有什么结果?
    magicsilence
        17
    magicsilence  
       2016-02-17 16:05:02 +08:00
    1. 杀进程, kill -9
    2. 改端口, 不只是 8080 ,还有其他的。
    3. 重启
    uxstone
        18
    uxstone  
    OP
       2016-02-17 16:05:13 +08:00
    @hcymk2
    telnet: could not resolve 104.236.174.176:8080/telnet: Name or service not known
    hcymk2
        19
    hcymk2  
       2016-02-17 16:10:27 +08:00
    错了 是 telnet 104.236.174.176 8080
    我可以打开了
    uxstone
        20
    uxstone  
    OP
       2016-02-17 16:18:09 +08:00
    @hcymk2

    刚才弄好了,不是端口问题,现在可以访问了
    是 jdk 的一个 bug

    找到 jdk1.x.x_xx/jre/lib/security/java.security 这个文件

    把 securerandom.source 设置成
    securerandom.source=file:/dev/./urandom

    具体的请参考这篇博客(非本人的博客,只是引用一下):
    http://blog.csdn.net/njchenyi/article/details/46641141



    从百度上搜到的,问题和我一样,想在 digitalocean 上 tomcat 失败,

    早上 google 到了 /dev/./urandom
    但全英文,没看懂. 就略过了 (英文还是很重要的)

    我怕有莫名其妙的的端口占用,都把系统重装了,
    被这问题倒腾了一天
    hcymk2
        21
    hcymk2  
       2016-02-17 16:26:25 +08:00
    uxstone
        22
    uxstone  
    OP
       2016-02-17 16:35:19 +08:00
    @hcymk2
    没看懂.
    uxstone
        23
    uxstone  
    OP
       2016-02-17 17:18:52 +08:00
    @hcymk2
    我仔细想了想,这也不算是 bug,

    我在 digitalocean 买的是最低配置的 vps,内存只有 512M
    而本机是 8G 内存,阿里云上是 1G 内存都能运行 tomcat

    所以唯一有差别的就是内存这块了

    这可能是 jvm 根据系统内存在某个方面的设置导致了我不能运行 tomcat
    ttw789
        24
    ttw789  
       2016-02-17 17:27:01 +08:00
    同样的题我遇,
    也是 digitalocean ;

    把程 kill 掉,
    以 root 用户 或 sudo 启 tomcat 就好了;

    --
    之前查了好久, 最後忘在哪看到的了,
    好像是 digitalocean 的什么限制之的原因
    uxstone
        25
    uxstone  
    OP
       2016-02-17 17:45:16 +08:00
    @ttw789
    不一样,这跟权限应该没什么关系.
    我又试了一下,以 root 用户启动 tomcat 还是会遇到上面的问题,
    启动能启动,
    但关闭时提示 SEVERE: Could not contact localhost:8005. Tomcat may not be running.

    因为本机和 VPS 都是 ubuntu 的,还特意把内核也设置一样的.
    都无法运行,把 jdk 里的文件一改就能运行了.

    多半还是因为内存太小了.
    ttw789
        26
    ttw789  
       2016-02-18 16:17:09 +08:00
    @uxstone 有可能吧,
    我操作系是 debian
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     910 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 20:59 PVG 04:59 LAX 13:59 JFK 16:59
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86