h2o*_*ooo 26 php apache session debian fastcgi
出于一些奇怪的原因,就在今天我们的服务器决定在会话开始时非常慢.对于每个session_start,服务器要么在30秒后超时,要么它将花费大约20秒来启动会话.这是非常奇怪的,因为它已经很长时间没有这样做了(我们的服务器最后一次这样做是在大约7个月前).我试图将会话更改为通过数据库运行,而且工作正常,但是,因为我们当前的网站已经构建,所以每个页面都需要几天时间并且更改会话加载以包含新会话处理程序.因此我的问题仍然是:
为什么这么慢,为什么有时呢?
我们在一台专用的hetzner服务器上运行24GB的ram,CPU速度足以运行一个简单的网络服务器(我相信Xeon,但我不确定).我们使用apache + fastcgi + php5设置在服务器上运行debian.
服务器不会通过服务器状态和top命令报告太多负载.Vnstat使用我们的网络链接报告没有任何问题(同样,这不会导致本地会话处理缓慢).IOtop报告处理整个硬盘的过程没有问题.如果通过vim完成,写入会话文件所在的tmp文件夹的速度很快.
再说一次,为了清楚起见,我的主要关注点不是我们是否应该切换到数据库或内存缓存版本的会话,而是简单地问为什么会发生这种情况,因为我看了一下似乎工作正常,除了PHP本身.
编辑:我们的PHP tmp目录中的最大文件是2.9 MB,所以没有什么可以产生影响,我相信.
更新:我从来没有弄清楚出了什么问题和/或如何解决它,但是在我们切换到memcached/db会话后问题就消失了.
Kus*_*ush 15
你试过session_write_close();吗?这将禁用会话变量中的可写功能,但您仍然可以从中读取数据.稍后当您需要编写会话变量时,请重新打开它.
我也遇到了这个问题,但这件事就像一个魅力.这就是我做的:
session_start(); //starts the session
$_SESSION['user']="Me";
session_write_close(); // close write capability
echo $_SESSION['user']; // you can still access it
Run Code Online (Sandbox Code Playgroud)
小智 5
我遇到了同样的问题:服务器突然花了30秒来执行请求.我注意到这是因为session_start().第一个请求很快,但每个下一个请求都需要30秒才能执行.我发现c:\ wamp\tmp中的会话文件被第一个请求锁定了大约30秒.在此期间,第二个请求正在等待文件解锁.我发现它与rewrite_mod和.htaccess有关.我禁用了rewrite_mod并注释掉了.htaccess中的每一行,它再次像魅力一样.我不知道为什么会这样,因为我不记得更改任何设置或在wamp上设置conf.