问题标签 [worker-process]

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 投票
3 回答
6465 浏览

iis - IIS 工作进程在回收时是否会清除会话变量?

我们正在 IIS 6 上编写一个 asp.net Web 应用程序,并计划将我们的用户登录变量存储在会话中。当工作进程回收时,这会被删除吗?

0 投票
2 回答
805 浏览

web-services - 根据请求定位 IIS 工作进程

好的,奇怪的设置,奇怪的问题。我们的 SaaS 应用程序有一个客户端和一个管理员 Web 应用程序,在 asp.net-2.0/iis-6 上运行。管理员应用程序可以更改客户端应用程序上显示的选项。当这些选项保存在 Admin 中时,我们从 Admin 调用客户端上的 Web 服务,以刷新该特定帐户的选项缓存。

最近,我们开始为我们的客户端应用程序提供 >1 个工作进程,从而导致仅在当前运行的工作进程中的 1 个上清除选项缓存。

所以,我显然有其他解决这个问题的途径(但是很感激输入),但我的问题是:有没有办法通过网络请求来定位/迭代每个工作进程?

0 投票
6 回答
59491 浏览

asp.net - IIS 工作进程使用大量内存?

我的服务器上有一个网站,我的 IIS 工作进程一直使用 4GB RAM。我应该检查什么?

0 投票
2 回答
1131 浏览

performance - 在 IIS6 应用程序池上查看特定于进程的性能统计信息的可靠方法

在 Windows Server 2003 的 perfmon 中,有一些计数器对象可以获取每个进程的处理器时间和内存工作集统计信息。唯一的问题是,在具有多个应用程序池的环境中,没有办法可靠地识别正确的工作进程。在perfmon中,它们都被称为“w3wp”,如果有多个,它们是w3wp、w3wp#1、w3wp#2,以此类推。即使这些名称也不可靠 - 数量取决于哪个最先启动,并且在应用程序池被回收时显然会发生变化,因为进程被破坏并重新启动。

我没有找到任何特定于 ASP.NET 的计数器,并且由于某种原因,我的 IIS 对象没有分隔实例——只有一个“全局”实例。

最终,我只想要特定 IIS 应用程序池的“% Processor Time”和“Working Set”计数器。有什么建议么?

0 投票
4 回答
37926 浏览

iis - IIS 应用程序池 - 停止/启动与回收

我注意到,在我的一个生产 Web 应用程序中,当我手动回收应用程序池时,根据在任务管理器中的观察,回收的工作进程实际上可能需要 60 多秒才能完全销毁。但是,如果我完全停止应用程序池,工作进程几乎会立即消失 - 在 1-2 秒内。

所以,我的问题有两个:

a) 当应用程序池被回收而不是停止时,为什么销毁进程需要这么长时间(更有意义的是释放它使用/锁定的资源);和

b)假设我已经停止将流量定向到服务器,是否有任何理由不停止/启动而不是回收?


编辑:
为了澄清,在我回收或停止应用程序池之前,我停止将流量发送到有问题的服务器(服务器位于负载平衡集群中,我从负载平衡器中删除了服务器)。因此,理论上,当我对应用程序池执行任何操作时,应该没有请求进入网站。


Edit Part Deux:
在阅读了 Igal 的链接后,对我来说发生了什么似乎很明显。当我回收应用程序池时,新进程启动,但由于根本没有流量,它没有将新进程注册为正在运行,所以它不会关闭旧进程,直到超时(即 90秒)。

有了这些知识,我很清楚“回收”功能专门用于在实时服务器上的中游,并且由于我事先手动排出流量,因此我应该使用停止/启动。

0 投票
4 回答
3303 浏览

queue - 排队系统 - 启动多个工人的好方法是什么?

  • 您如何为面向队列的系统设置一个或多个工作脚本?
  • 您如何根据需要安排启动 - 并在必要时重新启动 - 工作脚本?(我正在考虑诸如 init.d/、基于 Ruby 的“上帝”、DJB 的 Daemontools 等工具)

我正在开发一个异步队列/工作系统,在这种情况下使用 PHP 和BeanstalkdD(尽管实际的语言和守护进程并不重要)。任务本身并不太难——将带有命令和参数的数组编码为 JSON,以便通过 Beanstalkd 守护程序进行传输,然后在工作脚本中提取它们以根据需要对其进行操作。

还有许多其他类似的队列/工作者设置,例如StarlingGearmanAmazon 的 SQS和其他更多面向“企业”的系统,例如 IBM 的 MQ 和 RabbitMQ。如果你运行 Gearman 或 SQS 之类的东西 - 你如何启动和控制工作池?问题在于最初的工人启动,然后能够添加额外的额外工人,随意关闭它们(尽管我可以通过队列发送消息以关闭它们 - 只要一些“观察者”不会自动重新启动它们)。这不是 PHP 问题,它是关于直接设置一个或多个进程以在启动时运行的 Unix 进程,或者向池中添加更多工作人员。

循环脚本的bash 脚本已经到位 - 这会调用 PHP 脚本,然后从队列中收集并运行任务,偶尔退出以便能够自行清理(它也可以在失败时暂停几秒钟,或通过计划的活动)。这很好用,在此基础上构建工作进程一点也不难。

获得一个好的工作控制器系统是关于灵活性的,在机器启动时自动启动一个或两个,并且能够在队列繁忙时从命令行添加更多,在不再需要时关闭额外的。

0 投票
2 回答
3045 浏览

asp.net - 如何防止静态成员变量在 IIS 中一次被多个请求访问?

我在理解 IIS 如何处理其线程上的静态变量时遇到了一些麻烦。我的理解一直是,如果 IIS 有 4 个工作进程,它可以同时处理 4 个请求,并且它与有 4 个单独的线程运行网站相同。任何静态变量都将保留在每个单独的线程中。我有点困惑的原因是我已经创建了一个范围来管理连接和缓存事务。当我测试应用程序时,我没有注意到任何问题,但是在我编译它并从两个不同的位置同时点击它之后,我似乎遇到了一种冲突。现在,如果这些工作进程是分开的,为什么会这样呢?可以在单个工作线程上同时处理多个请求吗?这一点非常重要,因为在这些静态成员中保存了唯一的 ID,以处理管理这些功能的对象的升级,并且看起来它们正试图访问同一个对象。

我在 x64 机器上的 Vista 的 IIS 服务器上运行它。

编辑

对于需要在单个请求上通过线程持续存在的值,我将这些值放入Web.HttpContext.Current.Items其中似乎可以解决问题。

<ThreadStatic()>可以使用,但在整个请求过程中可能不可用。在我拥有的一个模块中,仅在变量上使用以指示该线程是否已经加载了 cahcing 服务器的设置。如果为真,则tread(不是asp.net)准备好从缓存服务器获取数据。

0 投票
3 回答
20344 浏览

iis-6 - 工作进程达到其允许的处理时间

我们大约每月遇到一次这个问题。很难查明原因,因此我们将不胜感激。这会导致应用程序池停止并关闭站点。我们浏览了所有的日志文件,没有任何结论。我们在 IIS 6 上使用 2.0.3 版本。

0 投票
3 回答
374 浏览

c# - 使工作进程回收所需的使用内存量的经验法则?

我有一个包含很多这样的代码库:

我不控制我的 IIS 服务器,所以我看不到系统日志或进行检测,我只是看到我的请求无法返回(死亡白页),有时 YSOD 出现内存不足错误。

在 IIS5 或 IIS6 终止工作进程或干脆死掉之前,有没有人有一个经验法则,你可以加载到内存中的最多数据是多少?

或者更好的是,我是否有一个 API 调用,例如:

在我的 XP Pro 工作站上,我可以获得一个 ASP.NET 页面来成功处理内存中非常大的字节数组,但这些结果显然不适用于真正的共享服务器。

0 投票
2 回答
5325 浏览

asp.net - 清除多个工作进程的 ASP.net 缓存

我们有一个 ASP.net (2.0) 应用程序配置为使用 IIS 中的网络花园选项与多个工作进程一起运行。我们的大部分数据都被缓存了,有时我们必须在站点发生更改时清除缓存。我们有一个简单的页面,它将遍历 HttpCache 项并清除它们。

但是每个工作进程都有自己的 HttpCache 对象副本,因此当我们请求缓存刷新页面时,它只会清除为该特定请求提供服务的进程的缓存。其他工作进程的缓存不会被清除。

除了以编程方式回收应用程序池之外,有没有办法清除所有工作进程的 HttpCache?