问题标签 [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.

0 投票
1 回答
1122 浏览

heroku - 我如何知道我在 Heroku 上使用了多少个工人测功机?

我正在使用 HireFireApp 在 Heroku 上自动缩放我的网络和工作人员测功机。但是,当我导航到我的应用程序上的 Resque 应用程序时,它说

“46 名工人中的 0 名正在工作”

这是否意味着我正在使用 46 个工人测功机???

更新:

运行 heroku ps 显示:

0 投票
2 回答
943 浏览

multithreading - 在 Windows(本机)中控制工作线程的最佳实践?

仅使用 win32 API 控制执行同一线程 proc 的多个工作线程的最佳实践是什么?

我尝试了很多替代方案,但我无法做到正确。我当前的代码如下所示:

基本上我正在使用事件来启动多个工作线程,但这当然不能按预期工作。如果主线程在 SetEvent() 和 ResetEvent() 之间被中断,工作线程只会在 while 循环中旋转。另一方面,使用自动重置事件对象只会释放一个等待线程。

另外,我需要主线程等待所有线程完成。我厌倦了几种不同的方法,但我无法让它发挥作用。我想我才刚刚开始意识到多线程编程有多难。

编辑:语法

0 投票
3 回答
2461 浏览

event-handling - Netty - 工作线程如何工作

我想了解 netty 工作线程是如何工作的。根据代码,对于每个新请求,我们都会获得 nextwoker() 任何一个工作线程并将其分配给处理客户端事件。所以根据我的理解,单个线程将能够处理来自不同客户端的不同请求。

我在这里有一个问题,对于客户端(通道/套接字),进入该特定通道的所有事件都是由同一个线程处理还是不同线程可以处理它们。我的假设是单线程处理所有事件(不包括未来事件)。但根据 MemoryAwareThreadPoolExecutor 的文档,他们告诉通道,不同的线程处理不同的事件。

为了验证这一点,我使用单个客户端和工作线程 ppol 编写了一个小程序,它有 50 个工作线程,但是当我在消息接收事件中保持睡眠时,我的客户端等待下一个消息接收调用。这确认为每个客户端分配了单个线程。请说清楚 ...

0 投票
3 回答
1045 浏览

ruby-on-rails - 如何在 Rails 中实现自动启动和退出守护进程

Rails 社区为我的问题创建的可能解决方案的数量让我有点不知所措。所以也许任何人都可以帮助我弄清楚如何最好地解决它。

我想做的是编写一个行为类似于“dropbox”的 Rails 应用程序。一方面,它应该是一个 Web 界面,我可以在其中将文件上传和下载到我的 Web 服务器。这与我的数据库和所有这些东西交互。另一方面,我可以通过 SSH 访问该服务器,并且可以手动将文件放在那里。现在我希望这个文件系统操作触发我的 Rails 应用程序执行如果我通过 Web 界面创建文件时会执行的操作。

所以我以某种方式编写了一个守护进程,对吧?有很多解决方案, 比如
daemons.rubyforge.org/github.com/mirasrael/daemons-rails
github.com/costan/daemonz
github.com/kennethkalmer/daemon-kit

我想拥有的另一个功能是,我的 Rails 应用程序会在启动或退出我的 Rails 应用程序时自动生成和停止我的守护进程。所以“daemonz”似乎是最好的解决方案。但是当我进一步搜索时,我发现
github.com/FooBarWidget/daemon_controller/
这似乎更“高科技”并且已经在我与乘客一起部署时使用。但是我不明白当我退出 Rails 时它是否会杀死我的守护进程。我想情况并非如此,所以我想知道如何在我的应用程序中实现它。

实现“事物”以对文件系统更改做出反应的方式对我来说似乎很简单。我会使用
github.com/guard/listen/
(另一种选择是:github.com/ttilley/fssm)
但是我第一次真正面对这个协议时不明白的是,如果这会产生一个我能够与之通信的服务器或者我必须处理什么样的对象。

我想实现的最后一件事是一种工作队列,以便侦听文件系统更改与我的 rails 应用程序的操作分开。但是有这么多解决方案,我完全不知所措 :
github.com/tobi/delayed_job/github.com/defunkt/resque http://backgroundrb.rubyforge.org/


http://godrb.com/到底是什么
?这对我有什么帮助?

有没有人提示如何解决这个问题?非常感谢!

PS 我想发布所有 github 项目的链接,但不幸的是我没有足够的“声誉”

0 投票
1 回答
988 浏览

ruby-on-rails - Rails Resque 更改工人限制?

我有一些 Resque 工作人员的 Rails 应用程序。似乎我有 2 名工人同时运行的限制(应用程序在 EC2 上运行,Apache 在生产中)。有什么办法可以提高这个限制吗?

编辑:

我在 redis.conf 中有 maxclients 0

我可以通过 rake 启动 10 个工作人员,但是当他们实际排队时,我在浏览器中得到“达到 ERR 最大客户端数”。

编辑:更新错误(在原始文件中是正确的)

编辑:实际上有 config/initializers/Resque.rb 指向 redis-to-go (是应用程序早期的雏形),一旦我删除它,指向 config/resque.yml (使用本地主机)一切都正常并且我可以随心所欲地启动尽可能多的工人。

0 投票
1 回答
2818 浏览

php - 与 Apache 的 worker MPM 和 mod_php 的连接未关闭

首先,我知道这是一个有问题的设置,但是 fastcgi 或 fcgid 的性能迫使我试一试。问题是由于连接未关闭,我的负载测试从未完成。当我推送到只有 40 个并发连接时,事情就变糟了——连接处于建立状态几分钟:

然后几分钟后,它们分裂成 CLOSE_WAIT 和 ESTABLISHED 的混合体:

又过了 10 分钟,这并没有改变。这些是客户端到 Web 服务器和 Web 服务器到 mysql 服务器的组合。如果我针对没有建立 mysql 连接的 php 页面进行测试,则一切正常。

我自定义编译了 PHP(配置如下),并通过 apt-get(Ubuntu 10.04)安装了 apache-mpm-worker。我尝试使用 msyql_config 和 mysqlnd 为 mysql、mysqli 和 pdo 模块编译 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

0 投票
2 回答
339 浏览

c# - 如何自动扩大/缩小工人?

如何自动扩展工作任务?

我有一个应用程序,我想自动扩展工作任务的数量以适应要处理的项目的吞吐量(显然对工作人员的数量有最大限制)。

所有要处理的项目都通过一个点进行路由,从那里它们被分配到工作任务中(现在我找到具有最短队列的工作人员,并将项目排入队列)。

什么是一个好的模式或技术可以用来做出一些明智的决定,比如我应该让多少工人来处理这些物品?如果项目能够由较少的工人及时处理,则此逻辑需要包括关闭工人。

我意识到添加更多的工人不会无限扩展,因为最终其他资源会成为瓶颈,并且在某些时候增加更多的工人会比帮助更多。如果我能解释这一点,并决定减少工人的数量以自动找到“最佳位置”,那就太好了,但是在这一点上,如果我的系统可以增加工人的数量,我会很高兴的添加更多项目,然后在需要较少项目时减少数量。

我玩弄过的一个想法是测量一个项目在队列中的平均时间。如果这个平均时间大于几秒钟,我应该启动更多的工人(直到达到设定的最大限制)。如果平均时间少于 1 秒,我应该减少更多的工人(当然,直到只剩下一个)。

有人对解决此问题的最佳方法有任何建议吗?

0 投票
1 回答
282 浏览

heroku - Heroku:为什么越来越多的工人测功机会增加工作的处理时间?

在 Heroku 上扩展 Delayed::Job 工作人员时,我看到了奇怪的行为。

我有几千份基本相同的工作。当我为该队列分配 1 个工作人员测功机时,每个作业大约在 4 秒内完成。

当我将工人数量增加到 2 时,每个作业的处理时间平均为 8 秒

当我将工人数量增加到 10 人时,每个工作的平均处理时间增加到每个工作 30 秒以上。

在扩展工人数量时,我不希望每个作业的处理时间增加。

按照目前的情况,没有办法增加工人的数量来“处理”积压的工作,因为处理时间的增加抵消了拥有更多工人的任何收益。

有没有其他人看到过这种行为并且(更重要的是)知道如何解决这个问题?

0 投票
1 回答
596 浏览

.net - WinForm - 像 BackgroundWorker 一样实现工作线程但得到错误

我只是实现了我的工作线程,但它会出现异常:跨线程操作无效:控件'progressBar1'从创建它的线程以外的线程访问。

WinForm,我只想使用我的工作线程来设置进度条值,但它失败了。任何人帮助指出什么问题?如何实现与 BackgroundWorker 一样的功能?

0 投票
3 回答
3162 浏览

debugging - 在 Azure 中调试辅助角色时出错

在尝试调试工作角色时突然开始出现以下错误:

“用于 Microsoft Visual Studio 的 Windows Azure 工具

将调试器附加到角色实例“deployment16(360)blah blah”时出错,进程 ID:“8780”。无法附加。Microsoft Visual Studio 远程调试监视器已在远程计算机上关闭。”

重新启动 Visual Studio 和机器没有帮助。