Symfony2 - Random无法启动会话

时间:2015-10-09 08:56:56

标签: symfony session

我们有一个Symfony2网站,有一些流量。

每天网站开始失败并出现此错误1或2分钟(15-20错误)。这种情况发生在随机的时间,找不到模式。它甚至不适合高峰时段。

2015-10-09 02:23:57.635 [2015-10-09 06:23:38] request.CRITICAL: Uncaught PHP Exception RuntimeException: "Failed to start the session" at /var/www/thing.com/httpdocs/app/cache/prod/classes.php line 121 {"exception":"[object] (RuntimeException(code: 0): Failed to start the session at /var/www/thing.com/httpdocs/app/cache/prod/classes.php:121)"} []

似乎不是双头问题或双重启动问题。 站点不会与任何可能会破坏会话的PHP遗留代码进行交互。

会话存储在数据库中,因此会丢弃文件问题。 降低了会话持续时间,因此会话表不会太大,问题仍然存在。

认为这可能是HWIOAuthBundle的问题,而且是facebook登录,但无法找到冲突的位置。

该网站还使用大量的render_esi进行Symfony2内部缓存系统的缓存。

更新---------------------------------------------- ---

清空旧版会话文件的/ var / lib / php / sessions文件夹,而不是未使用的文件夹。

降低会话寿命。会话表中的Sql条目从大约300万到大约130万。

似乎问题已经消失,但这不是一个真正的解决方案。 我的猜测是symfony2中的pdo_handler存在性能问题。

也许在这个问题上有更多知识的人(pdo_handler,表格优化)可以为高流量指出一个真正的解决方案。

1 个答案:

答案 0 :(得分:1)

您的PHP安装将会话保存到哪里?

[你可以在session.save_path设置的php.ini文件中找到这个,假设你有CLI访问权限]

PHP很可能使用您的servers / tmp文件夹。如果此文件夹在任何时候已满,则PHP无法创建新会话。

您可以使用以下命令查看/ tmp文件夹的当前大小:

du -ch /tmp/ |grep total

如果通常情况下/ tmp文件夹位于其自己的分区上,您可以通过以下方式查看其最大大小:

df -h

某些程序可能会突然为此目的使用此文件夹的Gbs。