夜勿眠 发表于 2015-8-14 11:05:19

IIS运行一段时间后产生频繁停止服务,解决问题的方法

  总结一下我的问题:无论是IIS 还是APACHE都是再运行一段时间后产生频繁停止服务,解决问题的唯一方法是1,重启web服务 2 重启服务器! 杀毒、重装IIS 重装APACHE 都无济于事。排除 病毒、网络、软件(IIS APACHE)等问题 后只剩下服务器本身。(要排除这些问题我做了N多尝试吖 可怜)
  分析:系统服务都需要内存、CPU等支持更何况WEB服务,web服务是根据访问量的大小自动分配内存和cup,访问量大当然内存使用就要大。 因每次发生问题的时候80端口连接数都在几十个左右,原先没有这种问题的时候论坛在线人数都在100以上。我就猜想会不会因为内存不够而造成继续增大的访问量把web服务冲垮了呢?
  因我每次操作服务器都是通过pcanywhere,虽然网速比较快,但跟本地超作还是有比较大的延迟 所以没感觉出服务器运行慢, 昨天到机房实地操作服务器发现运行程序硬盘要转一会才能出来。检查系统性能发现MSsql占用内存800多M,剩余才十几M 这就更加肯定了我的想法。 可是没办法 这台服务器必须运行mssql2000 增大物理内存是不可能的,没办法还是只能对mssql下手!以下是网上找到的为什么mssql内存占用大的原因:
“........公司用的也是SQLServer,DB server有将近2G的memory,可SQLServer的内存占用率总能轻松达到1.5G左右这是怎么一回事?
  首先,我们来看看MSSQL是怎样使用内存的。最大的开销一般是用于数据缓存,如果内存足够,它会把用过的数据和觉得你会用到的数据统统扔到内存中,直到内存不足的时候,才把命中率低的数据给清掉。所以一般我们在看statistics io的时候,看到的physics read都是0。
    其次就是查询的开销,一般地说,hash join是会带来比较大的内存开销的,而merge join和nested loop的开销比较小,还有排序和中间表、游标也是会有比较大的开销的。所以用于关联和排序的列上一般需要有索引。
  再其次就是对执行计划、系统数据的存储,这些都是比较小的。我们先来看数据缓存对性能的影响,如果系统中没有其它应用程序来争夺内存,数据缓存一般是越多越好,甚至有些时候我们会强行把一些数据pin在高速缓存中。但是如果有其它应用程序,虽然在需要的时候MSSQL会释放内存,但是线程切换、IO等待这些工作也是需要时间的,所以就会造成性能的降低..........."
  最后我限制了mssql的最大内存使用 设置在500M后到现在2天了 web服务就没有停止过。 观察内存使用情况 原先apache停止服务都是在使用内存20M的时候完蛋的。现在观察Apache已经使用了近60M!唉 内存问题造成了我这么长时间的烦恼!
  希望这点经验能给以后有这类情况的朋友带来帮助!
页: [1]
查看完整版本: IIS运行一段时间后产生频繁停止服务,解决问题的方法