IIS的性能优化.docx_第1页
IIS的性能优化.docx_第2页
IIS的性能优化.docx_第3页
IIS的性能优化.docx_第4页
IIS的性能优化.docx_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

IIS的性能优化管理互联网信息服务器(Internet Information Server,IIS)的人们都知道,IIS是一个既简单又麻烦的家伙。简单的是安装它几乎不需要费什么脑筋,选择一下路径,然后一路按“下一步”就可以完成;配置也比较简单,只要有一定的NT和网络知识,照着说明书就可以架设一个像模像样的Web站点出来。然而管理IIS却没有想像的那样简单。使用一段时间以后,管理员往往会遇上服务器性能不良的情况。这时候,IIS的性能优化,就提上日程了。 导致IIS服务性能不良的原因有两个方面。一个是人为的,也就是说管理员在安装、配置IIS的时候没有进行优化或者配置错误。另一个则是客观上的,随着运行的服务种类,以及访问人数的增加,服务器原有的硬件配置已不能满足要求了,这就需要提高硬件配置。 在服务器配置上优化IIS性能 1.IIS高速缓存是对IIS进行优化时要考虑的最重要的项目之一。服务器保留了一部分内存空间用作IIS高速缓存,为将来的请求存储对象,这样IIS就可从高速缓存中检索对象而不用从硬盘中检索。 调整IIS高速缓存的容量需要修改注册表,表项如下: HKEY_LOCAL_MACHINE System CurrentControlSet Services InetInfo Parameters MemoryCacheSize MemoryCacheSize的范围是从0道4GB,缺省值为3072000(3MB)。 IIS通过高速缓存系统句柄、目录列表以及其他常用数据的值来提高系统的性能。这个参数指明了分配给高速缓存的内存大小。如果该值为0,那就意味着“不进行任何高速缓存”。在这种情况下系统的性能可能会降低。如果你的服务器网络通讯繁忙,并且有足够的内存空间,可以考虑增大该值。必须注意的是修改注册表后,需要重新启动才能使新值生效。 2.使IIS使用处理器时间最长。服务器的CPU处理器能力总是有限的。哪一个应用程序占用处理器的时间最长,谁的性能就能得到最大的提高。 (1)在NT的控制面板中,双击系统图标。 (2)单击性能标签。 (3)在应用程序性能下将游标拖到None的位置,这样就可以使所有正在运行的服务,包括IIS,使用处理器的时间达到最大值。 3服务器属性设置。在服务器属性里有一项可以使网络应用程序的总处理能力最大的选项,你当然应该选择它。 (1)在桌面上右键单击网络邻居图标,然后选择属性选项。 (2)单击“服务标签”。 (3)单击“服务器”,然后按“属性”。 (4)选择最大化网络应用程序的总处理能力。然后单击“OK。” 提高硬件配置来优化IIS性能 当进行了上述的优化配置,IIS的性能仍然没有什么明显改善的话,也许你应该考虑提高服务器配置了。然而事关银子问题,老板们一定不会轻易同意,除非你用事实说服他。你必须在首先提高什么硬件配置上面考虑清楚。以下是在进行IIS优化时需要考虑的有关硬件: 处理器:可以升级为速度更快的CPU,还可以再增加一个CPU。但是代价太高了(也许会换主板什么的),老板很难接受。 硬盘:硬盘空间被NT和IIS服务以如下两种方式使用:一种是简单地存储数据;另一种是作为虚拟内存使用。如果使用Ultra2的SCSI硬盘,可以显著提高IIS的性能。 网络接口卡:如果服务器是在企业内部网上运行,那么可以考虑将他的网卡升级为100M网卡。这在网络带宽是瓶颈的情况下特别有效。 内存:增加内存可能是升级系统最简单、最有效的方法。也是笔者推荐的硬件升级首选方案。 那么如何知道需要进行硬件上的升级呢?这就和性能监视器的使用有关了。笔者会在其他文章中描述。在这里作简要介绍:比如你可以利用性能监视器来跟踪服务器上的CPU使用程度。并可以查看由内存调换到硬盘中的页面的数目和频率。将这些信息与内存使用情况以及其他系统信息相结合,就可以得到一张系统性能报告表。如果这些信息一直表现出很高的使用率,那么就说明应该升级硬件设备了。 优化IIS的注意事项 为了避免以后的头疼,在安装IIS之时就应该注意到IIS的优化。比如: 1为了提高性能和节约资源,应该只运行需要的协议。这一点很多管理员都没有注意,笔者曾见到在一台只作Web服务的机器上同时安装有NetBEUI、Tcp/IP和IPX协议。显然这是不合理的。 2应该将IIS服务器,设置为独立的服务器,不要让服务器去承受域控制器要求的额外负荷。试想:服务器一边在响应用户的登录,一边还要提供IIS服务,性能能不下降吗? 3可以把NT服务器的页交换文件分布到多个物理磁盘上,注意是多个“物理磁盘”,分布在多个分区上是无效的。另外,不要将页交换文件放在与WIndows NT引导区相同的分区中。 4使用磁盘镜像或磁盘带区集可以提高磁盘的读取性能。 5关于日志的记录,应该采用文件记录而不是记录到ODBC数据源。此外,还可以在记录期间增加用来记录日志的内存缓冲区的容量来减少磁盘的活动。该缓冲区的缺省容量值为64KB。 6最好把所有的数据都储存在一个单独的分区里。然后定期运行磁盘碎片整理程序以保证在存储Web服务器数据的分区中没有碎片。使用NTFS有助于减少碎片。笔者推荐使用Norton的Speeddisk,可以很快地整理NTFS分区。 7虽然SSL可以提供相当可靠的加密传输。但是所需的额外开销会导致IIS服务器速度下降,尤其是在处理大型文件的时候。所以应该只对确实需要保护的目录进行SSL加密。IIS的性能优化关键词: IIS 性能优化 微软的IIS是目前最快的WEB SERVER,但如果要让IIS承受高负载,还必须对IIS进行很多设置,举几个比较常用的:1在Windows2000 Server中,把IIS中将WEB站点的性能调整设置为最大,在一定程度上可避免由于同时访问人数太多而服务死掉的现象。 方法:进入Internet服务管理器,在维站点上点右键属性性能,将性能调整设置为最大,如下图所示。 2修改注册表,突破IIS极限线程256限制。IIS默认的支持最大线程数是256,我们可以通过修改注册表来加大这个线程数。 方法:在注册表中找到下面分支 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesInetInfoParameters在其中新建一个双字节值,命名为“PoolThreadLimit”,键值为十进制“500”或“1000”。如下图所示。 3对多站点服务器设置所在站点主目录的应用程序保护为“高(独立的)”,可防止内存冲突。如下图所示。、禁用不必要的服务 开始-运行-services.msc TCP/IPNetBIOS Helper提供 TCP/IP 服务上的 NetBIOS 和网络上客户端的 NetBIOS 名称解析的支持而使用户能够共享 文件、打印和登录到网络 Server支持此计算机通过网络的文件、打印、和命名管道共享 Computer Browser 维护网络上计算机的最新列表以及提供这个列表 Task scheduler 允许程序在指定时间运行 Messenger 传输客户端和服务器之间的 NET SEND 和 警报器服务消息 Distributed File System: 局域网管理共享文件,不需要可禁用 Distributed linktracking client:用于局域网更新连接信息,不需要可禁用 Error reporting service:禁止发送错误报告 Microsoft Serch:提供快速的单词搜索,不需要可禁用 NTLMSecuritysupportprovide:telnet服务和Microsoft Serch用的,不需要可禁用 PrintSpooler:如果没有打印机可禁用 Remote Registry:禁止远程修改注册表 Remote Desktop Help Session Manager:禁止远程协助 Workstation 关闭的话远程NET命令列不出用户组 以上是在Windows Server 2003 系统上面默认启动的服务中禁用的,默认禁用的服务如没特别需要的话不要启动。iis内存占用过大的问题在IIS6下,经常出现w3wp的内存占用不能及时释放,从而导致服务器响应速度很慢。 今天研究了一下,可以做以下配置: 1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。 2、设置应用程序池的回收时间,默认为1720小时,可以根据情况修改。同时,设置同时运行的w3wp进程数目为1。再设置当内存或者cpu占用超过多少,就自动回收内存 一般来说,这样就可以解决了。但仍然会出现个别网站因为程序问题,不能正确释放。 那么,怎么样才能找到是哪一个网站的? 1、在任务管理器中增加显示pid字段。就可以看到占用内存或者cpu最高的进程pid 2、在命令提示符下运行iisapp -a。注意,第一次运行,会提示没有js支持,点击确定。然后再次运行就可以了。这样就可以看到pid对应的应用程序池 3、到iis中察看该应用程序池对应的网站,就ok了解决iis内存占用过大的问题突破iis6.0上传文件的200kb限制在windows 2003中的iis6.0,预设置的文档上传最大大小是200kb,在上传超出该限制的文件时,会产生失败信息.解決的方法如下:用文本编辑器打开 C:windowssytem32inetservmetabase.xml找到字符串 AspMaxRequestEntityAllowed 表示请求的最大字节204800 (200KB) 改成你要的大小在某些下载方式中,可能也会有大小超出的情况,可以修改同一文件的 AspBufferingLimit ,预设的是 4MB突破iis6.0上传文件的200kb限制IIS设置远程分析远程确定目录权限 让我们打开一个IIS服务器来看看。在IIS 服务管理器中,选择一个目录,看他的属性 在目录属性项有有这么一些选项(日志访问和索引此资源不计): 脚本资源访问:对网站的脚本可以读取原文件。 读取 读取目录里面的静态资源。 写入 用户可以建立以及删除资源 目录浏览 用户可以浏览目录内容。 应用程序设置的执行许可中有三个选项: 无 只能访问静态页面 纯脚本 只允许允许脚本如ASP脚本 脚本和可执行程序 可以访问和执行各种文件类型 那么,如何确定服务器上面的这些开关设置呢? 别着急,一个一个来。 执行权限 如何确定某个目录是否开了执行权限呢?很简单,向服务器发送一个下面得请求: http:/iis-server/dir/no-such-file.dll /dir/为要判断得目录,no-such-file.dll是随便取得一个名字,服务器上面没有这个文件。 服务器对我们得请求会返回一个信息。如果返回的是一个500错误: HTTP 500 - 内部服务器错误 (Internal Server error) 那么就说明这个目录的执行权限是开着的。 对于服务器,能不开执行权限的就不要开。特别是虚拟目录的执行权限,大家想一想UNICODE和二次解码漏洞的利用过程就明白了。 如果服务器返回的是一个 404 错误: HTTP 404 - 未找到文件 那么就说明这个目录的执行权限没有开。 写权限 测试一个目录对于web用户是否具有写权限,采用如下方法: telnet 到服务器的web端口(80)并发送一个如下请求: PUT /dir/my_file.txt HTTP/1.1 Host: iis-server Content-Length: 10 这时服务器会返回一个100( 继续)的信息: HTTP/1.1 100 Continue Server: Microsoft-IIS/5.0 Date: Thu, 28 Feb 2002 15:56:00 GMT 接着,我们输入10个字母: AAAAAAAAAA 送出这个请求后,看服务器的返回信息,如果是一个 201 Created响应: HTTP/1.1 201 Created Server: Microsoft-IIS/5.0 Date: Thu, 28 Feb 2002 15:56:08 GMT Location: http:/iis-server/dir/my_file.txt Content-Length: 0 Allow: OPTIONS, TRACE, GET, HEAD, DELETE, PUT, COPY, MOVE, PROPFIND, PROPPATCH, SEARCH, LOCK, UNLOCK 那么就说明这个目录的写权限是开着的,反之,如果返回的是一个 403 错误,那么写权限就是 没有开起来,如果需要你认证,并且返回一个 401(权限禁止) 的响应的话,说明是开了写权限,但是匿名用户不允许。 如果一个目录同时开了”写”和“脚本和可执行程序”的话,那么web用户就可以上传一个程序并且执行它,恐怖哦%#$! 纯脚本执行权限 这样的目录就太多了。很多不需要给执行权限的目录也被管理员给了脚本执行权限,我记得在 shotgun的一篇文章里面他说过:最小的权限最少的服务 最大的安全 ; 一点也没有错。给目录任何多余的权限都是没有必要的。判断一个目录是否可以执行纯脚本文件也很简单,发送一个如下一个请求: http:/iis-server/dir/no-such-file.asp 返回404文件不存在说明有执行权限,返回403则是没有开。 浏览目录权限 判断一个目录是否允许浏览可能需要一点点小技巧,但是,在网站的默认首页(如:default.asp)不存在的话,那么就再简单不过了。 在浏览器里面输入: http:/iis-server/dir/ 如果权限开着的,那么会返回200响应,并且列出当前目录里面的内容,反之,没有列出目录的话就是关了。 但是,如果默认页面default.asp存在呢?敲入上面的地址就直接打开这个页面了。别急, WebDAV 里面有一个请求方法叫:PROFIND。这个方法使得我们可以从服务器资源里面得到一些如文件名,创建时间,最后修改时间等等的信息。利用它我们也可以绕过 default.asp 来判断目录浏览权限的情况, telnet到IIS-server的web端口,发送如下请求: PROPFIND /dir/ HTTP/1.1 Host: iis-server Content-Length: 0 这时,服务器会送回一个207 Multi Status的响应,如果目录是允许浏览的,那么同时会列出目录里面的资源以及他们的属性。如果目录浏览不允许,返回的信息就会少的多。目录浏览一般来说只能算是一个低危险等级的漏洞,比如一个images目录,里面除了图片没有别的东西了,那对于服务器的安全就没有什么危害,但是,如果目录里面放了一个管理页面adminpage.asp或者一些数据库连接信息文件,可能会导致你的服务器拱手相让给入侵者。 读权限 判断这点很容易,发一个带 txt文件的请求就可以: http:/iis-server/dir/no-such-file.txt 如果返回一个 404 文件不存在的响应,就说明读权限是开着的,反正,返回403错误则说明都权限没有开。早几年接触安全的人一定知道 :$DATA泄露ASP源代码的漏洞,其实如果一个目录里面权势asp脚本的话,那么读权限也可以不用开的,ASP只需要脚本执行权限就可以了。 IIS 认证方法的判断 这个漏洞是最近才公布出来的,IIS服务器支持匿名访问,基本认证和使用NTLM方式的windows集成认证,如果客户端发送一个包含认证信息的请求,IIS就会强行的尝试用这些认证信息取认证,并且放回不会的响应。这样我们就能够确定IIS的认证的配置。 要确定IIS是否支持基本认证,可以telnet到服务器的80端口,发送如下请求: GET / HTTP/1.1 Host: iis-server Authorization: Basic c3lzdGVtOm1hbmFnZXIA 这是一个基本认证的请求,里面包含了一个base 64编码的用户ID和PASS,Basic后面那串字符经过base 64解码以后就是 system:manager 。如果服务器返回一个401信息,则说明基本认证选项是开着的。如果返回200信息,则有2种可能,基本认证选项没有开或者是服务器存在一个用户名是 system的用户名,并且密码是manager (猜中的话,行大运啦)。 要确定NTLM选项是否开启则可以向IIS发送如下请求 GET / HTTP/1.1 Host: iis-server Authorization: NegotiateTlRMTVNTUAABAAAAB4IAoAAAAAAAAAAAAAAAAAAAAAA= 同样,如果返回401消息,则说明支持NTLM,返回200说明不NTLM认证选项没有开启。 对于大多数网站来说,这两种认证方式都是不需要开起的来,他们有可能泄露一些服务器的重要信息。 泄露内部IP地址信息 如果IIS服务器在一个使用NAT的防火墙里面的话,通常都有个内部地址如10.x.x.x。 如果IIS开启了基本认证选项,那么发送如下一个简单的请求就可以得到服务器的内部IP: GET / HTTP/1.1 Host: Authorization: Basic c3lzdGVtOm1hbmFnZXIA 服务器将返回一个如下响应: HTTP/1.1 401 Access Denied Server: Microsoft-IIS/5.0 Date: Fri, 01 Mar 2002 15:45:32 GMT WWW-Authenticate: Basic realm= Connection: close Content-Length: 3245 Content-Type: text/html 那个就是机器的内部ip地址,本来realm的值是客户端提供给的一个主机头,但这里它是空的,所以IIS就选择了本机的IP地址来代替。同样的,利用PROPFIND,WRITE,MKCOL等请求的返回信息,也能泄露主机的一些信息,如我们向服务器提请下面这样一个请求: PROPFIND / HTTP/1.1 Host: Content-Length: 0 在IIS配置成使用主机名(见后)的情况下,则不会暴露主机的IP地址,但是会暴露NetBIOS名。事实上我们可以利用IIS的认证获得更多的信息,如所在域的名字,方法是向服务器发送如下带NTLM认证的请求: GET / HTTP/1.1 Host: iis-server Authorization: NegotiateTlRMTVNTUAABAAAAB4IAoAAAAAAAAAAAAAAAAAAAAAA 服务器会返回一个信息: HTTP/1.1 401 Access Denied Server: Microsoft-IIS/5.0 Date: Fri, 01 Mar 2002 16:24:58 GMT WWW-Authenticate: Negotiate TlRMTVNTUAACAAAADAAMADAAAAAFgoKgeGvyVuvy67U AAAAAAAAAAEQARAA8AAAAUwBDAFkATABMAEEAAgAMAFMAQwBZAEwATABBAAEA DABTAEMAWQBMAEwAQQAEAAwAUwBDAFkATABMAEEAAwAMAFMAQwBZAEwATABB AAAAAAA= Content-Length: 3245 Content-Type: text/html 那一长串字符就包含了主机名和NT所在域的名字的base 64 编码。 临时解决方法:在cmd下进入c:inetpubadminscripts或者是adminiscript所在目录执行一下命令 adsutil set w3svc/UseHostName True net stop iisadmin /y net start w3svc 默认应用程序映射判断 判断默认映射是否存在比较简单,这里只简单的给出了在映射存在的情况下对于相应请求的响应: 扩展名: .printer 请求: http:/iis-server/foo.printer 响应: HTTP 500 - 内部服务器错误 扩展名:.idc 请求:http:/iis-server/foo.idc 响应: code 500 Internal Server Error 扩展名:.idq 请求:http:/iis-server/foo.idq 响应码:200 OK 响应:找不到 IDQ 文件 D:dirfoo.idq 扩展名:.ida 请求: http:/iis-server/foo.ida 响应码:200 OK 响应: 找不到 IDQ 文件 D:dirfoo.ida 扩展名:.htr 请求: http:/iis-server/foo.htr 响应: HTTP 404 - 未找到文件 扩展名:.htw 请求: http:/iis-server/foo.htw 响应码: 200 OK 响应: QUERY_STRING 的格式无效 扩展名:.stm 请求: http:/iis-server/foo.stm 响应: HTTP 404 - 未找到文件 扩展名:.shtm 请求: http:/iis-server/foo.shtm 响应: HTTP 404 - 未找到文件 扩展名:.shtml 请求: http:/iis-server/foo.ida 响应:HTTP 404 - 未找到文件 判断操作系统是否为个人版本(Professional/Workstation ) IIS安装在windows2000专业版和NT workstation上面时候,同时进行的连接数最大为10个,利用这一点我们可以简单判断操作系统版本:创建10个 HTTP 1.1的持续连接,第11个连接请求将放回403错误信息。 后话:由于各种原因,我所在的公司关门大吉了,没有工作,心就乱糟糟的,所以翻译的时候也是砍头去尾的,大家不要骂我,我拿去黑客防线骗稿费的啦。如果有不明白的地方可以参考以下几篇: /papers/iisrconfig.pdf 英文原文 /advisories/iisauth.txt /advisories/iisip.txt突破iis的内存限制在缺省状态下,Windows 2003服务器中的IIS不会对应用程序进程所使用的系统内存资源进行自动回收,这样随着网站运行时间的增长,网站服务器中的有限内存资源将越用越少,直到内存资源被完全耗用掉为止,此时整个网站系统也将处于瘫痪状态。为了有效避免网站系统发生瘫痪现象,我们可以巧妙借助应用程序池来让IIS定时回收不需要的工作进程,以便改变IIS6.0对内存资源的默认限制,以保证网站系统一直能稳定、高速地运行。下面就是改变内存默认限制、设置回收进程的具体实施步骤:首先从“开始”菜单中逐一单击“设置”、“控制面板”选项,再用鼠标双击其后界面中的“管理工具”项目,接着再双击管理工具列表界面中的“Internet信息服务管理器”选项,进入到系统的IIS控制台界面。在IIS控制台界面的左侧区域逐一展开“本地计算机”/“应用程序池”/“DefaultAppPool”选项,再用鼠标右键单击一下“DefaultAppPool”选项,然后从弹出的右键菜单中执行“属性”命令,打开该选项的属性设置窗口。单击该设置窗口中的“回收”选项卡,打开如图2所示的选项设置页面;将其中的“回收工作进程(分钟)”复选项选中,并在对应该选项的文本框中输入一个具体数值,以便通知IIS自动将多长时间不活动的应用程序进程回收掉。下面再选中“回收工作进程(请求数目)”项目,并在对应该选项的文本框中再输入一个具体的数值,来指定IIS系统接受到多少请求后就能开始回收应用程序进程了。考虑到IIS在回收应用程序进程时也会占用不小的系统资源,所以为了与网站访问高峰期时间错开,我们还需要将“在下列时间回收工作进程”项目选中,同时单击一下“添加”按钮,来指定一个网站处于空闲状态的时间来开始回收应用程序进程,正常情况下我们可以将该时间设置为深夜2点左右。接下来在IIS控制台界面中,用鼠标右键单击一下目标网站名称,从其后的右键菜单中选择“属性”选项,再单击目标网站属性界面中的“主目录”选项卡,并检查对应选项设置页面中的应用程序池是否被设为了“DefaultAppPool”,要是不是的话我们可以重新将它调整过来。完成上面的所有设置操作后,再重新启动一下系统的IIS服务,这样我们的ASP网站就能一直高速地运行了。突破iis的资源限制要是我们的ASP网站放置在一台性能配置较差,并且安装有Windows 2000操作系统的服务器中时,IIS在缺省状态下处理网站访问请求的效率肯定会十分低下,这样访问者访问ASP网站的速度就不会很快;为了让访问者更流畅地访问目标网站,我们可以按如下方法突破系统的资源限制,让IIS尽可能地高效处理网站访问请求:依次单击“开始”/“程序”/“管理工具”/“Internet服务管理器”选项,打开“Internet信息服务”管理界面,用鼠标左键展开该界面左侧区域的主机名,并在对应该主机下面的站点列表中,选中自己需要管理的目标ASP网站,再用鼠标右键单击一下该网站,并执行右键菜单中的“属性” 命令,在其后出现的属性设置界面中,单击“主目录”选项卡。下面在对应“主目录”的选项设置页面中,单击“应用程序保护”设置项处的下拉按钮(如图3所示),再从对应的下拉列表框中将“低(IIS进程)”项目选中,并单击一下“确定”按钮,这样的话IIS服务器日后处理访问请求的效率将会提高20%左右。为了让ASP网站耗用更少的空间资源,我们还可以单击ASP网站属性设置界面中的“Web站点”选项卡,并将对应该选项设置页面中的“启用日志记录”项目取消选中,这样就可以让IIS服务器不需要腾出有限的空间资源去保存每一个访问连接记录,如此一来也能确保IIS服务器以更高效的状态来处理各类网站访问请求信息。除此而外,选中“Web站点”选项设置页面中的“启用保持HTTP激活”项目,也能在一定程度下提高ASP网站处理访问请求信息的效率。当然,要想让ASP网站处理效率更高的话,最好将网站架设在性能较高的专用服务器系统中,或者给自己的服务器增加多个CPU,这样的话运行效果会更明显一些!解决w3wp.exe占用CPU和内存问题在WINDOWS2003+IIS6下,经常出现w3wp的内存占用不能及时释放,从而导致服务器响应速度很慢。 今天研究了一下,可以做以下配置: 1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。 2、设置应用程序池的回收时间,默认为1720小时,可以根据情况修改。同时,设置同时运行的w3wp进程数目为1。再设置当内存或者cpu占用超过多少,就自动回收内存 一般来说,这样就可以解决了。但仍然会出现个别网站因为程序问题,不能正确释放。 那么,怎么样才能找到是哪一个网站的? 1、在任务管理器中增加显示pid字段。就可以看到占用内存或者cpu最高的进程pid 2、在命令提示符下运行iisapp -a。注意,第一次运行,会提示没有js支持,点击确定。然后再次运行就可以了。这样就可以看到pid对应的应用程序池 3、到iis中察看该应用程序池对应的网站,就ok了。 问:我的具体情况是这样的: 服务器配置 至强2.8G 内存512M SCSI硬盘 2块 (软镜像) 系统 windows 2003 现在挂了一个开发的网站 访问量不大 但是出现一个 问题就是 每当服务器运行2-3天后 访问网站就特别慢 重启动服务器后就 正常了 查看进程使用内存的情况 发现w3wp.exe 和sqlservr.exe 进程 占用内存 相当大 达到了170多M( 每个) 物理可用内存几乎用光 (服务器重启动时 占用的内存很小才40多M 每个) 以前网站挂在一个虚拟机上 数据库是分开挂的 从没出现这种情况 后来 原版移植到新服务器上就 出现这样的问题 还个一问题就是 我在SQL企业管理器中查看SQL进程 发现有很多是 。net 引起的进程是sleeping 但是却占用了内存 无法释放 搞了很久了 一直都没解决 求救请高手 指教 万分感谢 答:IIS服务管理器-应用程序池-添加你的应用,并设置最大内存,当程序达到最大内存后其会自动重启。 我的问题跟你一样,不过我的内存是2G的,访问量比较高,一般是差不多运行24小时后就得重启,内存没耗完,W3WP进程占到一百八九十兆,SQL占了二百多兆时,就得重启,不然整个站点就当在那边.55555555,搞了快半个月了还是不行,痛苦啊 w3wp.exe就是你的ASP.NET应用宿主,如果你使用了大量的Session、Cache等资源,并且Session超市时间很长,那么内存占用量就比较大。应用池是为增加性能而设的一个特性,但是也消耗很大的内存。另外关掉Windows Server 2003里的大多数Service(那个不用都可以关掉),也可以节省一部分内存 1.怀疑在程序中应用的CACHE, 2.CACHE中有大量的数据 3.频繁刷新CACHE 4.没有设计好CACHE的方式 你的问题我以前也遇见过,我以前是用的Session,后我全部改成cook之后就好多了,应该是你的Session或是你的CACHE有问题(CACHE不太懂,但多多少应该是有的) 跟踪下SQL的调用记录,在每次往CACHE或SESSION写入大量数据时记录一下时间,看是否太过频繁 1.在win2003里的进程就是w3wp.exe 2.512M内存个人用是够用了,但是放在服务器上就有点不够用了,尤其是win2003 + +sql server 。尤其是sql server 他是很吃内存的,如果不控制的话,他会占光所有的物理内存(只剩下几十M 倒 100M 吧)。win2003 本身就要占用150M左右。也就剩不下什么了。 3.优化程序,就向楼上的说的那样,少用或不用session cache application之类的东西,再有就是是不是有翻页的地方,翻页处理不好也是会占很多内存的。 4.限制sql的内存。企业管理器SQL的属性(一般是local)“内存”标签 在这里看内存的设置,把最大值改成100M吧。 第四条是最快的方法,可以试一试。 我的一个自开发OA系统也存在这样的问题。 总结上面,大概原因是因为 session 和 cache 的不合理使用造成的。 我的应用程序中,确实用了很多的Session 和 Cache, 在 MSDN 中找到 了 “动态内存分配”这一篇,今天就试看看,是否有效。 希望有经验的朋友多给些信息,大家也好总结下出现类似错误的原因,谢谢! 不知道你是什么网站。按理说是不会占用这么大的。如上你用了cache存放了超额的内容。当然。象session这种是不太可能占用这么大的了,或用了application 类似的一些有超长时间或永久保持性的对象来保存大量数据。如利用单例保存数据这些都有可能造成使用大量的内存。 建义2003系统安装至少1G内存。 w3wp.exe是2003下的一个iis进程,至于楼主说的sql占用内存,那有可能是因为你的sql没有设置占用内存上限 在IIS6下,经常出现w3wp.exe的内存及CPU占用不能及时释放,从而导致服务器响应速度很慢。 解决内存占用过多,可以做以下配置: 1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。 2、设置应用程序池的回收时间,默认为1720小时,可以根据情况修改。再设置当内存占用超过多少(如500M),就自动回收内存。 解决CPU占用过多: 1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。 2、设置应用程序池的CPU监视,不超过25%(服务器为4CPU),每分钟刷新,超过限制时关闭。 根据w3wp取得是那个一个应用程序池: 1、在任务管理器中增加显示pid字段。就可以看到占用内存或者cpu最高的进程pid 2、在命令提示符下运行iisapp -a。注意,第一次运行,会提示没有js支持,点击确定。然后再次运行就可以了。这样就可以看到pid对应的应用程序池。(iisapp实际上是存放在C:windowssystem32目录下的一个VBS脚本,全名为iisapp.vbs,如果你和我一样,也禁止了Vbs默认关联程序,那么就需要手动到该目录,先择打开方式,然后选“Microsoft (r) Windows Based Script Host

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论