问题标签 [web-garden]

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 回答
255 浏览

web-garden - 为测试目的配置网络花园

我通过将最大工作进程设置为 3 将我的 Web 应用程序配置为使用 Web Garden。所以现在当我启动我的应用程序时,在 IIS 7 中启动了三个工作进程,但所有请求都只发送到一个工作进程。

我的问题是有一种方法可以强制 iis 对每个请求使用不同的工作进程,因为我想测试 sesisons、静态对象等在网络花园场景中的工作。

谢谢, 达尔吉特

0 投票
0 回答
245 浏览

.net - 在 WAS(Web Garden)中托管 WCF -> 控制 WorkerProcess 的生命周期

我正在尝试在 WAS 中托管我的 WCF 服务,但已经努力了几个小时来完成以下场景:

有一个客户端和许多 WCF“服务器”。根据端点的地址、客户端请求(或其他一些参数),应该生成一个新的工作进程来托管 WCF 服务,或者应该将请求发送到已经存在的工作进程(针对该地址/参数)。

我正在使用命名管道(一切都发生在同一台机器上)。

例如:

端点地址 - net.pipe://localhost/MyService/A -> WAS 必须生成一个新的 Worker Process1

端点地址 - net.pipe://localhost/MyService/B -> WAS 必须生成一个新的 Worker Process2

端点地址 - net.pipe://localhost/MyService/C -> WAS 必须生成一个新的 Worker Process3

端点地址 - net.pipe://localhost/MyService/B -> WAS 必须将请求重定向到 Worker Process2

实现这一目标的最简单方法是什么?

0 投票
0 回答
632 浏览

iis-7 - IIS 7.0 Web Garden 中的 MongoDB C# 套接字异常(例如:每个套接字地址(协议/网络地址/端口)通常只允许使用一次)

我有一个 ASP MVC 应用程序,它使用 10gen Mongo C# 驱动程序 ( github ) 连接到特定端口上的数据库服务器。我已将其部署在具有 3 个工作进程的 IIS 7.0 网络花园中。每隔几分钟,在负载下,就会抛出以下异常,并向用户返回 500:

我花了很多时间在谷歌上搜索这个异常并且几乎说服自己我的套接字用完了,如 WCF 中所述:System.Net.SocketException - 每个套接字地址(协议/网络地址/端口)只有一种用法是通常允许

但是这个问题不受我增加可用套接字的最大数量和减少 TIME_WAIT 值的影响。

我最近突然想到,即使 Mongo 驱动程序执行连接池,每个工作进程都有自己的池。这些池要么一起工作以使系统脱离套接字,要么只是试图同时使用相同的套接字地址。后一种情况似乎更有可能,因为这正是异常所暗示的,并且当站点部署到单个进程时问题不会发生。但是在网络花园之外,性能下降非常明显,如果进程崩溃,回收延迟是不可接受的。也就是说,获得 500 条回复的用户同样是不可接受的。

我考虑了以下几点:

  1. 将所有数据访问调用包装在一个 try/retry-n-times/fail 结构中(丑陋而简单的坏习惯)
  2. 过渡到多机而不是多进程(在当前用户负载下昂贵且不必要)

问题:

  1. 有什么方法可以让这些工作进程优雅地共享地址/端口?
  2. 有没有办法进行某种“端口触发”(我敢肯定,这不是正确的术语),每个工作进程的传出连接可以使用不同的本地端口连接到同一个远程端口?远程机器可以在同一个端口上处理多个传入连接,而不会出现问题。
  3. 如果您认为我的套接字用完了,有没有办法限制每个进程的套接字连接数,以便它们可以共享 65536 个套接字。
0 投票
1 回答
11424 浏览

asp.net - w3wp.exe 的多个实例

当我只有一个网站和一个应用程序池时,我不明白为什么任务管理器中有两个 ASP.NET w3wp 进程。为什么有两个进程在运行?我已经用谷歌搜索了这个并查看了 MSDN,但找不到答案。

我正在尝试调试应用程序中的内存泄漏。我理解线程和多个线程生活在一个进程中的概念,但我不明白为什么会有多个进程。

我特意询问哪些场景会导致多个进程运行。

0 投票
1 回答
853 浏览

multithreading - IIS 网络花园是否使用线程或进程?

当您在 IIS 中设置应用程序池的最大工作进程属性时,您实际上是在设置进程数还是线程数?

0 投票
1 回答
329 浏览

asp.net - ASP.NET Webgarden 共享静态对象

我有一个需要使用 jabber-net 对象向客户端发送 XMPP 消息的 web 服务。

(它用于处理打印:当 web 服务需要打印某些东西时,我将 XMPP 消息发送到在插入打印机的特定机器上运行的 Windows 窗体客户端,带有打印作业类型和 URL,然后客户端下载数据并将其发送到打印机。此通信通道还将用于其他 POS 功能,例如打开抽屉、与芯片和引脚设备通信等,因此打印替代方案将无济于事)。

我有一个包含 jabber-net 对象实例的静态对象,它登录到 XMPP 服务器,然后可用于发送消息。

这工作正常单线程。当我将 web 服务转换为 web 园以便它可以在多个线程上工作时,似乎每个线程都有自己的 jabber-net 对象实例,所以他们都试图登录到 XMPP 服务器一次作为同一用户,这意味着他们不断被踢出。

问题:有没有办法在网络花园中的所有线程之间共享一个活动对象(可能处理事件,而不是序列化对象,而不仅仅是数据),如果是这样,最好的方法是什么?

0 投票
0 回答
267 浏览

iis - IIS7.5 应用程序初始化和网络花园

在使用 IIS7.5 和应用程序初始化模块时,可以让您的 Web 应用程序始终运行,并且还可以通知自定义方法来预热缓存等。此功能是否可以在 web-garden 模式下工作?

即有多个工作进程准备好处理请求。

我添加了所需的 xml 以允许初始化工作进程,但这只会导致单个工作进程准备好接收请求。

是否有多个工作进程都准备好接收?

0 投票
1 回答
159 浏览

asp.net - 当应用程序托管在多个服务器上时如何从单个文件夹下载文件

我有 asp.net 应用程序,它将部署在多个服务器(网络花园)上。我的一台服务器有ReadyToExport文件夹,所有文件都来自不同的服务。当用户单击下载链接时,我想将其路由到这个单个文件夹(ReadyToExport)。如何将所有下载请求路由到单个文件夹。请提出解决此问题的方法。

0 投票
1 回答
197 浏览

.net - 使用 Web Gardening 进行性能监控

有没有人知道如何监控其中实施了网络园艺的应用程序的性能?基本上通过网络园艺实现,有多个 w3wp 进程实例。因此,当我们的目标是监控 w3wp 进程的 Private Bytes 并且我们有多个进程要监控时,我们需要添加哪些性能计数器?例如,我们看到 w3wp 进程的多个实例,例如 w3wp、w3wp#1,当我们在 perfmon 中添加计数器时,我们是否需要选择 w3wp 进程的所有实例?如果是,那么稍后如何解释结果,因为 csv 文件将显示 w3wp 以及 w3wp#1 公主的私有字节。垃圾收集和在 GC 中花费的时间相同?

0 投票
0 回答
99 浏览

c# - 网络花园上的彗星服务器

我正在使用一个IHttpAsyncHandler来服务彗星/长轮询请求。处理程序使连接保持打开状态并将MyAsyncResult对象保存在 staticConcurrentSet<MyAsyncResult>中。

当发出单独的请求(导致彗星响应的请求)时,程序会MyAsyncResult在列表中找到对象并完成请求。

我的问题是,当我将应用程序更改为在 Webgarden 中运行时,这个静态变量不会在所有工作进程之间共享,所以这个实现不会起作用。

现在,我无法将MyAsyncResult对象存储在 SQL 数据库中,或者任何可能有用的对象(如IHttpHandler自身,或指向 EndProcessRequest 方法的委托等)中。我可以将某些 ID 和字符串存储在 SQL 数据库中,并不断检查新值,但这似乎很昂贵,并且首先违背了使用长轮询的目的。

有什么方法可以在网络花园中分享我的静态ConcurrentSet内容吗?或者我可以通过任何其他方式让IHttpAsyncHandler坐在那里等待信号发送它的响应?

编辑:

如果我无法跨进程共享变量,有没有办法可以向所有其他工作进程广播?我在这里只需要一个带有两个整数参数的信号。