我正在使用Windows 2012,并已configuration我的IIS应用程序池使用我自己的“ XXXWeb ”帐户。 我的网站正在使用正确的应用程序池(W3WP进程也以“XXXWeb”运行)。 我将“XXXWeb”用户configuration为在Web目录中没有写权限。 令我惊讶的是,我看到用户可以在“XXXWeb”用户没有任何权限的目录中写入日志文件。 我使用Process Monitor进行了检查,发现'WriteFile'操作是以'XXXWeb'特权执行的,并且成功了。 当我尝试写入完全相同的文件时,我login为XXXWeb它失败。 有谁知道什么可能是错的? 我不希望AppPool具有写权限来防止安全问题,当我的IIS由于某种原因被黑客入侵时。
我正在诊断问题/试图控制一个网站有内存泄漏。 IIS设置“虚拟内存限制(KB)”已被设置为15728640(15GB!),但是当w3wp进程处于接近500MB的水平时,应用程序池似乎正在被回收,这对于该站点来说太低,因为它内存密集。 我已经把这个限制设置为0,看看它是否是回收的原因,它似乎是。 w3wp进程现在又在增长。 为什么这个限制是如此不准确? 15728640超过了你能设置的最大值吗?
我今天早上刚刚尝试将一个旧的ASP.NET网站的应用程序池切换到一个使用AD帐户进行SQL访问的应用程序池,因此,大多数网站上的静态内容不可用(即某些图像和CSS文件)好的500。 激活失败的请求跟踪后,错误竟然是: Either a required impersonation level was not provided, or the provided impersonation level is invalid. (0x80070542) 一些谷歌search(主要是这个问题 ),瞧瞧,我的AD帐户需要一个特定的策略:身份validation后模拟客户端 现在一般情况下,我不会有任何的牺牲实习生,并诵读ADpipe理员的帮助,但现在我想明白为什么这不是一个问题之前。 我使用这个特定的应用程序池用于其他应用程序(一个ASP .NET MVC 4之一),并没有引起任何问题,每个内容都得到了正确的服务。 所以我的问题很简单: 缺less的政策是错误的可能原因吗? (我不能自己testing,我需要一个成年人的pipe理和请求需要一些时间) 为什么我在第一次应用程序之前没有遇到错误? 据我所知,在webforms和MVC之间提供静态内容没有任何区别。
应用程序池在我们的生产环境中随机回收,因为它达到了私有字节内存限制(事件ID 5117)。 私有内存限制设置为1.6千兆字节。 我们不时得到一个事件ID 5013“closures期间服务应用程序池超过时间限制的进程”。 应用程序池回收后。 有没有什么办法可以在应用程序池回收之前进行内存转储,以便弄清楚发生了什么?
是否有任何官方文档,说明当IIS应用程序池停止时(或者通过UI或以编程方式),进行中的请求会发生什么? 我怀疑一个AppPool被“优雅地”阻止了,排除了所有活动的请求,但是我很想让我稍微受过教育的猜测得到证实。
我的应用程序池正在回收,当我不希望它是(注意我已经禁用基于时间和不活动的回收)。 我在事件日志中看到一个5080事件: 由于应用程序池属性中需要重新启动进程的一个或多个configuration更改,正在回收提供应用程序池“%1”的工作进程。 我检查了machine.config和web.config,并没有显示任何修改。 它可能是一个病毒扫描器造成这个? 我如何确定?
我们在同一个生产服务器上运行IIS和SSRS,并且有两种types的报告 – 一个通过Report Viewer运行,连接到SSRS(远程模式),另一个调用SSRS Web服务生成PDF。 对于这两种报告types,加载页面时都会变得非常慢,耗时20秒以上。 在服务器负载繁重的时期,这种情况最为明显,在IIS中回收应用程序池之后,速度缓慢,但在一段时间后回来(应用程序池设置为每天凌晨3点回收)。 我已经检查了SSRS的执行日志 – 对于所有的报告,数据检索+处理+渲染的时间不会超过2秒,SSRS的http日志表明当页面没有响应时IIS没有请求 – 一次该请求确实达到了非常快的加载速度。 通过报告pipe理器运行的报告也非常快。 这似乎并不像SSRS是罪魁祸首,似乎是在IIS中的东西造成的。 有没有其他人遇到类似的问题,或可以指出我在正确的方向进行诊断? 非常感谢。
我试图限制IIS 8.5中的应用程序池使用的内存。 我的问题是,如果我把一个看起来比典型的内存使用量大得多的限制,几分钟就会回收一次。 上下文信息如下。 最初,我已经从用户界面的8GB的限制和我的applicationhost.config看起来像这样: <add name="AppPool" autoStart="true" managedRuntimeVersion="v4.0" startMode="AlwaysRunning"> <processModel idleTimeout="00:00:00" /> <recycling logEventOnRecycle="Time, Requests, Schedule, Memory, IsapiUnhealthy, OnDemand, ConfigChange, PrivateMemory"> <periodicRestart memory="8192000" time="00:00:00"> <schedule> <clear /> <add value="01:00:00" /> </schedule> </periodicRestart> </recycling> 读了这篇文章 ,我意识到价值可能是无效的,因为它表示最大价值4,294,967 KB。 所以,我把这个值(来自用户界面),它正确地反映在configuration文件。 如果我删除了内存限制, w3wp进程不会超过2GB的已用内存,并且不会发生回收。 通过阅读事件查看器(源= WAS)确认回收的原因(达到内存限制)。 问题:如何在没有回收问题的情况下configuration内存限制?
我有一个像这样的子域的网站: 我的域名是“a.com”,子域名是“api.a.com”。 我在子域中发布了一个服务。 它在Get请求上正常工作。 但在获取POST请求(通过API)之前,子域的应用程序池停止。 所以我在服务器上安装了一个debugging诊断工具 。 每次POST请求到子域后,我得到5错误。 这里是分析结果: 谷歌search后,我发现w3wp错误是内存泄漏或当应用程序试图访问不属于内存的一部分。 我检查了我的整个api代码,没有任何对象没有处置,所有的生命周期都是“PerWebRequest”。 更何况我用温莎城堡来控制所有物体,甚至控制器的生命周期。 var container=new WindsorContainer(); container.Register(Classes.FromAssemblyContaining<VisitorRepository>().BasedOn<IRepository>() .WithService.FromInterface().LifestylePerWebRequest()); container.Register(Classes.FromAssemblyContaining<EventService>().BasedOn<IService>() .WithService.FromInterface().LifestylePerWebRequest()); container.Register(Component.For<EventDatabaseContext>() .LifestylePerWebRequest() .Forward<DbContext>()); 和控制器: private static void RegisterControllers(IWindsorContainer container) { container.Register(Classes.FromAssemblyContaining<VisitorController>() .BasedOn<ApiController>().LifestylePerWebRequest()); } 但是作为一个testing,我在POST方法中返回了一个带有任何代码的简单string(这会导致崩溃),但没有任何更改,并且在向web api发送POST请求之后,应用程序池又停止了。 毕竟,我发现“api.a.com”的子域身份(在应用程序池中)与“cdn.a.com”和“test.a.com”等其他子域不同。因此,我发布我的代码到这个领域之一,每一件事情都很好。 删除并重新创build“api.a.com”后,身份被更改,但“api.a.com”的应用程序池再次停止。 作为更多信息,Host安装了Plesk并创build了“a.com”和“api.a.com”,在获得面板后,我创build了另外两个子域:“cdn.a.com”和“test.a. COM”。 但是主机说这不是我们的错,这是你的代码错误! 你怎么看: 身份重要导致问题? 可以是服务器问题还是代码问题? 如何解决这个问题。 因为我需要api.a.com的作品。
自6月19日以来,我们正在经历应用程序池工作stream程的无法解释和不必要的回收。 应用程序池有一个预定的凌晨3点的回收。 但是从6月19日起,我们在上午5点到5点30分之间正在经历额外的无法解释的日常回收。 我们还无法find原因或触发因素。 不在IISpipe理设置中,也不在事件日志中,也不在任务计划程序中。 我们幸运的是有一个通过IISpipe理员的电子邮件发送的回收堆栈: Current StackTrace (max 30 frames deep): 0. ezWeb.Global_asax.Application_End() 1. System.RuntimeMethodHandle.InvokeMethod() 2. System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal() 3. System.Reflection.RuntimeMethodInfo.Invoke() 4. System.Reflection.MethodBase.Invoke() 5. System.Web.HttpApplication.InvokeMethodWithAssert() 6. System.Web.HttpApplication.ProcessSpecialRequest() 7. System.Web.HttpApplicationFactory.FireApplicationOnEnd() 8. System.Web.HttpApplicationFactory.Dispose() 9. System.Web.HttpRuntime.Dispose() 10. System.Web.HttpRuntime.ReleaseResourcesAndUnloadAppDomain() 11. System.Threading.ExecutionContext.RunInternal() 12. System.Threading.ExecutionContext.Run() 13. System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() 14. System.Threading.ThreadPoolWorkQueue.Dispatch() 我们应该在哪里进一步寻找原因,这个回收的触发器?