今天需要再一台服务器上开两个cassandra,更改了storage-conf.xml中的port后,依然出现“java.net.BindException: Address already in use”的错误,感觉非常诡异……
经过检查发现,cassandra启动时候默认启动了8080端口用于jmx(Java性能检测),如果我们不需要的话,去掉就可以了。
配置在bin/cassandra.in.sh中,如下去掉即可:
cassandra_home=`dirname $0`/.. # The directory where Cassandra's configs live (required) CASSANDRA_CONF=$cassandra_home/conf # This can be the path to a jar file, or a directory containing the # compiled classes. NOTE: This isn't needed by the startup script, # it's just used here in constructing the classpath. cassandra_bin=$cassandra_home/build/classes #cassandra_bin=$cassandra_home/build/cassandra.jar # JAVA_HOME can optionally be set here #JAVA_HOME=/usr/local/jdk6 # The java classpath (required) CLASSPATH=$CASSANDRA_CONF:$cassandra_bin for jar in $cassandra_home/lib/*.jar; do CLASSPATH=$CLASSPATH:$jar done # Arguments to pass to the JVM JVM_OPTS=" \ -ea \ -Xms1G \ -Xmx1G \ -XX:+UseParNewGC \ -XX:+UseConcMarkSweepGC \ -XX:+CMSParallelRemarkEnabled \ -XX:SurvivorRatio=8 \ -XX:MaxTenuringThreshold=1 \ -XX:CMSInitiatingOccupancyFraction=75 \ -XX:+UseCMSInitiatingOccupancyOnly \ -XX:+HeapDumpOnOutOfMemoryError" #-Dcom.sun.management.jmxremote.port=8080 \ #-Dcom.sun.management.jmxremote.ssl=false \ #-Dcom.sun.management.jmxremote.authenticate=false" \
然后和8080就木有关系啦!