問題タブ [beanstalkd]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ubuntu - Beanstalk と LAN 上のコンピュータ間の時刻同期
簡単に言えば、ツールがMySQL DBサーバーに過度にヒットするという多くの問題がありました。そこで、Beanstalk を使用して、DB で実行したいことを常時実行中の DB 接続のセットに伝える一連のツール (PHP および Ruby) を作成しました。受信ジョブと応答の両方に Beanstalk チューブが使用されます。
ただし、DB リクエストのジョブ データに ExpireTime を追加しました。基本的に、DB リクエスト ジョブがかなり短い時間枠内で実行されない場合、リクエストはまったく実行されません。とにかく、要求しているタスクはそれ自体でタイムアウトするため、短い時間枠を設けることで、DB 実行スクリプトが使用されない一連の DB 要求を実行しないようにします。
すべてが 1 台のマシン上にある限り、これはすべて問題なく機能します。今、私はそれを 2 台目のマシンに拡張していますが、すぐにリクエストが期限切れと見なされる問題に遭遇しました。
タスクの現在の有効期限は 10 秒です。これは、完了しようとしている単純な DB 要求に対しては、すでにかなり長い時間です。10 秒を十分な数に増やすと、DB リクエストは問題なく迅速に実行されます。
したがって、この問題は、あるコンピューターが 12:00:XX であると考え、別のコンピューターが 12:00:YY であり、XX と YY の差が少なくとも 8 秒または 9 秒であると考えていることに要約されると思います。
LAN で Ubuntu 12.04 デスクトップとサーバーを使用しています。Ruby (1.8.7) と PHP (5.3.10-1ubuntu3.4) の両方で、この Beanstalk キューを一種の DB 接続プールとして、またプロジェクト/サイト関連のタスクを分散環境で実行するためのタスク キューとして使用するプログラムを作成します。方法。PHP には pheanstalk を使用し、Ruby には beankstalk-client gem を使用します。
私が考えたハックは、DB 要求を実行するコンピューターが 1 秒に 1 回、現在の時刻を出す豆の木管を作成することです。次に、リクエストをキューに入れている分散コンピューターは、最新のタイムスタンプを取得するために、そのジョブを取得する (削除するのではなく、解放する) 必要があります。これは大雑把であり、(私が信じている) 衝突につながると思います。つまり、現在の時間のジョブ データを取得するのを待っている要求です。これに追加するコンピューターの数を増やすと。
このフォーラムの誰かがこれを行うためのより良い方法を持っていることを願っています.
python - 現在のPythonBeanstalkcクライアントの実装は非ブロッキングですか?
延期されたbeanstalkdに書き込む必要があるツイストフレームワークを使用してソケットAPIを作成していますが、現在のPython Beanstalkcクライアント実装は非ブロッキングですか?
私は運がなくてもこの問題に関する答えをStackoverflowで広範囲に検索しましたが、助けていただければ幸いです。前もって感謝します
php - NodeJS setInterval パフォーマンスが悪い?
私はnodejsで作成されたbeanstalkappワーカーを持っています。それは、サイトのすべてのことを行うPHPアプリケーションがあり、エラー、問題、通知、またはそれがbeanstalkappに追加されるものがある場合です。その後、nodejs はほぼ常に beanstalkapp をチェックしてメッセージを処理し、それらに対して何らかの処理を実行する必要があります (誰かにメールを送信する、ログに追加する、どこかに投稿する)。
私の質問は、この悪いパフォーマンスは賢明ですか、それともこれを行うためのより良い方法はありますか? setInterval はプロセスを終了させないため、悪いと思いますか?
ruby - 神が開始するプロセスが多すぎる
私は、2 つのストーカー プロセスを監視することになっている神のスクリプトを持っています。問題は、24 時間後に開始されるプロセスが多すぎることです。
これは神のスクリプトです。
ps aux | grep stalk
以下を返します。
これが/usr/bin/bbundle
スクリプトです。
実行
sudo god stop app-scripts
してもプロセスは強制終了されません。w.uid = "webmaster"
神スクリプトに追加しようとしましたが、問題は残ります。神版
0.12.1
、ルビー版1.9.3p286
、ストーカー版を運用してい0.9.0
ます。
私は何を間違っていますか?
beanstalkd - 1 つのジョブを処理するための複数の beanstalkd クライアント
複数のクライアントで1つのジョブを処理するbeanstalkdの可能性はありますか? この場合、どのようにジョブを削除する必要がありますか?
あるサーバーから10台の別のサーバーにメッセージを送信したいので、すべてのサーバーでジョブが完了します-サーバー上のローカルデータの更新に関するものです。
この種のタスクには別の MQ システムを選択する必要がありますか?
ruby-on-rails - Beanstalkd サーバーがジョブを実行していません
Beanstalk サーバーを起動しようとしていて、それをテストするために 1 つのジョブを作成しましたが、代わりに何も得られませんでした。これが私のコードです:
Rubyとbeanstalkdを接続するためにstalker gemを使用しています。私は何が間違っているのですか?
ruby - Stalker/beanstalkプロセスジョブを非同期的に処理します
わかりました。StalkerとBeanstalkdでテストを行っています。私の目的は、500kbの投稿リクエストをオフロードして、それらを非同期でキューに入れて処理することです。
これまでのところ、私のテストでは、この非常に単純な例があります。
キューに追加するためのこのファイル
だから私は1つのターミナルで実行します
$ stalk worker.rb
1つの仕事をしている:[こんにちは]
次に、ストーカーファイルを実行します
$ ruby stalker.rb
ストーカーはほぼ瞬時に実行されるため、ブロックされることはありません。
ただし、ワーカーの実行には約10秒かかります。本当に、これらの10個のジョブを並行して実行したいので、これを1秒にはるかに近づけたいと思います。
これを行うための次の最善のステップに関する推奨事項はありますか?
更新:異なる端末から複数のワーカーを実行でき、キューをはるかに高速に処理できることに気付きました。たとえば、2人のワーカーが約半分の時間で処理を実行します。
beanstalkd - キューが非常に大きく、処理に時間がかかっている場合、準備完了キュー内の beanstalkd ジョブを先頭に移動する方法は?
beanstalkd キューに関して簡単な質問がありました。
たとえば、Beanstalk キューに 500,000 の準備完了ジョブがあり、処理されるのを待っていると同時に、さらに多くのジョブがこのキューに追加されているとします。これらのジョブはすべて同じ優先度です。
ジョブを準備完了キューに移動して、そのキュー内の他のすべてのジョブの前に処理できるようにすることはできますか?
豆の木を使い始めたばかりで、豆の木でこれができるかどうか疑問に思っていましたか?
私はLinux環境にいます。
その特定のジョブを削除して、最初に処理できる優先順位で再挿入できると思いますが、それを可能にするコマンドがない限り、まだそれを避けたいと思います。
さらに情報が必要な場合はお知らせください。ご協力いただきありがとうございます。:)
ruby - Beanstalkdのストーカーvs.ビーンイーター
現在、RailsアプリにStalkerを使用しています。しかし、Stalkerのタイムアウトエラー/2分の制限に遭遇しました。この件について別の質問を見たところ、ビーンイーターは実装しているように見えますが、Stalkerはbeanstalkdのtouchメソッドを実装していないと誰かが答えました。
それで、誰かがビーンイーターとストーカーを試しましたか?意見?機能と比較して、どちらが使いやすいですか?私はおそらく私のタスクのいくつかでタイムアウトエラーに頻繁に遭遇するでしょう、そして私がちょうど増やすべきか:ttr
、それともビーニーターに切り替えるべきか疑問に思います。
ruby-on-rails - Beanstalk に Backburner を使用する場合、開発中にワーカーを開始するにはどうすればよいですか?
私はBackburner チュートリアルを読んだことがありますが、ワーカーが正確に何であるかを詳しく説明しており、本番環境には神が使用されているように見えますが、他のすべての例では Backburner.work が使用されているだけで、非同期に処理されません。 . そのため、開発モードで WEBrick を使用しているときに、キューでジョブを処理する方法がわかりません。