web-dev-qa-db-fra.com

Impossible de démarrer une application en tant que service, mais l'exécution en tant que processus autonome fonctionne simplement

Pour un service bien qu'un fichier pid existe, mais quand même en essayant de démarrer le service, il échoue en disant:

$ Sudo service cassandra start
* could not access pidfile for Cassandra

J'ai vérifié les autorisations de dossier sous /var/run (dont le propriétaire est root) et le sous-dossier cassandra appartient à l'utilisateur cassandra, mais le service ne peut toujours pas accéder au fichier pid même si j'ai vérifié. ce fichier pid existe. (Pid est également alloué). Alors pourquoi dit-il qu'il ne peut pas accéder à pidfile?

Et exécuter cassandra en tant que processus autonome fonctionne, mais pas simplement en utilisant service cassandra start

$ Sudo ls -l /var/run/cassandra 
total 4 
-rw-r--r-- 1 cassandra cassandra 4 Mar 18 07:33 cassandra.pid
$ Sudo su
# ls -ld /var/run/cassandra 
dr--r----- 2 cassandra cassandra 60 Mar 18 07:38 /var/run/cassandra

Comment faire pour que cela fonctionne avec Sudo service cassandra start?

4
Rajat Gupta

Vous devez supprimer le dossier /var/run/cassandra, ce qui entraîne des autorisations erronées:

Sudo rm -rf /var/run/cassandra

Ou vous pouvez corriger les autorisations manuellement:

Sudo chmod 750 /var/run/cassandra

Puis lancez Cassandra en tant que service:

Sudo service cassandra start

Quelques explications

Vous trouverez des instructions sur les autorisations de fichiers ici .

  • Il est prudent de supprimer ce dossier car il recrée avec les autorisations et le contenu appropriés. Mais ne le supprimez pas une fois que cela fonctionne correctement. Cela pourrait entraîner une perte de données ou un comportement incorrect.

  • chmod 750 décrypte en tant qu'autorisations rwxr-x ---. Il permet une lecture-écriture-exécution pour l'utilisateur, une lecture-exécution pour le groupe et rien pour les autres. Pour Cassandra, il suffit de définir des autorisations de cette manière.

5
Danatela

Cette solution peut être réalisée de la manière suivante:

$ Sudo vim /etc/init.d/cassandra;

Trouvez la ligne suivante:

CMD_PATT="cassandra.+CassandraDaemon"

Remplacer par:

CMD_PATT="cassandra"

Sauvegardez et arrêtez et recommencez. Le service obtiendra le statut correctement; Testé sur cassandra 2.3

Source ici: https://www.digitalocean.com/community/tutorials/how-to-install-cassandra-and-run-a-single-node-cluster-on-ubuntu-14-04 = (voir l'ETAPE 3)

2
Joepreludian

Ma solution pour la migration de Cassandra 2.0.9 à 2.1.4

Après la mise à niveau avec

Sudo apt-get install dsc21

Aller au fichier journal:

tail -f /var/log/cassandra/system.log

Vous pouvez voir que vous devez modifier votre fichier de configuration cassandra.

  1. Arrêtez Cassandra

    Sudo /etc/init.d/cassandra stop
    
  2. Allez dans le fichier de configuration Cassandra

    Sudo vi /etc/cassandra/cassandra.yaml
    
  3. Commentez ces 5 lignes ou supprimez-les:

    • multithreaded_compaction: false
    • preheat_kernel_page_cache: false
    • memtable_flush_queue_size: 4
    • in_memory_compaction_limit_in_mb: 64
    • compaction_preheat_key_cache: true
  4. Démarrer Cassandra

    Sudo /etc/init.d/cassandra start
    
  5. Vérifier

    nodetool status
    
0
Fred