• 前端
  • JS
  • CSS
  • HTML
  • Mysql
  • Linux
  • SVN
  • 环境uedbet官网手机版最新
  • uedbet西甲体育投注详解
  • MAC_BOOK
  • 算法
  • nginx session共享
    By skyshappiness Posted 2017-03-21 14:18:19 In

    一、背景:

        因为业务量的增加(QPS、PV等指标的上升),需要多台服务器处理现有业务逻辑,因此搭建了 nginx 的负载均衡,之后导致多台服务器之间,session无法共享


    二、解决方案:

        1、ip-hash:

            对访问来源,按照来源 IP 进行分发,缺点:nginx必须为最前端的服务器,并且容易产生热点,无法平均分配

        2、存在数据库中:

            增加 数据库 I/O 开销,也表容易增加数据库的复杂度,特别是做了读写分离、集群等布置的时候,这时候需要考虑 数据库 同步的问题,是最终一致性还是原子一致性;况且,读写分离实际试验下来,主从复制还是会有毫秒级别的误差,并不是真的实时同步数据。

        3、memcache:

            搭建 memcache 之后存在 memcache 中,之后取用,只存在于一个地方(类似于新开一个应用,然后这个应用数据还一直存放在内存中)。


            uedbet官网手机版最新方式:

                两台apache的主机IP分别是 192.168.74.235192.168.74.236
                Nginx主机IP是192.168.74.131
                Memcached主机的IP是192.168.74.131
                在192.168.74.131 安装memcached,并且启动
                以一台为例192.168.74.236,安装php及php对memcached的依赖库yuminstall memcached-devel.i686 libmemcached-devel.i686  php-pecl-memcache.i686

                uedbet官网手机版最新php.ini
                session.save_handler= memcache
                session.save_path= "tcp://192.168.74.131:11211"
                或者(以下两个没有尝试)
                1.某个目录下的 .htaccess :
                    php_value session.save_handler "memcache"
                    php_value session.save_path  "tcp://IP:11211"
                2.在某个一个应用中:
                    ini_set("session.save_handler", "memcache");
                    ini_set("session.save_path", "tcp://IP:11211");  

                    同时一定要把下面的;session.save_path= "/var/lib/php/session" 注释掉
                    同时把extension=memcache.so 打开
                    重启一下 apache,查看 phpinfo 中的 "Registered save handlers" 会有 "files usermemcache" 这3个可用,如果有就证明装好了

    友情链接
    联系方式
  • 邮箱 / E-mail:121388038@qq.com