【问题标题】:Failed to write session data (memcache)写入会话数据失败(memcache)
【发布时间】:2014-04-11 09:29:33
【问题描述】:

我注意到我们的 Memcached 会话处理程序存在间歇性问题。出现的错误是:

未知:无法写入会话数据 (memcache)。请确认 session.save_path 的当前设置是正确的。

注意事项:

  • 这似乎是一个间歇性问题,每天对不同的用户发生 5 或 6 次。
  • Memcached 不是本地主机。即,它与 Web 服务器位于不同的服务器上。
  • 我正在使用 Memcache 扩展(而不是 MemcacheD 扩展)。
  • 我正在使用 tcp 前缀。如果您查看this question,您会发现“修复”是在使用 Memcache 扩展时将 tcp:// 作为前缀。

我的 php.ini 设置:

session.save_handler = memcache
session.save_path = "tcp://64.233.191.255:11211"

请注意,我也使用过:

session.save_path = "tcp://64.233.191.255:11211?persistent=1&weight=1&timeout=1&retry_interval=15"

但这似乎并不重要。

查看了memcached.log文件,发现如下错误:

写入失败,不是由于阻塞:对等方重置连接。

注意:此特定错误每天在同一时间 (01:07AM) 至少发生一次。然后它会在一天中偶尔发生。

【问题讨论】:

  • 在web服务器的日志中出现错误时,您是否检查过memcache服务器的日志文件?看起来像一个连接问题。也许是因为负载偷看?
  • 我会去解决网络问题。 memcache 机器上的一些 cron 作业?暂时的高网络负载?
  • @PawełSpychalski 是的。机器上有 cron 作业。我们有一个在午夜运行的数据库备份。但是,这台机器有很多内核,它经常看到 4.00+ 凌晨 1:09 的负载将是非常低的峰值。
  • @WayneWhitty 仍然在凌晨 1:09 发生了一些事情,是什么导致了这些网络问题。你确定没有一个 crons 没有重新启动 memcache 或做一些令人讨厌的事情吗?
  • 你的服务器在 tcp 级别的超时设置是什么?也许它只是不是内存缓存服务器本身,而是由于数据库响应缓慢和超时而运行时间更长的脚本。就像在某个时刻,您正在等待数据库回复并随后将其写入您的内存缓存,但此时连接已经超时

标签: php memcached


【解决方案1】:

也许你是running out of filehandles?也许备份会使您的机器交换,从而导致响应速度变慢,这意味着与 memcached 进程的更多并发连接会导致踩踏。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-08
    • 1970-01-01
    • 1970-01-01
    • 2011-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多