2013-11-09 133 views
4

我用最后一个小时没有问题卡桑德拉进行工作访问pidfile进程文件,但现在当我跑cqlsh它给了我这个我不能访问卡桑德拉:无法为卡桑德拉

Connection error: Could not connect to localhost:9160 

所以,我想这一点:

sudo service cassandra status 

它给了我这样的:

XSS =电子艺界-javaagent:/usr/share/cassandra/lib/jamm-0.2.5.jar -XX:+ UseThreadPrio rities - XX:ThreadPriorityPolicy = 42 -Xms1024m -Xmx1024M -Xmn200M -XX:+ HeapDumpOnOutOfMemoryError -Xss256k

  • 不能为卡桑德拉

我能做些什么来解决这个问题访问了pidfile?

由于提前,

+0

此外,请检查:http://askubuntu.com/questions/435749/cant-start-an-application-as-service-but-running-as-standalone-process-simply –

回答

1

您可能会忘记停止cassandra,然后再删除它。

您必须通过purge命令删除cassandra并重新安装。

而且检查你的Java版本与卡桑德拉前要求兼容。(如卡珊德拉2. *需要Java的Oracle 7.0)

3

PID文件位于/var/run/cassandra.pid。检查它是否存在,并且root用户对它有读/写权限。还要确保root拥有/var/run的rwx权限。

至于你的连接拒绝错误,这很可能是由cassandra不能运行引起的。检查/var/log/cassandra/*中的日志文件是否有例外。

+6

PID也可能在'/ var/run/cassandra/cassandra.pid' – ScottJShea

2

卡桑德拉必须有一个PID祭祀神灵。

我不得不欺骗cassandra进入实际重新启动。看起来,如果该pid不是真的在那里,重启将不会继续执行失败的“停止”操作。所以我用另一个有效的pid欺骗了pid文件。在我的情况下,我有一个tail -f/var/log/cassandra/*.log运行。

我发现PID与

ps aux | grep tail 

,并放置在PID为/var/run/cassandra.pid文件。这允许

service cassandra restart 

杀死进程并继续重新启动。

非常难看。 cassandra init脚本需要一些工作。

1

我有这个问题很多次,我总是解决它:

须藤乔敦 - R的卡桑德拉的/ var/lib中/卡桑德拉

须藤乔敦 - R的卡桑德拉的/ var /日志/卡桑德拉

这在Ubuntu服务器14.04和Debian Wheezy。

希望你觉得它有用。

-1

退房是否发生在/var/log/cassandra/(system.log的错误),如果你看到could not access pidfile for Cassandra

0

我遇到了同样的问题,必须有一些。我正在做一些测试,当我突然关闭系统并重新启动时,当我尝试检查Cassandra的状态时出现此错误。

pid文件的进程ID是关闭前运行的Cassandra的服务。 Cassandra未正常停止时会发生这种情况。 所以,我强制杀死僵尸进程,并再次启动cassandra。

kill -9 `ps -ef | grep cassandra | grep -v grep | awk {'print $2'}` 
service cassandra start 

希望它的帮助!