{channel.title!channel.name} - 楚淮公司周东林

项目用户登录以后1到2分钟session丢失需要重新登录

江西省的一个项目,用户登录以后用了2分钟左右页面需要再次登录。查看项目源码设置 session 保存时间为30分钟。


问题描述

江西省的一个项目,用户登录以后用了2分钟左右页面需要再次登录。查看项目源码设置 session 保存时间为30分钟。本项目4台应用服务器IP 为10.x.x.210-213 。10.x.x.214 为负载均衡服务器 器。

负载均衡服务器操作系统为中标麒麟,负载软件 Tengine2.1.2 。单独登录四台应用使用均正常,使用 10.x.x.214  登录服务器使用一到两分钟后登录信息丢失需要重新登录。

问题解决

单独使用正常,查看源码 session 超时时间为30秒排除应用本身问题。telnet 10.x.x.210 -213 11211 的 memcached 服务,get 获取 key 值,无异常。删除所有 KEY 关闭4台 memcached 重新启动,问题依然存在。查看 Tengine 目录 logs 目录下 error.log 文件发现大量 Upstream timed out (110: Connection timed out) while reading response header from upstream 报错信息。

1. nginx proxy
需要适当的调整proxy_read_timeout值。


location / {
        ...
        proxy_read_timeout 150;
        ...
    }

2. Nginx作为php-fpm等等其他的有上游服务

在这种情况下,适当的调整fastcgi_read_timeout选项值

 location ~* .php$ {
    include         fastcgi_params;
    fastcgi_index   index.php;
    fastcgi_read_timeout 150;
    fastcgi_pass    127.0.0.1:9000;
    fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
}
本项目使用的是 nginx proxy 所以只需要在 location 里添加  proxy_read_timeout 150; 即可。



 
 


浏览.发表于:2017-06-09 00:07:45