問題タブ [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.

0 投票する
1 に答える
945 参照

python - Beanstalkc タイムアウトの質問

URLのリストを解析する必要があるプログラムのキューイングプロセスに、Pythonでbeanstalkcを使用しています。したがって、任意の URL による膨大な時間の消費を避けるために、Beanstalk でタイムアウトを使用しています。しかし、それを使用した後でも、私のプロセスは制限内でタイムアウトせず、いくつかの URL の解析に多くの時間を費やしています。次のコードを使用しています。

0 投票する
1 に答える
895 参照

mysql - Beanstalk 対 DB

Beanstalk キューからジョブを取り出して DB に書き込むだけの db logging ruby​​ gem を作成しています。

これは、サーバー A の 1 つのプロセスが (ログに記録したい) ジョブをサーバー B の Beanstalk キューに入れ、サーバー B のログ プロセスがそれを取り出して、サーバー B の mysql DB に書き込むというものです。

これが価値があるかどうか知りたいですか?DB に書き込むよりも速く Beanstalk キューにジョブを入れています。または、ログ プロセスを使用する代わりに、DB にログを記録したいプロセスが直接 DB に書き込むことができます。

Beanstalk サーバーと DB の両方が別のサーバー上にあることに注意してください。

Beanstalk は内部的にサーバー A からサーバー B へのソケット呼び出しを行います。mysql も同じことを行う必要があると思いますか?

したがって、別のサーバーへの mysql は、Beanstalk キューに入れるよりも遅くなります。

0 投票する
1 に答える
177 参照

ruby - TTR 期限切れのジョブをキューに返したワーカーを検出する

beanstalk-client-ruby を使用して、beanstalkd キューで複数のワーカーがリクエストを処理しています。

テスト目的で、ワーカーはキューからジョブを取得した後、無作為に無限ループに飛び込みます。

Beanstalk は、ジョブが予約されている時間が長すぎることに気づき、他のワーカーが処理できるようにキューに戻します。

誤動作しているワーカーを殺すことができるように、これが発生したことをどのように検出できますか?

タイムアウトが発生したことを検出できるようです:

今、どうすれば次のようなことができますか:

0 投票する
1 に答える
856 参照

php - 複数の Web サーバーで Beanstalk キューにアクセスする方法

Beanstalk を 1 つのサーバーにインストールしました。Beanstalk を使用したい実動サーバーが複数あります。現在、beanstalkd にアクセスできる Web サーバーは 1 つだけです。

すべてのサーバーで beanstalkd にアクセスできるように、beanstalkd を構成または使用する方法。

あなたの助けに感謝。

0 投票する
1 に答える
7913 参照

php - PHP で Beanstalkd をセットアップする方法

最近、PHP での Beanstalkd の使用について調査しています。かなりのことを学びましたが、サーバーのセットアップなどについていくつか質問があります。

これが私がそれをどのように機能させているかです:

  1. Beanstalkd と依存関係 (libevent など) を Ubuntu サーバーにインストールします。次に、Beanstalkd デーモンを開始します (これは基本的に常に実行する必要があります)。
  2. 私の Web サイトのどこか (ユーザーが何らかのアクションを実行したときなど) のタスクは、Beanstalkd キュー内のさまざまなチューブに追加されます。
  3. 基本的に PHP スクリプトを実行するデーモンとして実行される bash スクリプト (次のようなもの) があります。

    /li>

4) ワーカー スクリプトには、キューに入れられたタスクを実行するための次のようなものがあります。

ここで、上記の設定に基づいた私の質問を次に示します (間違っている場合は訂正します)。

  1. RSS フィードをデータベースなどにインポートするタスクがあるとします。一度に 10 人のユーザーがこれを行うと、全員が「テスト」チューブのキューに入れられます。ただし、一度に 1 つずつしか実行されません。10 個の異なるチューブをすべて同時に実行した方がよいでしょうか?

  2. さらにチューブが必要な場合、10 個のワーカー スクリプトが必要になるということですか? 各チューブに 1 つずつ、watch() 関数の文字列リテラルを除いて、基本的に同じコードですべて同時に実行されます。

  3. そのスクリプトをデーモンとして実行すると、どのように機能しますか? worker.php スクリプトを常に実行しますか? そのスクリプトは、理論的にはキューが空になるまでループするので、一度だけ開始するべきではありませんか? デーモンは worker.php を実行する頻度をどのように決定しますか? 設定だけですか?

ありがとう!

0 投票する
2 に答える
1848 参照

beanstalkd - PHP-FPMを使用してキューコンシューマーを管理しても大丈夫ですか?

Beanstalkdキューがあり、10分ごとに多くのタスクがいっぱいになり、各タスクをできるだけ早く処理することが最優先事項です。サードパーティのサービスへの呼び出しがあり、時々タイムアウトする傾向があるため、タスクが完了するまでに数ミリ秒以上かかる場合があります。

したがって、PHPにはマルチスレッドがないため、1つのオプションは、タスクを予約しようとするアイドル状態のワーカーを多数作成することですが、RAMが多すぎる可能性があり、これらのボックスでは使用できない可能性があります。

PHP-FPMを使用してワーカーの数を調整し、RAMを節約することをお勧めしますか?本番環境に対応していますか?より良い解決策はありますか?

ありがとう

0 投票する
3 に答える
5315 参照

php - Beanstalkd-予約されているが完了していないジョブはどうなりますか?

Beanstalkdから読み取り、ジョブを処理するPHPスクリプトを作成しました。そこに問題はありません。

私がしなければならない最後のことは、それのためのinitスクリプトを書くことです。そうすれば、それはサービスとして実行できます。

しかし、これは今私に別の質問を提起しました。サービスを停止しようとするとき、それを行うための1つの明白な方法は、プロセスを強制終了することです。ただし、これを行うと、PHPスクリプトの処理が途中で行われた場合、ジョブはどうなりますか?したがって、ジョブは予約されましたが、スクリプトが成功または失敗したことはありません(それぞれ削除または埋め込み)、どうなりますか?

私の推測では、TTRは期限切れになり、その後、準備完了キューに戻されますか?

そしてボーナス2番目の質問、PHPサービスの停止をより適切に管理する方法についてのヒントはありますか?

0 投票する
1 に答える
627 参照

java - Java ベースのタスク処理サーバー

Beanstalk や SQS などからジョブ/メッセージを効率的に取り出して処理できる、小型で軽量なサーバーの基本フレームワークを探しています。

Octobot (https://github.com/cscotta/octobot) は良さそうですが、最近誰も貢献していないようです。他の選択肢はありますか?

0 投票する
1 に答える
863 参照

php - 特定の時間に複数の集中的なジョブを実行するための最適なソリューション

ユーザーが定義した時間に条件付きでユーザーのメールボックスにメッセージを挿入するために IMAP を使用する Web アプリがあります。

これらの「ジョブ」のそれぞれは、ジョブを実行する必要があるときのタイムスタンプ (数か月先の可能性があります) とともに MySQL DB に保存されます。ユーザーはいつでもジョブをキャンセルできます。

問題は、IMAP 接続を確立するプロセスが遅いことです。メッセージを挿入する前に、受信トレイ (または同様のもの) に誰かからの返信があるかどうかを条件付きで確認する必要があり、各ジョブにかなりの処理オーバーヘッドが追加されます。

現在、1 分ごとに cron スクリプトを実行するシステムがあり、次の X 分で配信する必要があるすべてのジョブを DB から取得します。次に、それらを Z ジョブのバッチに分割し、バッチごとに非同期 POST 要求を実行して、それらの Z ジョブのすべてのデータを同じサーバーに返します (「偽の」マルチスレッドを実現するため)。次にサーバーは、HTTP 経由で入ってくる Z ジョブの各バッチを処理します。

pnctl_fork のようなものではなく、マルチスレッドに非同期 HTTP POST を使用する理由は、他のサーバーを追加して、代わりにそれらにデータを POST させ、現在のサーバーではなくジョブを実行させることができるようにするためです。

だから私の質問は - これを行うためのより良い方法はありますか?

beanstalkdのようなワーク キューが利用できることはありがたいのですが、特定の時間にジョブを実行しなければならないモデルに適合しますか?

また、とにかく DB にジョブを保持する必要があるため (ジョブを管理するための UI をユーザーに提供する必要があるため)、そこにワーク キューを追加すると、実際にはオーバーヘッドが削減されるのではなく、オーバーヘッドが増加しますか?

私たちが必要とするものを達成するためのより良い方法があると確信しています - どんな提案も大歓迎です!

これらすべてに PHP を使用しているため、PHP ベース/互換性のあるソリューションが本当に求めているものです。

0 投票する
0 に答える
242 参照

php - Zend_Queue_Adapter_Beanstalkdはありますか?

独自のアダプタを作成する前に、beanstalkdをサポートする既存のZend_Queueアダプタを探しています。

Zend FrameworkのBeanstalkd用のオープンソースアダプタ/実装はどこかにありますか?

これまでのところ、Web上で何かを見つけることができませんでした。

読んだり答えたりしてくれたみんなに感謝します!