利立德网络创业联盟 >> 建站实战 >> 网站系统无故踢人的分析(以风讯为例)

网站系统无故踢人的分析(以风讯为例)

利立德网络创业联盟 转载 网友 2007-6-16 22:04:51

我的朝阳沟网站直到现在还经常出现在管理后台无故退出的现象,询问空间商也没有说明白,今天看到这篇文章算是明白了,回头跟他商量商量调整一下。

由于本人一直未遇到这个问题,今晚在给"火星菜鸟"分析时,得出一些结论,以提供给需要这方面资料的朋友们.

首先,系统频繁踢人不是程序问题,至少我在分析代码的过程中没发现.出现这种情况的大多数是把风讯系统放到了虚拟主机上,空间提供商为了顾全自身服务器的安全运作,在一些设置上采取保护措施.比如对"应用程序池"实行限时回收.经过跟踪测试我发现,登陆风讯系统后默认情况下可以遍历到8个Sesstion变量:

 

GetCode
Admin_Style_Num
Admin_Name
Admin_Pass_Word
Admin_Parent_Admin
Admin_Is_Super
Admin_Pop_List
Admin_Add_Admin


被踢的关键原因在于系统的三个关键Session被释放了.

Session("Admin_Name") ,Session("Admin_Pass_Word"),Session("Admin_Is_Super"),Session("Admin_Pop_List")

Session会无故丢失吗?因为用户一般是在不停地操作中被踢的,所以可以排除Session超时的可能(除非部分程序采用了window.open的方式打开窗口,这在少数情况下会发生Session、Cookies丢失的现象)。另外,Session超时时间被设定成10分钟,不会这么快就超时的。

排除以上可能,我们进入下一步:

设置性能应用程序池设置

打开 IIS 管理控制台,单击加号展开本地计算机。
单击加号展开“应用程序池”文件夹。
右击适当的应用程序池,然后单击“属性”。出现应用程序池的属性对话框。
单击“性能”选项卡,然后设置适当的应用程序池设置。
应用程序池“属性”对话框的“回收”和“性能”选项卡分别如下图:


此主题相关图片如下:


此主题相关图片如下:

请分别按上图所示设置。使用虚拟空间服务商提供服务器的朋友请联系服务商进行相应设置。一般情况下应用程序池回收后服务器系统日志里面会记录以下日志:

警告信息:
为应用程序池 'DefaultAppPool' 提供服务的进程 ID 为 3724 的 worker 进程已经请求回收,因为 worker 进程达到了允许的运行时间限制。

这样的话服务器会清空所有采用该应用程序池的站点的Session对象。



按照常规,虚拟空间服务商不会把"应用程序池"设置为"空闲超时"多少分钟而进行回收工作。我估计一般会设置成"内存回收",也就是说,该"应用程序池"下的站点消耗内存达到服务商设置的底线时,服务器就进行应用程序池回收工作。因为我在帮"火星菜鸟"测试时发现,我用自己的代码测试比用风讯系统时被踢的次数明显很少,但也经常被踢。我只是模防被踢原理测试了一下。以下是测试代码:

文件 test.asp

<%
Session("SessionTest") = "Ksir"
Response.Redirect("view.asp")
%>

文件 view.asp

<meta http-equiv="refresh" content="1">
<%
Response.Write(Session("SessionTest"))
%>

 

把这两个文件放到服务器上进行测试时,我得出结论是:服务商在应用程序池上做了手脚。而且"火星菜鸟"的虚拟服务器一个应用程序池PID所对应的站点数目很多,这是很消耗系统内存的。

责任编辑: 阿飞 参与评论
利立德网络创业联盟 2007版权所有 让我们共同创业! greatafei@126.com qq:279669626 豫ICP备05021003号
Powered By: KingCMS 3.0 Beta