【问题标题】:I can't open cassandra我无法打开卡桑德拉
【发布时间】:2018-01-17 01:39:26
【问题描述】:

Cassandra一直是正常的,但是今天我去cassandra的bin文件夹运行./cassandra,没有任何反应,只是进入一个新的命令行,没有那个打开过程。我也无法打开 cqlsh。你能帮我解决这个问题吗?

system.log 显示唯一的错误:

ERROR [main] 2017-08-07 10:33:59,154 CassandraDaemon.java:655 - Port already in use: 7199; nested exception is:
java.net.BindException: Address already in use (Bind failed) 
java.net.BindException: Address already in use (Bind failed)           
at java.net.PlainSocketImpl.socketBind(Native Method) ~[na:1.8.0_141]           
at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:387) ~[na:1.8.0_141]
at java.net.ServerSocket.bind(ServerSocket.java:375) ~[na:1.8.0_141]           
at java.net.ServerSocket.<init>(ServerSocket.java:237) ~[na:1.8.0_141]
at javax.net.DefaultServerSocketFactory.createServerSocket(ServerSocketFactory.java:231) ~[na:1.8.0_141]
at org.apache.cassandra.utils.RMIServerSocketFactoryImpl.createServerSocket(RMIServerSocketFactoryImpl.java:33) ~[apache-cassandra-2.2.10.jar:2.2.10]           
at sun.rmi.transport.tcp.TCPEndpoint.newServerSocket(TCPEndpoint.java:666) ~[na:1.8.0_141]     
at sun.rmi.transport.tcp.TCPTransport.listen(TCPTransport.java:330) ~[na:1.8.0_141]       
at sun.rmi.transport.tcp.TCPTransport.exportObject(TCPTransport.java:249) ~[na:1.8.0_141]       
at sun.rmi.transport.tcp.TCPEndpoint.exportObject(TCPEndpoint.java:411) ~[na:1.8.0_141]       
at sun.rmi.transport.LiveRef.exportObject(LiveRef.java:147) ~[na:1.8.0_141]       
at sun.rmi.server.UnicastServerRef.exportObject(UnicastServerRef.java:236) ~[na:1.8.0_141]       
at sun.rmi.registry.RegistryImpl.setup(RegistryImpl.java:213) ~[na:1.8.0_141]       
at sun.rmi.registry.RegistryImpl.<init>(RegistryImpl.java:173) ~[na:1.8.0_141]       
at sun.rmi.registry.RegistryImpl.<init>(RegistryImpl.java:144) ~[na:1.8.0_141]       
at java.rmi.registry.LocateRegistry.createRegistry(LocateRegistry.java:239) ~[na:1.8.0_141]       
at org.apache.cassandra.service.CassandraDaemon.maybeInitJmx(CassandraDaemon.java:119) [apache-cassandra-2.2.10.jar:2.2.10]       
at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:188) [apache-cassandra-2.2.10.jar:2.2.10]       
at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:533) [apache-cassandra-2.2.10.jar:2.2.10]       
at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:642) [apache-cassandra-2.2.10.jar:2.2.10] 

【问题讨论】:

  • 检查 system.log 是否有任何错误
  • 我在问题中添加了错误,但我认为可能是那个问题

标签: cassandra cqlsh


【解决方案1】:

似乎端口已在使用中。 您可以按如下方式终止进程

sudo fuser -n tcp 7199

它将显示在该端口上运行的所有进程 ID。 您可以使用以下命令杀死。

sudo kill -9 Pid

现在启动 Cassandra。它将开始。

【讨论】:

  • 找到类似 ps ax|grep cassandra 并杀死该进程 ID。
  • root@srv-machine-learning01:~# ps ax|grep cassandra 845 pts/2 S+ 0:00 grep cassandra root@srv-machine-learning01:~# kill -9 845 -bash: kill (845) - 没有这样的进程
  • 能否提供更多信息,例如您使用的操作系统?
  • 当然,3.16.0-4-amd64 #1 SMP Debian 3.16.43-2+deb8u2 (2017-06-26) x86_64 GNU/Linux
  • gist.github.com/marcosvidolin/df5debc68e45314780a8 这可能会帮助您杀死端口上的进程
【解决方案2】:

如果某些东西合法地使用了默认的 JMX 端口 (7199),您可以很容易地更改 Cassandra 用于 JMX 的端口。在cassandra-env.sh 文件中查找JMX_PORT 行,并将其更改为您知道未使用的端口:

JMX_PORT="7199"

到:

JMX_PORT="9455"

消除那个端口冲突,然后看看 Cassandra 是否会启动。

【讨论】:

    猜你喜欢
    • 2020-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-19
    • 2015-03-04
    • 1970-01-01
    相关资源
    最近更新 更多