决定允许ASP.NET Web应用程序允许的工作进程数的最佳实践是什么?
在我管理的一台服务器上,创建一个新的AppPool默认为10(最大)工作进程.其他人建议正常设置是一个.
多个工作流程解决了什么问题,决定多少工作的技术是什么?
我需要RunWorkerAsync()
回报一个List<FileInfo>
.如何从后台工作者返回一个对象?
我使用自己的vps,vmware,quad core和4GB Ram的Windows Server 2008-R2中大部分时间的CPU使用率是100%.当我打开Windows任务管理器并转到资源监视器时,我发现100%的使用率是因为workerprocess.exe
.我的IIS中有3个网站.
我在我的vps上安装了eset-nod32,但它没有在日志中显示任何攻击.我已经尝试搜索IIS并阻止DDOS,并且刚刚找到了禁止IP地址的扩展,但我怎样才能找到生成流量的IP地址?
该网站是用ASP.NET
和写的C#
.如何确定该网站上发生的情况以及哪些代码行导致该cpu使用?
此外,我的一个网站应该访问管理员的桌面并读取和写入一些文件.因此,我将其应用程序池 - >身份(进程模型)更改为本地系统,我不知道它是否与CPU使用率相关.
asp.net worker-process cpu-usage iis-7.5 windows-server-2008-r2
我注意到在我的一个生产网络应用程序中,当我手动回收应用程序池时,基于在任务管理器中观察,回收的工作进程可能需要超过60秒以实际完全销毁.但是,如果我完全停止应用程序池,则工作进程几乎立即消失 - 在1-2秒内消失.
所以,我的问题是双重的:
a)当应用程序池被回收而不是停止时,为什么要花费这么长时间来销毁进程(更有意义的是,释放由它使用/锁定的资源); 和
b)假设我已经阻止流量被定向到服务器,是否有任何理由不停止/启动而不是回收?
编辑:
为了澄清,在我回收或停止应用程序池之前,我阻止流量被发送到有问题的服务器(服务器在负载平衡群集中,我从负载均衡器中删除服务器).因此,理论上,在我对应用程序池执行任何操作时,不应该向网站发出请求.
编辑Part Deux:
在阅读Igal的链接后,对我来说似乎很明显发生了什么.当我回收应用程序池时,新进程已启动,但由于根本没有流量,因此它没有将新进程注册为正常运行,因此在超时之前它不会关闭旧进程(即90秒).
有了这些知识,我很清楚"回收"功能专门用于在实时服务器的中游使用,并且因为我事先手动排出流量,所以我应该使用停止/启动.
我需要了解ASP.NET会话状态,因为它适用于IIS 7和ASP.net 3.5.
如果应用程序配置为使用进程内会话状态,那么如果有多个工作进程,那么它是否正常工作?换句话说,工作进程是否共享会话状态?
IIS 7的默认配置是使用进程内会话状态并分配最多10个工作进程.那么这个默认配置应该可行.我正在与一家公司打交道,该公司已经制作了一个有一些问题的ASP.NET MVC网络应用程序,他们指责服务器环境.声称是因为我使用的是10个工作进程的默认设置,即打破了会话状态.我需要知道这是否真的是一个准确的主张.我从来不知道ASP.NET应用程序不能使用默认配置,所以我有点困惑,需要明确这一点.
我目前正在尝试确定每个Amazon实例类型的适当工作人数.我曾经经营过一名Gunicorn工人,但事实证明这很慢.
许多开发人员目前正在使用此公式来衡量适合的工人数量:
NUM_WORKERS=3 #recommended formula here is 1 + 2 * NUM_CORES
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,亚马逊对每个实例运行的核心数量并不十分清楚.例如,M1小实例有1个EC2计算单元(1个虚拟核心和1个EC2计算单元)
这基本上意味着什么?它有一个核心?或者它有两个核心?
worker-process worker amazon-ec2 amazon-web-services gunicorn
我的服务器上有一个网站,我的IIS工作进程一直使用4GB RAM.我应该检查什么?
c:\windows\system32\inetsrv\w3wp.exe
Run Code Online (Sandbox Code Playgroud) 我正在尝试将.NET Web应用程序部署到IIS(7.5),而不会给用户带来任何麻烦.我确保禁用重叠回收是错误的,但我每次都遇到同样的问题.
每次我为站点上传新的二进制文件时,IIS都会在启动新进程之前终止该进程.所以每次上传新的二进制文件时,用户都会收到以下错误消息:
'/'应用程序中的服务器错误.无法加载文件或程序集"MyApplicationWeb"或其依赖项之一.该进程无法访问该文件,因为该文件正由另一个进程使用.(HRESULT异常:0x80070020)
我不知道如何无缝地做到这一点.现在我只是上传二进制文件; 但是当上传发生时(或本地副本),它将给出上述引用的行为.我也尝试使用Web园,但结果相同.
我不想要的:
更新:在上面的文章中他们说:
但是,由于关闭或启动的关闭超时值是可配置的,因此如果工作进程在时间限制内未完成为现有请求提供服务,则它仍可在服务请求时终止.
我不知道在哪里可以找到这个值,也不知道它是什么默认值.如果它少于几秒钟就可以解释我的结果.
PS.我发布它是在SO而不是SF /网站管理员等,因为我认为这种知识可能在那些不积极参与开发的人中很少,我希望这是可以的.
worker-process ×10
asp.net ×5
iis-7 ×4
iis ×3
c# ×2
recycle ×2
.net ×1
amazon-ec2 ×1
asp.net-mvc ×1
asynchronous ×1
concurrency ×1
cpu-usage ×1
deployment ×1
gunicorn ×1
iis-7.5 ×1
memory ×1
worker ×1