问题标签 [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 投票
1 回答
608 浏览

iis-8 - IIS 工作进程重叠

我有一个托管在 IIS 8 中的应用程序,它的应用程序池设置为在 10000 个请求后自动回收。但有时会回收应用程序池。新的应用程序池不断重叠......而旧的应用程序池并没有被放弃。

预期结果:自动回收后应用程序池不应重叠。

0 投票
0 回答
242 浏览

c# - 不同的 AppDomain 损坏状态异常 (AccessViolationException) 应用程序池工作进程

在 .NET 4.6 的 AppDomain 中引发 AccessViolationException(或另一个损坏状态异常)时,如何防止整个应用程序(进程)崩溃?我的目标是在其 AppDomain 中包装一个第 3 方库(GdPicture.NET 条形码阅读器),它会根据 IIS 故障转储间歇性地使 IIS 工作进程崩溃。换句话说,我想将第 3 方库调用隔离在其自己的应用程序域中,这样它就可以在自身内部发生故障而不会导致整个网站停机。

在下面的示例代码中,如果我不使用 HandleProcessCorruptedStateExceptions 属性,我无法捕获在不同 AppDomain(在 ClassLibrary1.dll 中)中引发的 AccessViolationException(包装在 TargetInvocationException 中)。如果我装饰 HandleProcessCorruptedStateExceptions (仅适用于第二次 AppDomain 调用),主进程继续运行是否安全,还是进入不稳定状态?

具有两个项目(一个控制台应用程序和一个类库)的 Visual Studio 解决方案。

在此处输入图像描述

这是 ClassLibrary1 项目中 Class1.cs 中的代码:

0 投票
1 回答
4587 浏览

c# - IIS 工作进程和工作线程

我有一个简单的 ASP.Net MVC 应用程序,它部署在 IIS 中。我对此应用程序进行了示例负载测试。我的应用程序中记录了响应时间。当我将应用程序中的响应时间与 IIS 响应时间进行比较时,IIS 响应时间比我的应用程序日志高。

我从中了解到的是,IIS 没有足够的工作线程来处理请求并保持请求处于暂停状态。此保持时间也记录为 IIS 响应时间的一部分。

我的理解是否正确。如果是,我如何增加工作线程以增加整体吞吐量。

我尝试了以下步骤来增加工作线程,但更改后我没有看到任何影响。 https://support.microsoft.com/en-us/help/821268/contention-poor-performance-and-deadlocks-when-you-make-calls-to-web-s

问候

0 投票
1 回答
882 浏览

asp.net - 在 Asp.Net MVC 5 中处理会话和多个工作进程

我有一个 Asp.Net MVC 5 Web 应用程序,它有一个错误处理机制,用于在 DB 中记录错误,并以名为 ErrorPage 的单独形式向引发该错误的用户显示 errorId。当 Web 应用程序中发生错误时,我将该 errorId 存储在会话中,并从 ErrorPage 中的会话中读取它,以向遇到此错误的用户显示该 errorId,以便能够进行备份操作。此 Web 应用程序的 Web 服务器当前仅使用一个工作进程处理请求,因此所有生成的会话在整个 Web 应用程序中都是有效且可访问的。

我打算将此 Web 应用程序的工作进程数从 1 个增加到 4 个,但我的 Web 应用程序有一些问题。同样在 IIS 中,我将会话状态模式设置为进程中模式,因为在 Web 应用程序中我在很多情况下都使用了会话,并且我无法将其设置为SQL Server模式,因为它会增加性能开销。

问题是请求进入工作进程 A(例如),并且将在工作进程 A 中为此请求生成一个会话,假设此请求在 Web 应用程序中遇到错误,我会将用户重定向到 ErrorPage,它是这个新请求(将用户重定向到 ErrorController 中的 ErrorPage 操作)可能会进入另一个工作进程 B(例如)。但是在工作进程 B 中,我无法访问为第一个请求生成的会话,因为该会话是在工作进程级别定义的,并且它们仅在该工作进程中有效。

因此,经过大量搜索后,我决定将会话信息保存在 DB 而不是 Ram 中,并在需要该信息时从 DB 加载它。但我不知道用哪个密钥 ID 将此信息保存在数据库中?

想象一下这种情况,以便更容易地找出我的真正问题:

让我们:

和场景:

如果无法做到这一点,有没有办法在 Web 服务器的所有工作进程中共享标识符?

编辑:

在本次编辑中,我将解释我在 ErrorHandling 机制中从会话中使用的位置和方式。在目标行的末尾有一个注释短语,其中写着“我正在使用会话”:

如您所见,我填写TempData的内容将存储在会话中,用于通过ErrorCode键将 errorId 传递给 ErrorPage 以显示给用户。

0 投票
0 回答
305 浏览

.net - ASP.NET Web 表单中的内存不足异常

我们有一个在 Web 场环境中针对 CLR 2.0 和 .NET 框架 3.5 的 ASP.NET Web 表单中构建的旧 Web 应用程序。最近几天,我们注意到了一些OOM异常。我们知道 w3wp 对于 32 位应用程序的内存限制是 3GB,因为我们启用了 3GB 开关。

我们希望对导致 OOM 问题的应用程序池的应用程序池设置进行以下更改。

  1. 如果达到 2.5 GB 的虚拟内存,则使用禁用重叠回收为 true 回收应用程序池。
  2. 由于我们处于网络农场环境中,我们是否可以使用多个 w3WP(在网络服务器中)来使用网络花园场景。这背后的原因是每个 w3wp 都有自己的 3 GB 内存限制。

问题:

  1. 建议使用虚拟内存限制还是私有内存限制。?如果不是两者的结合。
  2. 是否建议禁用重叠回收为真/假。我们是否应该将关闭时间限制从 90 秒更改为 180 秒,让应用程序池有足够的时间来完成现有请求的处理,因为新的应用程序池是处理请求的过程。
  3. 他们在像上面这样的网络农场场景中使用网络花园有什么缺点吗?

我们需要一些喘息的空间来进行 64 位迁移,这些只是临时修复。

0 投票
0 回答
386 浏览

wcf - IIS 8.5 请求管理 | 队列 | 超时问题

我有一个 WCF SOAP 服务,它接收来自其他系统的太多同步请求

当当时有太多请求时,我遇到问题 IIS 队列将无法提供正确的结果,服务器内存和 CPU 使用率变高并丢弃请求或超时

我进行了正常的负载测试(100 个并发用户的 100 个请求),并且 IIS 在达到最大队列长度后开始丢弃请求以及所有请求延迟以提供响应,并且其他进来的请求延迟到第一个一个要么超时,要么响应。

下面是服务器配置

在此处输入图像描述 WCF 应用程序代码使用 Resharper 工具测试,没有对象或内存处置问题

是否有设置应用程序池或工作进程来管理队列的设置?

我可以在应用程序中应用网络花园吗?

请帮我解决这个问题

提前致谢

0 投票
0 回答
35 浏览

xml - 尝试删除仅由 http 访问的文件时访问被拒绝

我在我的服务器上的网站中有一个文件夹,其中保存了 XML 文件。用户可以通过 http 访问 XML 文件(在 IIS 中配置了 mime 类型)。

有一个程序可以生成和更新文件夹中的 XML 文件。尝试从文件夹中删除 XML 文件并将其替换为新版本时,有时我的程序会被拒绝访问。

有时,当我使用 Process Explorer 在服务器上手动检查时,我发现该文件已被 IIS Worker 进程锁定。如果 http 是无状态的,为什么 IIS Worker 进程会锁定文件。

我 100% 确定包含 XML 文件的文件夹不会被任何其他程序访问。用户只能通过 http 下载 XML 文件。

请让我知道是否有解决此问题的解决方案。

0 投票
1 回答
1109 浏览

iis - 为 IIS 应用程序池使用多个工作进程时的后果

我用谷歌搜索并在许多文章中看到说,当使用多个工作进程时,会出现与 asp.net 的会话处理程序相关的小问题。我是网络编程的新手,但我不明白......有人可以用简单易懂的方式解释它吗?

我在 IIS 上部署了一个 asp.net mvc 应用程序。为了使用它,需要用户登录,并且一旦登录,有些地方需要用户重新登录(是的,我知道,使用SSO不需要重新登录,但尚未实现) . 所以考虑到这一点,如果我为应用程序池设置了多个工作进程,会发生什么?它会停止工作吗?这是大多数文章在谈论会话处理程序时所指的内容?

0 投票
1 回答
103 浏览

asp.net - Web Garden vs Tuning ASP.NET Web.config file by using parameters such as MaxWorkerThreads

Some people recommend to avoid using Web Garden. Instead they recommend to try first tuning some parameters in ASP.NET app web.config file by using this.

As far as I know Web Garden consists on incrementing the number of worker processes in the Pool. It is like having multiple threads serving the incoming requests.

So what's the difference between using multiple worker processes for the Pool and tuning the ASP.NET web.config file by using parameters such as MaxWorkerThreads, MaxIOThreads, etc.?

Both consists on using more than one thread so I am not be able to see the difference between these two techniques.

0 投票
1 回答
2149 浏览

asp.net-mvc - MaxWorkerThreads vs App Pool Worker Processes:有什么区别?

据我所知,可以通过不同的方法提高在 IIS 上发布的 ASP.NET 应用程序的性能:

  1. Web Garden:为 App Pool 使用超过 1 个工作进程。
  2. Web 农场:拥有多台机器为同一应用程序的一个实例提供服务
  3. 调整 ASP.NET web.config 文件

...也许还有其他我不认识的人...

选项 1 和 2 需要对复杂的数据结构进行序列化,并将会话状态模式设置为 State Server 或 SQL Server(InProc 模式不兼容且不起作用)

我想关注选项 1 和 3:

关于 web garden(选项 1),我们为一个应用程序池设置了 1 个以上的工作进程,并且我们必须将状态服务器或 sql 服务器设置为会话状态模式。

在选项 3 中,我们通过设置 maxWorkerThreads 等参数来调整 web.config 文件,如此处所述。

现在很多问题浮现在我的脑海里......

我无法区分在选项 1 中为 App Pool 设置超过 1 个工作进程和在选项 3 中设置 maxWorkerThreads > 1 之间的区别。

  1. 在选项 1 中,您有超过 1 个工作进程可用于处理传入请求,而在选项 3 中,您有许多线程可用于处理传入请求,那么有什么区别?
  2. 工作进程=线程?
  3. 应用程序池的工作进程(选项 1,案例#worker processes > 1)的工作和行为方式是否与我们有许多线程(选项 3,案例 #maxWorkerThreads > 1)相同?
  4. 选项 1 中的进程是否与选项 3 中的线程相同?
  5. 此外,在选项 3 中,当应用程序池有 1 个工作进程但在 web.config 文件中设置 maxWorkerThreads > 1 时,它是如何工作的?与选项1中的情况不同吗?
  6. 另外,我可以将 InProc 会话状态模式与选项 3 一起使用吗?