出于某种奇怪的原因,就在今天,我们的服务器决定在会话开始期间非常慢。对于每个 session_start,服务器要么在 30 秒后超时,要么需要大约 20 秒才能启动会话。这很奇怪,因为它已经很长时间没有这样做了(我们的服务器上一次这样做是在大约 7 个月前)。我尝试将会话更改为通过数据库运行,并且效果很好,但是,随着我们当前的网站的构建,每个页面都需要几天时间并更改会话的加载以包含新会话处理程序。因此我的问题仍然存在:
为什么它这么慢,为什么只是有时?
我们在具有 24GB 内存的专用 hetzner 服务器上运行,CPU 速度快到足以运行一个简单的网络服务器(我相信是 Xeon,但我不确定)。我们使用 apache+fastcgi+php5 设置在服务器上运行 debian。
服务器不会通过服务器状态和top
命令报告太多负载。Vnstat
报告我们的网络链接没有任何问题(同样,这不会导致本地会话处理缓慢)。IOtop
报告进程接管整个硬盘驱动器没有问题。如果通过 vim 完成,写入会话文件所在的 tmp 文件夹会很快。
再说一次,为了清楚起见,我主要关心的不是我们是否应该切换到数据库或内存缓存版本的会话,只是想问为什么会发生这种情况,因为我所看到的一切似乎工作正常,除了 PHP 本身。
编辑:我们的 PHP tmp 目录中的最大文件是 2.9 MB,所以我相信没有什么会产生影响。
更新:我从来没有弄清楚出了什么问题和/或如何解决它,但是在我们切换到 memcached/db 会话后问题就消失了。