生产环境cassandra问题二则
环境
操作系统:CentOS Linux release 7.3.1611 (Core)
jdk:java-1.8.0-openjdk-1.8.0.121
cassandra:3.11.2
1.使用systemctl启动无法生成pid
问题描述
root用户使用systemctl语句启动cassandra时,虽然cassandra正常启动了,但是未生产pid文件。
问题解决
经检查,发现是server文件的ExecStart脚本路径错误,导致pid文件无法生成。
调整:
vim /usr/lib/systemd/system/cassandra.service
ExecStart=/opt/database/apache-cassandra/bin/cassandra -p /opt/database/apache-cassandra/cassandra.pid
2.jps无法找到cassandra
问题描述
使用jps无法检测到cassandra进程:
[root@c1-redis01 ~]# jps
15285 Jps
1500 cassandra_exporter.jar
问题解决
百度后了解到cassandra的jvm配置有自选项PerfDisableSharedMem,如果启动,会无法使用jps,经抉择后决定关闭此功能:
调整
vim /opt/database/apache-cassandra-3.11.2/conf/jvm.options
-XX:-PerfDisableSharedMem
重启cassandra后检查:
[root@c1-redis01 ~]# jps
15285 Jps
50085 CassandraDaemon
1500 cassandra_exporter.jar
已可看到cassandra进程
参数说明:
PerfDisableSharedMem
启用标准内存使用。JVM控制分为标准或共享内存,区别在于一个是在JVM内存中,一个是生成/tmp/hsperfdata_{userid}/{pid}文件,存储统计数据,通过mmap映射到内存中,别的进程可以通过文件访问内容。通过这个参数,可以禁止JVM写在文件中写统计数据,代价就是jps、jstat这些命令用不了了,只能通过jmx获取数据。但是在问题排查是,jps、jstat这些小工具是很好用的,比jmx这种很重的东西好用很多,所以需要自己取舍。
来源:CSDN
作者:aladdin_sun
链接:https://blog.csdn.net/sunbocong/article/details/103616234