-->

在session_start似乎很慢(但只是有时)(session_start seems to b

2019-06-24 02:14发布

对于一些奇怪的原因,就在今天我们的服务器决定是会话的启动过程中很慢。 对于每一个在session_start,服务器或者超时30秒后,或者它会需要大约20秒以开始会话。 这是很奇怪的,看到它没有这样做了很长一段时间(最后一次我们的服务器做了,这是大约6个月前)。 我试图改变通过数据库来运行,而不是在会议上,并能正常工作,但是,由于我们目前的网站建成后,它会需要几天去每个页面上,改变会议的加载,包括一个新的会话处理程序。 因此,我的问题是:

为什么这么慢,为什么只是有时?

我们与24GB的RAM的专用HETZNER服务器上运行,并且CPU速度不够快,只需运行一个简单的网络服务器(至强,我相信,但我不知道)。 我们与Apache + FastCGI的+ PHP5安装在服务器上运行Debian。

服务器不报告大的负荷,无论是通过服务器的状态,以及在top命令。 Vnstat任何报告没有问题,我们的网络链接(同样,这将不会导致一个缓慢的本地会话处理)。 IOtop报告与进程接管整个硬盘没有问题。 写在会议文件位于tmp的文件夹,如果通过vim的完成工作快。

再次,要明确这一点,我在这里主要关注的不在于我们是否应该切换到DB或会话的内存缓存的版本,它只是要问,为什么出现这种情况,因为一切我看看,似乎是做工精细,除了PHP本身。

编辑 :在我们的PHP tmp目录下的文件最大为2.9 MB,所以有什么话要给人眼前一亮的,我相信。

更新 :我也从来没有弄清楚什么是错误的和/或如何解决它,但问题就消失了,我们切换到分布式缓存/数据库会话之后。

Answer 1:

你有没有试过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


Answer 2:

我有同样的问题:突然的服务器花了30秒,执行请求。 我注意到,这是因为在session_start()。 所述第一请求是速度快,但每个下一请求采取了一些30秒被执行。 我发现,在c会话文件:\瓦帕\ TMP是由大约30秒在第一次请求锁定。 在此期间,第二请求等待文件解锁。 我发现它有一些东西需要与rewrite_mod的.htaccess。 我禁用rewrite_mod和注释掉在.htaccess中的每一行并再次将其就像一个魅力。 我不知道为什么这个happend因为我不记得改变WAMP任何设置或CONF。



Answer 3:

我就遇到了这个问题了。 有人在这里找到答案:

与函数在session_start(问题)(慢腾腾)

会议由PHP当一个脚本执行锁定,因此,如果脚本在同一会话下堆积,他们可能会导致这些令人惊讶的长延迟。



Answer 4:

每次会议由Apache作为一个文本文件存储。

当会议开始时使用恢复现有的会话(例如经由Cookie标识符)也许一个大会议文件(有很多的内容会话内)可能会很慢启动?

如果是这样的话可能是你的应用程序将要多的数据到会话。



Answer 5:

请检查您是否已经例如在正确的内存缓存设置/etc/php.d/memcached.ini



Answer 6:

我知道这是一个老问题,但我只是固定在我的服务器这个问题。 我所做的只是打开了在的cPanel缓存管理域旁路缓存。

我的会议正在采取年龄来启动和关闭现在他们瞬间。



文章来源: session_start seems to be very slow (but only sometimes)