Php tmpfs上的会话启动()错误:未连接协议驱动程序(49)

Php tmpfs上的会话启动()错误:未连接协议驱动程序(49),php,magento,session,lamp,tmpfs,Php,Magento,Session,Lamp,Tmpfs,我有一个Redhat Enterprise LAMP服务器,托管一个Magento站点,最近我在其中为会话目录设置了tmpfs以提高性能。tmpfs分区通过以下命令装载: mount -t tmpfs -o rw,noexec,nosuid,size=6144M,mode=1777,uid=48,gid=48 tmpfs /path/session 将会话目录装载到tmpfs后,在大约1%的所有会话中抛出以下警告: Warning: session_start(): open(/path/s

我有一个Redhat Enterprise LAMP服务器,托管一个Magento站点,最近我在其中为会话目录设置了tmpfs以提高性能。tmpfs分区通过以下命令装载:

mount -t tmpfs -o rw,noexec,nosuid,size=6144M,mode=1777,uid=48,gid=48 tmpfs /path/session
将会话目录装载到tmpfs后,在大约1%的所有会话中抛出以下警告:

 Warning: session_start(): open(/path/session/sess_random_session_id, O_RDWR) failed: Protocol driver not attached (49)  in /path/app/code/core/Mage/Core/Model/Session/Abstract/Varien.php on line 115**
我无法重现这个错误,但根据日志,它每天都会发生好几次


我正在运行Apache v 2.2.3和Magento v 1.4.0.1。您应该使用Memcache来存储会话,文件不好,因为PHP在所有PHP执行期间锁定当前用户会话文件,我知道Magento并行执行了一些AJAX查询:/


另外,我认为TMPFS会重新生成inode(),因此可能会导致会话出现问题。

当使用memcached而不是TMPFS时,file lock+ajax查询有何不同?切换到tmpfs时出现问题。假设一个网站在页面加载后进行4次AJAX调用,这意味着来自同一会话的4个新HTTP连接(也意味着4个mysql连接等),但PHP使用文件锁检索会话_start()和会话结束之间的文件会话,或者PHP存在。Memcache会话没有此锁。我建议您使用Memcache,因为我相信您切换到tmpfs是为了提高会话性能?