Articles of iis

为什么我们会在响应时间突然激增?

我们有一个使用IIS托pipe的ServiceStack实现的API。 在执行API的负载testing时,我们发现响应时间是好的,但是一旦我们每服务器达到约3,500个并发用户,它们就会迅速恶化。 我们有两台服务器,当用7000个用户点击它们时,所有端点的平均响应时间都低于500ms。 这些盒子位于负载平衡器的后面,所以我们可以得到每台服务器3500个并发数。 但是,一旦我们增加了总并发用户的数量,我们就会看到响应时间显着增加。 将并发用户数量增加到每个服务器5,000个,每个端点的平均响应时间约为7秒。 服务器上的内存和CPU都非常低,两者的响应时间都很好,而且在恶化之后。 在拥有10,000个并发用户的峰值时,CPU的平均值仅仅低于50%,而RAM的坐标大约是3-4 GB。这让我们认为我们正在某种程度上受到某种限制。 以下屏幕截图显示了在负载testing期间perfmon中的一些关键计数器,共有10,000个并发用户。 突出显示的计数器是请求/秒。 在屏幕截图的右侧,您可以看到每秒请求图变得非常不稳定。 这是响应时间缓慢的主要指标。 一旦我们看到这种模式,我们注意到在负载testing中响应时间慢。 如何解决这个性能问题? 我们正试图确定这是一个编码问题还是一个configuration问题。 web.config或IIS中是否有任何设置可以解释这种行为? 应用程序池运行的是.NET v4.0,IIS版本是7.5。 我们通过默认设置进行的唯一更改是将应用程序池“ 队列长度”值从1,000更新为5,000。 我们还将以下configuration设置添加到Aspnet.config文件中: <system.web> <applicationPool maxConcurrentRequestsPerCPU="5000" maxConcurrentThreadsPerCPU="0" requestQueueLimit="5000" /> </system.web> 更多细节: API的目的是合并来自各种外部源的数据并作为JSON返回。 目前它正在使用InMemorycaching实现caching数据层的各个外部调用。 对资源的第一个请求将获取所有需要的数据,对相同资源的任何后续请求将从caching中获取结果。 我们有一个“caching运行程序”,作为后台进程实现,以特定的时间间隔更新caching中的信息。 我们添加了从外部资源中获取数据的代码。 我们还实现了以asynchronous方式从外部数据源获取数据的服务,以便端点只能像最慢的外部调用一样慢(除非我们有caching中的数据)。 这是使用System.Threading.Tasks.Task类完成的。 我们可以在进程的可用线程数方面受到限制吗?

有一个NTFS交叉点作为web根目录的IIS 7站点有什么缺点?

我试图想出一种尽可能less的网站干扰部署ASP.NET代码的方法。 一个想法是build立一个NTFS路口c:\www\example.com在哪里提供服务 c:\www\example.com -> c:\www\example.com_r1234 然后,在部署新代码时,将其复制到c:\www\site.com_r1235 ,并将路口redirect到 c:\www\example.com -> c:\www\example.com_r1235 所以我的问题是什么影响这可能对IIS中的当前请求? 从IIS对变化的反应(如果有的话)来看,还有什么其他的缺点呢? 对于网站的最终用户来说,这是否像我希望的那样无缝? (我曾经考虑过通过命令行来改变站点的web根目录,但是我真的不喜欢重新configurationIIS的想法,因为可能发生的任何不必要的应用程序域或应用程序池混乱,但我不知道很多当站点的configuration物理path在负载下发生变化时会发生什么情况) 要清楚的是,我唯一关心的是我的最终用户的体验。 我的目的是为了避免他们的干扰,对我来说不方便。

Windowsnetworking服务器清单

当您部署新的Web服务器框时,您安装了哪些标准的东西,并设置它? 你做了什么工作来确保盒子被locking,不会受到损害? 至今: 一般 应用安全补丁等 运行Microsfot基准安全分析器(MBSA) 禁用弱encryptionalgorithm – 斯科特 ,也可以参阅David Christiansen的 文章和serversniff.com网站 networking 哈登TCP / IP协议栈 – K. Brian Kelley 白名单stream量与IPSEC政策 所有NetBIOS被删除或禁用 将Web服务器放在工作组中(不允许在域中) 使用DMZ IIS 安装UrlScan 运行IISlocking 相关文章 ASP.net生产清单 在开发公共网站之前,开发者应该知道什么

Windows身份validation不断询问用户名/密码

我在iis6上部署我的web应用程序。 我不断收到这个“Windows安全”popupinput用户名和密码..我已经禁用匿名用户,并检查集成的Windows身份validation,但它只是不会“自动”login。 我该怎么办? 我已检查安全设置 – 本地Intranet区域:“login为仅在Intranet区域自动login”。 另外我的生产服务器是一个独立的服务器,因此可能不会持有AD帐户和凭据。

负载平衡的IIS 7.5 Web服务器ASP.NET会话状态问题

我们遇到ASP.NET用户会话performanceexception的问题 – 会话数据出现,消失和重新出现。 我想我知道问题是什么: 我们的设置是2 x负载平衡WebServers +单一会话状态数据库。 ASP.NET SQL会话状态存储似乎依赖于IIS网站实例ID(元数据库ID)来唯一标识传入会话Cookie ID和检索/存储值。 每个活动服务器(Web服务器A上的ID / W3SVC / 1 / Root ,Web服务器B上的ID / W3SVC / 2 / Root)上的网站的IIS网站实例ID是不同的。 负载平衡不使用客户端关联,所以每个用户的HTTP请求可以到任一服务器。 因此,当用户login到站点并四处移动时,每个HTTP调用可以转到任一Web服务器,因此根据服务器使用具有不同ID的会话状态logging。 实际上,用户将同时拥有2个独立的会话实例。 我相信我已经validation了这一点,在数据库ASPStateTempSessions表中,每个会话Cookie ID似乎对应于2个几乎相同的命名logging(它们的ID仅相差最后几个字符,我相信它们是基于来自AspStateTempApplications表)创build在几秒钟内。 因此,会话状态将显得不当行为,因为对一个会话logging所做的更改只会对该Web服务器持续存在。 如果用户移动到其他负载平衡服务器,会话值似乎消失或恢复。 我相信解决scheme是同步网站的IIS实例ID(例如,使他们都/ W3SVC / 1 /根 ),但我试图编辑在高级设置下IIS的值,虽然它保存好,它只是使网站在该服务器上返回404s,直到我将其更改回来。 我发现这个问题的VBS脚本 ,但它似乎只用于IIS 6,所以我很担心尝试它。 有其他人在IIS 7.5上遇到这种情况,你是如何解决这个问题的? 编辑/解决scheme 我的错误是,我忘记在IIS中更改站点实例ID后重新启动IIS。 在此之后,ID被更新,ASP.NET会话在两个Web服务器上同步。 完整的说明: 远程桌面到服务器LIVE1上,打开IISpipe理器,点击问题网站,然后select侧边栏中的高级设置 。 将ID更改为唯一的例如10.单击确定。 重新启动Web服务( c:\windows\system32\iisreset /restart ) 为LIVE2做同样的事情(确保Site ID和LIVE1一样) […]

Windows Server 2008 R2上的IIS 7.5可以处理的默认并发请求数是多less?

我在哪里可以find一个设置来改变它?

为什么32位应用程序池在IIS中更高效?

我一直在使用IIS中的两个不同的ASP.NET Web应用程序运行负载testing。 testing用5,10,25和250个用户代理运行。 testing在一个8 GB的RAM,Windows 7旗舰版x64的框。 运行IIS和负载testing项目的同一个框。 我做了很多次运行,数据非常一致。 对于每个负载,如果我在应用程序池中将“启用32位应用程序”设置为True,则会看到较低的“平均页面时间(秒)”和较低的“平均响应时间(秒)”。 负载越高,差异越明显。 在负载非常高的情况下,如果应用程序池是64位的,则Web应用程序开始抛出错误(503),但如果设置为32位,它们可以保持不变。 为什么32位应用程序池更有效率? 为什么不是应用程序池32位的默认值?

存在文件的IIS 404错误

我从我的提供商(Windows 2008 R2,IIS 7.5)有一个新的VPS安装。 默认的网站工作正常:http: http://5.9.251.167/ 我创build了一个新网站,并绑定了http://new.ianquigley.com 在该服务器和该域映射到IP地址的其他任何地方。 (例如ping new.ianquigley.com)。 我创build了子文件夹c:\inetpub\wwwroot\com.ianquigley并创build了一个HTML文件index.html ,内容为“ <html>cake</html> ” 该网站的默认文档是index.html 在服务器上,我浏览到http://new.ianquigley.com/index.html并得到一个404错误。 该网页说: HTTP Error 404.0 – Not Found The resource you are looking for has been removed, had it's name changed, or is temporarily unavailable. Detail: Module: IIS Web Core Notification: HttpRequestHandler Handler: StaticFile Error Code: 0x80007002 Request URL: http://new.ianquigley.com/index.html […]

您是否在生产IIS网站上使用性能计数器?

在重型生产过程中,是否让计数器保持开启状态? 你觉得哪些性能指标对ASP.Net/IIS 6.0网站有用?

我如何保留我们网站的SSL密钥?

我想保留我们网站的SSL密钥。 它存储在2个USB存储棒上,一个放在保险箱里,另一个保持安全。 然后我是唯一一个将它应用到Web服务器的人,因此它是完全安全的。 除… 在IIS上至less可以导出密钥。 所以,任何pipe理员都可以获得密钥的副本。 有没有办法解决? 或者按照定义,所有pipe理员都可以完全访问所有密钥? 更新:我有我完全信任的系统pipe理员。 导致这种情况的原因之一是他们中的一个退出了(他们有一个小时的通勤时间,5分钟到新的通勤时间)。 虽然我信任这个人,但正如我们在某人离开时禁用他们的Active Directory帐户一样,我想我们应该有办法确保他们不能保留使用我们的SSL的能力。 而最简单的是,如果我是唯一拥有它的人。 我们的证书在一月份到期,所以现在是时候改变做法了。 根据答案,看起来我们不能。 因此,这导致了一个新的问题 – 当有人获得证书的时候,获得新的证书并撤销现有的证书是标准做法。 或者,如果离开的人是值得信赖的,那么我们是否继续拥有我们所拥有的证书?