Je trouve que la pensée Sphinx est parfois erronée lorsque j'essaie d'exécuter ses tâches de râteau. Parfois, les tâches fonctionnent bien, et parfois, je reçois des erreurs comme celle ci-dessous.
Je gère les tâches en tant qu'utilisateur normal et non root. Ne pas utiliser sudo. P>
Dans l'exemple ci-dessous, SeechD est toujours en cours d'exécution après que la tâche du râteau échoue. P>
J'ai aussi vu des erreurs similaires avec Quelqu'un d'autre a-t-il vu cela? P> J'utilise Sphinx 0.9.9-Libération (R2117) P> J'utilise la pensée Sphinx 1.4. 4 Au lieu de la dernière version parce que je suis sur Rails 2.3.11. P> TS: reconstruire code >. P>
$ rake ts:stop RAILS_ENV=production
(in /var/www/blog_app/releases/20110425053509)
rake aborted!
execution expired
(See full trace by running task with --trace)
[ethan@apphost current]$ rake ts:stop RAILS_ENV=production --trace
(in /var/www/blog_app/releases/20110425053509)
** Invoke ts:stop (first_time)
** Invoke thinking_sphinx:stop (first_time)
** Invoke thinking_sphinx:app_env (first_time)
** Execute thinking_sphinx:app_env
** Invoke environment (first_time)
** Execute environment
** Execute thinking_sphinx:stop
rake aborted!
execution expired
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/1.8/timeout.rb:60
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/thinking-sphinx-1.4.4/lib/thinking_sphinx/tasks.rb:58
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `call'
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `execute'
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `each'
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `execute'
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:597:in `invoke_with_call_chain'
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/1.8/monitor.rb:242:in `synchronize'
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:590:in `invoke_with_call_chain'
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:607:in `invoke_prerequisites'
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:604:in `each'
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:604:in `invoke_prerequisites'
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:596:in `invoke_with_call_chain'
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/1.8/monitor.rb:242:in `synchronize'
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:590:in `invoke_with_call_chain'
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:583:in `invoke'
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2051:in `invoke_task'
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level'
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `each'
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level'
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2023:in `top_level'
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2001:in `run'
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:1998:in `run'
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/rake-0.8.7/bin/rake:31
/opt/ruby/bin/rake:19:in `load'
/opt/ruby/bin/rake:19
5 Réponses :
Je pense que cette erreur est causée lorsque vous avez déjà un démon de recherche.
ESSAYE P>
sudo kill -9 process_id
Je voudrais ajouter, le «9» ne devrait être inclus que après une tentative sans qu'elle n'a pas réussi. C'est juste une bonne domination en général.
Ce n'est pas une solution. Le but de rake TS: stop code> est i> pour arrêter
SearchD code>. En disant que "tu devrais tuer manuellement sur Searchd avant d'exécuter TS: STOP" n'a pas de sens.
Alex, Rake TS: STOP a déjà été essayé dans cet exemple, le problème ici peut être causé lorsque deux démons sont en cours d'exécution et que l'arrêt ne sait pas lequel s'arrête.
Ok, bon point. Mais dans l'exemple que vous montrez, il n'y a qu'un seul SearchD code> Daemon en cours d'exécution. J'ai le même problème que Ethan, mais dans mon cas, il n'y a aussi qu'un seul
SearchD code> Daemon exécutant et
TS: Stop code> ne peut pas l'arrêter. Bien sûr, je pourrais continuer à le tuer manuellement plutôt que d'utiliser
TS: arrêter code>, mais cela ne résolvait pas le problème réel.
Je fais habituellement dans les deux étapes suivantes: sudo killall -9 la recherche # va tuer Sphinx Rails_env = Production Rake Ts: Reconstruire
Je n'entraîne généralement que mes neuf quand les méchants sont autour.
J'ai essayé commandement 'PS | Grep SearchD 'pour obtenir un identifiant de processus, mais je ne l'ai pas eu. Ensuite, j'ai essayé de commander 'pgrep Searchd', cela me donne un identifiant de processus. J'ai tué ce processus et le commandement de Ran 'Rake Ts: Reconstruisant'. Ça a marché. p>
J'ai blogué sur toute l'expérience ici (Disclaimer: i 'm l'auteur). p>
en pensant_sphinx 1.4.4 Il y a un 5 secondes d'attente B> sur Si J'utilise la pensée_sphinx 1.3.18 dans l'intervalle. (Il n'y a pas de délai d'attente sur 1.3.18). p>
Aussi j'ai soumis un patch à Le référentiel GitHub et le délai d'attente seront configurables avec un Remarque: Rake TS: STOP CODE> P>
Rake TS: Stop Code> prend près ou plus de 5 secondes, Ruby organisera une exception. P>
sphinx.yml code> variable de configuration
stop_timeout code>. p>
Rake Ts: Reconstructrice Code> ==
Rake TS: STOP; Rake TS: index; Rake TS: Démarrez CODE> P>
STOP_TIMEOUT Variable ne fonctionne pas, car j'ai essayé de la définir comme 1 seconde et le râteau non abandonné.
@Mirza Oui, ce réglage semble ne plus fonctionner.
Toute autre solution, a essayé le délai d'attente: 1 aussi qui n'a pas fonctionné, je suis coincé. J'utilise la pensée-sphinx 2.1
Je suppose qu'après le déploiement de Capistrano, vous n'avez pas exécuté Essayez Ajouter pidfile à Il veillera à trouver PID de Searchd à tuer p> et ajouté le code suivant à pour générer un fichier de configuration SPHINX dans chaque dossier de version P> p> RAKE PENSION_SPHINX: Configurer CODE>
Il générerait un fichier de configuration Sphinx dans config / production.sphinx.conf code>
config / sphinx.yml code> p>
config / déploy.rb code> p>
Ce problème se produit si votre Searchd s'est écrasé ou que vous l'avez tué manuellement. Sous Windows, il ne remplace pas votre Supprimer votre J'espère que cette réponse aidera le Googler. P> Seechd.
Rake Ts: Redémarrez, Rake Ts: Reconstructure, ... Code>) Ne fonctionnera pas, Rake va toujours abandonner et vous obtenez l'erreur
RAKE ABORTED, ... SearchD déjà en cours d'exécution code> p>
chemin-chemin-to / Your-App / Journal / Seechtd.
développement code> ou
production code>, en fonction de votre étape actuelle. P>
Avez-vous exécuté
Rake TS: Stop Code> à partir d'un script de capistrano Déployer?