IIS 崩溃跟重复提交数据有关系?
项目类型:CRM
使用范围:公司内部
运行环境:
一台web应用放在window server 2008 iis7.0 (64位系统,20G内存,8核CPU)
一台数据库服务器mssql 2008
项目架构: spring.net + nhibernate + asp.net mvc 4.0 + mssql2008 + extjs4.0
使用人数: 150-250左右
备注:
1.由于用的是ExtJs,所以有些操作,一般查询就要发送好几次请求,大概4-5次左右
2.web应用服务器除了web程序意外,还有一个socket 监听程序,是一个中介程序,分别跟两个不同的Socket连接端交互通许,不知道这个是否对IIS有影响
主要状况:IIS 经常崩溃,是整个IIS进程(World Wide Web Publishing Service) 死掉,这是最严重的,有时候就是应用程序池或站点自动停止掉。
情况:
1.在线用户少的时候没有那么容易挂掉,晚上大概有几个人在使用,10点-1,2点也会挂;
2.查看系统日志,在IIS挂掉的时候都捕捉了一些警告信息(不知道怎么解决):
为应用程序池“xxxxx”提供服务的进程在与 Windows Process Activation Service 通信时出现严重错误
3.查看系统日志,有一些警告信息,都是一些asp.net 程序的错误,一般都是查询啊,空引用之类的问题。
4.IIS应用池设置了快速故障防护,在观察系统日志的时候,由于asp.net 程序错误的次数慢慢累积到默认的10次就自动关闭掉站点,所以就设置了200,但还是挂掉
5.提交表单没有做重复验证,后来在实现防止短时间内重复提交多次表单,测试的时候(短时间内多次点击提交按钮),发现本地开发机器的IIS 也同样崩溃了,也出现跟 第2点 的警告信息,然后尝试重启IIS 服务,但是上面启动的按钮已经变灰了,不能启动,等过了几分钟以后又可以重启了。
6.根据 第5点 情况,把一些提交表单的地方都加了防止多次提交的处理(客户端JS+服务端的拦截),之后就有一天没挂掉过,(ps:现在是第二天早上)。
7.系统有导出数据的功能,就是使用FileHelper 来导出Excel数据,需要直接操作Excel COM 组件的,这个有关系?
8.现在只是项目刚刚上线,在做开发的时候是没有针对这方面去做优化,例如使用存储过程去解决并发性的问题。
9.曾经怀疑过是Session占用过多内存,把Session 的实现方式也改了,改成是服务进程,这个服务进程是跟数据库服务器放在一起的。结果还是一样会挂掉。
问题:
1.真的是因为 第5点 的原因导致IIS崩溃?
2.如果是 第5点 的原因,那IIS也太脆弱了吧?
3.有其他原因吗?例如网络硬件上
4.按照目前的运行环境,IIS能支撑多少人?怎么相对准确统计在线人数,并发数?(系统自带的性能检测,计数器可以统计吗?我好像没有找到)