今天需要再一台服务器上开两个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就木有关系啦!