关于风讯系统踢人的一些分析_风讯Cms教程
由于本人一直未碰到这个问题,今晚在给"火星菜鸟"分析时,得出一些结论,以提供给需要这方面资料的朋友们.
首先,系统频繁踢人不是程序问题,至少我在分析代码的过程中没发现.出现这种情况的大多数是把风讯系统放到了虚拟主机上,空间提供商为了顾全自身服务器的安全运作,在一些设置上采取保护措施.比如对"应用程序池"实行限时回收.经过跟踪测试我发现,登陆风讯系统后默认情况下可以遍历到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所对应的站点数目很多,这是很消耗系统内存的。9
- 相关链接:
- 教程说明:
风讯Cms教程-关于风讯系统踢人的一些分析。