樓主是要重現,樓上還減壓。那怎麼重現。單獨創建一個頁面,裡面生成session。
然後用多臺server apache ab 並發連接。
目的模擬多用戶並發。

解决方案 »

  1.   


    用过了,可是ab达不到我想要的效果,session没失效,而且使用ab -n10000 -c 1000 的时候,每一次我 ps aux|grep httpd 查看到的进程数只有13个左右,因为这个页面处理速度太快了,进程刚创建就结束了,所以其实达不到真实的并发1000的效果(并发也就十几而已)。后来我写shell并发写入文件,并发数达到几十个,也达不到文件IO过大导致文件丢失的效果
      

  2.   

    太快了?你不会 sleep 一下么?不过你的这种测试有什么用?
    无论是 ab 还是 shell 都不能接收和发送 cookie 吧?没了 cookie 你怎么知道 session 丢失了呢?
      

  3.   


    首先,我试过sleep了,可是后来想了,sleep操作知识让脚本停在那里,这多出来的sleep时间没有操作所以对并发的意义不大吧。如果session丢失的原理是多文件高并发写入IO过大导致的session丢失,那么我用命令行并发执行多个数据的写操作,如果部分文件丢失了是否就能一定程度上证明session丢失的原理呢?
      

  4.   

    我说用 sleep 是针对你 #3 "这个页面处理速度太快了,进程刚创建就结束了" 而言的。
    你用 ps aux|grep httpd 观察到的只是正在运行的进程,不能说明任何问题你 #5 的 如果部分文件丢失了是否就能一定程度上证明session丢失的原理呢?
    这个前提就是有问题的,文件未能建立果然是一种原因,文件存在却又读不出来才是根本的
    有时能读出,有时不能读出,这才叫“丢失”
      

  5.   


    首先,我试过sleep了,可是后来想了,sleep操作知识让脚本停在那里,这多出来的sleep时间没有操作所以对并发的意义不大吧。如果session丢失的原理是多文件高并发写入IO过大导致的session丢失,那么我用命令行并发执行多个数据的写操作,如果部分文件丢失了是否就能一定程度上证明session丢失的原理呢?我也碰到这个问题了,多文件高并发写入IO过大导致的session丢失,但文件不会丢失,下面是我的测试程序,监测session变化你得另写个文件
    我怀疑跟服务器硬件有关,在我电脑上怎么测session都不会丢,在服务器上一下就丢了,我的服务器是vps,内存很低
    希望有更多人关注这个问题
    <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
    <%option explicit%>
    <% Response.CodePage=65001%>  
    <% Response.Charset="UTF-8" %> 
    <%
    Dim test, filepath, data
    data = "中华人民共和国"
    dim i
    for i = 1 to 1000
    filepath = server.MapPath("\test\" & i & ".asp")
    response.write filepath & "<br>"
        Call wf(filepath, data)
    next
    set test = nothing


    Function wf(ByVal path, ByVal content)
    Dim m_fso, m_txt
    Set m_fso = server.CreateObject("Scripting.FileSystemObject")
    Set m_txt = m_fso.OpenTextFile(path, 2, True)
    m_txt.Write (content)
    m_txt.Close
    Set m_fso = Nothing

    wf = True

    If Err Then
    wf = False
    End If
    End Function
    %>
      

  6.   

    晕,我在写文件程序中加了一段for循环session就不丢了
    但是这不是解决之道啊
    for j = 1 to 500000
    next