【发布时间】:2014-06-27 02:48:17
【问题描述】:
我正在使用 php 会话对 memcached 进行一些测试。
以下步骤会导致问题。
- 启动内存缓存
- 登录到创建会话的应用程序
- 重启内存缓存
- 尝试导航到另一个页面
- 浏览器挂起 30 秒并注销
- 再次登录后的请求需要 30 秒,但可以正常工作。随机停止执行动作需要 30 秒并恢复正常速度
这种奇怪行为的原因是什么
有时我会收到以下错误:
遇到 PHP 错误严重性:警告
消息:未知:无法写入会话数据(内存缓存)。请验证 session.save_path 的当前设置是否正确(tcp://10.181.16.192:11211?persistent=1&weight=1&timeout=1&retry_interval=15)
文件名:未知
行号:0
编辑:
如果我重新启动 memcache 然后 apache 问题不会发生
我注意到重启 memcached 时 TCP 连接更改为 CLOSE_WAIT。
但是,如果我立即重新启动 memcache 和 apache,那么它就可以解决问题。
似乎 php 处理与 memcache 的连接的方式存在某种错误,它无法识别连接不再有效并导致所描述的问题。
[root@php-pos-web ~]# netstat -natp | grep '11211'
tcp 1 0 10.181.16.33:58722 10.181.16.192:11211 CLOSE_WAIT 7574/httpd
tcp 205 0 10.181.16.33:58753 10.181.16.192:11211 ESTABLISHED 7583/httpd
tcp 1 0 10.181.16.33:58745 10.181.16.192:11211 CLOSE_WAIT 7578/httpd
tcp 1 0 10.181.16.33:58749 10.181.16.192:11211 CLOSE_WAIT 7573/httpd
【问题讨论】:
-
通过调试器附加,看看是什么持有请求,目前还没有算命先生。
-
更新了更多信息