問題タブ [worker]
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.
heroku - Herokuで使用しているワーカーdynoの数を確認するにはどうすればよいですか?
HireFireAppを使用して、HerokuでWebとワーカーのdynoを自動スケーリングしています。ただし、アプリケーションでResqueアプリに移動すると、
「働く46人の労働者のうちの0人」
これは、46人のワーカーダイノを使用していることを意味しますか?
アップデート:
heroku psの実行は次のことを示しています:
multithreading - Windows (ネイティブ) でワーカー スレッドを制御するためのベスト プラクティスは?
win32 API のみを使用して同じスレッド プロシージャを実行する複数のワーカー スレッドを制御するベスト プラクティスは何ですか?
私は多くの代替案を試しましたが、うまくいきません。私の現在のコードは次のようになります。
基本的に、イベントを使用して複数の作業スレッドを開始していますが、もちろんこれは期待どおりに機能しません。メイン スレッドが SetEvent() と ResetEvent() の間で中断された場合、ワーカー スレッドは while ループでスピンします。一方、自動リセット イベント オブジェクトを使用すると、待機中のスレッドが 1 つだけ解放されます。
また、すべてのスレッドが終了するまでメインスレッドが待機する必要があります。いくつかの異なるアプローチにうんざりしましたが、それを機能させることができませんでした。マルチスレッド プログラミングの難しさを認識し始めたところだと思います。
編集:文法
ruby-on-rails - レールで自動起動および自動終了デーモンを実装する方法
Railsコミュニティが私の問題に対して作成した可能な解決策の数に少し圧倒されています. ですから、おそらく誰でも、それを最もよく解決する方法を見つけるのを手伝ってくれるでしょう.
私がやりたいのは、一種の「ドロップボックス」のように動作する Rails アプリを作成することです。一方では、Web サーバーにファイルをアップロードおよびダウンロードできる Web インターフェイスである必要があります。これは、私のデータベースやその他すべてと相互作用します。一方、そのサーバーへの SSH アクセスがあり、そこにファイルを手動で配置できます。ここで、このファイル システム アクションが、Rails アプリをトリガーして、Web インターフェース経由でファイルを作成した場合に実行する処理を実行するようにします。
それで、どういうわけかデーモンを書きますよね?
daemons.rubyforge.org/
github.com/mirasrael/daemons-rails
github.com/costan/daemonz
github.com/kennethkalmer/daemon-kitなど、多くのソリューションがあります。
私が望んでいるもう 1 つの機能は、Rails アプリが自動的に起動し、Rails アプリの resp を開始または終了するときにデーモンを停止することです。したがって、「daemonz」が最適なソリューションのようです。しかし、さらにグーグルで検索すると、
github.com/FooBarWidget/daemon_controller/が見つかりました。
これは、より多くの「ハイテク」のようで、パッセンジャーで展開するときに既に使用されています。しかし、Rails を終了するときにデーモンが強制終了されるかどうかはわかりません。そうではないので、アプリにこれを実装する方法を考えています。
ファイルシステムの変更に対応する「もの」を実装する方法は、私にとっては簡単に思えます。私は
github.com/guard/listen/を使用します
(代替案は次のとおりです: github.com/ttilley/fssm )
しかし、このプロトコルに実際に直面したのはこれが初めてであり、これにより、通信できるサーバー、または処理する必要のあるオブジェクトの種類が生成されます。
最後に実装したいのは、一種のワーカー キューです。これにより、ファイル システムの変更のリッスンが Rails アプリのアクションから分離されます。しかし、非常に多くの解決策があるため、1 つを選択するのに完全に圧倒されます:
github.com/tobi/delayed_job/
github.com/defunkt/resque
http://backgroundrb.rubyforge.org/
そして、 http:
//godrb.com/
とは何
ですか? それはどのように私を助けることができますか?
誰かがこれを解決する方法を示唆していますか? どうもありがとう!
1月
PS すべての github プロジェクトへのリンクを投稿したいのですが、残念ながら十分な「評判」がありません。
ruby-on-rails - Rails Resqueはワーカー制限を変更しますか?
私はいくつかのResqueワーカーと一緒にRailsアプリを持っています。同時に実行できるワーカーは2人に制限されているようです(アプリは本番環境でApacheを使用してEC2で実行されます)。その制限を引き上げる方法はありますか?
編集:
redis.confにmaxclients0があります
rakeを介して10人のワーカーを開始できますが、実際にキューに入れられると、ブラウザーに「ERR最大クライアント数に達しました」と表示されます。
編集:更新された間違い(元のファイルでは正しかった)
編集:実際にはconfig / initializers / Resque.rbがredis-to-go(アプリの初期の頃からの基本でした)を指していて、それを削除すると、config / resque.yml(localhostを使用)を指してすべてが正常になり、私は好きなだけ多くの労働者を始めることができます。
php - ApacheのワーカーMPMおよびmod_phpで接続が閉じられない
まず、これが疑わしい設定であることはわかっていますが、fastcgiまたはfcgidのパフォーマンスにより、試してみる必要があります。問題は、接続が閉じられないために負荷テストが完了しないことです。40の同時接続のみにプッシュすると、状況は南に進みます。接続は数分間確立された状態になります。
次に、数分後、それらはCLOSE_WAITとESTABLISHEDの組み合わせに分割されます。
そしてさらに10分後、これは変わっていません。これらは、クライアントからWebサーバー、およびWebサーバーからmysqlサーバーの組み合わせです。mysql接続を確立しないphpページに対してテストすると、すべてが正常に機能します。
PHPをカスタムコンパイルし(以下の構成)、apt-get(Ubuntu 10.04)を介してapache-mpm-workerをインストールしました。mysql、mysqli、およびpdoモジュール用にmsyql_configとmysqlndの両方を使用してPHPをコンパイルしてみました。これは単に、醜い頭を育てている非スレッドセーフなライブラリでしょうか?
./configure --prefix=/usr/local --with-apxs2=/usr/bin/apxs2 --disable-cgi --with-layout=GNU --with-config-file-path=/etc/php5/apache2 --with-config-file-scan-dir=/etc/php5/apache2/conf.d --disable-ipv6 --without-kerberos --with-pcre-regex=/usr --with-zlib --with-zlib-dir=/usr --enable-bcmath --with-bz2 --enable-calendar --enable-ctype --with-curl=shared,/usr --without-qdbm --without-gdbm --with-db4 --with-libxml-dir=/usr --enable-exif --disable-ftp --with-gd=shared,/usr --enable-gd-native-ttf --with-gmp=shared,/usr --with-jpeg-dir=shared,/usr --with-xpm-dir=shared,/usr/X11R6 --with-png-dir=shared,/usr --with-freetype-dir=shared,/usr --with-gettext --with-mhash=shared,/usr --with-ldap=shared,/usr --with-ldap-sasl=/usr --with-mcrypt=shared,/usr --enable-mbstring --without-msql --without-mssql --with-pspell=shared,/usr --without-mm --disable-shmop --enable-soap --enable-sockets --with-regex=php --disable-sysvshm --disable-wddx --with-xmlrpc=shared --with-iconv --with-xsl=shared,/usr --enable-zip --with-pear=/usr/share/php --with-tsrm-pthreads --enable-maintainer-zts --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=myslqnd --with-libdir=lib64
c# - ワーカーを自動的にスケールアップ/スケールダウンする方法は?
ワーカータスクを自動スケーリングする方法は?
処理するアイテムのスループットに対応するためにワーカータスクの数を自動的にスケーリングしたいアプリケーションがあります(明らかにワーカー数の上限があります)。
処理するすべてのアイテムは単一のポイントを経由してルーティングされ、そこからワーカータスクに分散されます(現在、キューが最も短いワーカーを見つけて、アイテムをキューに入れます)。
アイテムを処理するために何人のワーカーをスピンアップする必要があるかについて、インテリジェントな決定を行うために使用するのに適したパターンまたは手法は何でしょうか。このロジックには、より少ないワーカーでアイテムをタイムリーに処理できる場合に、ワーカーをシャットダウンすることを含める必要があります。
最終的に他のリソースがボトルネックになるため、ワーカーを追加しても無限に拡張できるわけではなく、ある時点でワーカーを追加すると、助け以上に害が生じることを理解しています。これを考慮して、「スイートスポット」を自動的に見つけるためにワーカーの数を減らすことにした場合、それは素晴らしいことですが、この時点で、システムがワーカーの数を次のように増やすことができれば幸いです。より多くのアイテムが追加され、必要なアイテムが少なくなるにつれて数を減らします。
私がいじくり回したアイデアの1つは、アイテムがキューにある平均時間を測定することです。この平均時間が数秒を超える場合は、(設定された最大制限に達するまで)より多くのワーカーを起動する必要があります。平均時間が1秒未満の場合は、より多くのワーカーをスピンダウンする必要があります(もちろん残りが1つになるまで)。
誰かがこれに取り組むための最良の方法について何か提案がありますか?
heroku - Heroku:ワーカーdynoの数が増えると、ジョブの処理時間が長くなるのはなぜですか?
HerokuでDelayed::Jobワーカーをスケーリングすると、奇妙な動作が見られます。
私には数千の仕事がありますが、それらはすべて基本的に同じです。そのキューに1つのワーカーdynoを割り当てると、各ジョブは約4秒で完了します。
ワーカー数を2にスケーリングすると、処理時間は1ジョブあたり平均8秒になります。
ワーカー数を10にスケーリングすると、ジョブあたりの平均処理時間はジョブあたり30秒以上に増加します。
ワーカー数を増やすときに、ジョブあたりの処理時間が長くなることはないと思います。
現在動作しているため、処理時間の増加がより多くのワーカーを持つことによる利益を相殺するため、ジョブのバックログを「チャーンスルー」するためにワーカーの数を増やす方法はありません。
他の誰かがこの動作を見て、(より重要なことに)問題を解決する方法を知っていますか?
.net - WinForm-BackgroundWorkerと同じようにワーカースレッドを実装しますが、エラーが発生します
ワーカースレッドを実装しただけですが、例外が発生します。クロススレッド操作が無効です:作成されたスレッド以外のスレッドからアクセスされたコントロール'progressBar1'。
WinForm、プログレスバーの値を設定するためにワーカースレッドを使用したいのですが、失敗します。誰かが問題が何であるかを指摘するのを助けますか?BackgroundWorkerと同じように機能を実装するにはどうすればよいですか?
debugging - Azure でワーカー ロールのデバッグ中にエラーが発生しました
worker ロールをデバッグしようとすると、突然次のエラーが発生し始めました。
「Microsoft Visual Studio 用 Windows Azure ツール
プロセス ID: '8780' のロール インスタンス 'deployment16(360)blah blah' にデバッガーをアタッチする際にエラーが発生しました。添付できません。Microsoft Visual Studio リモート デバッグ モニターがリモート コンピューターで閉じられました。」
Visual Studio とマシンを再起動しても解決しません。