编辑: 怪只怪这光太美 | 2017-10-01 |
4 上述代码要特别注意的三个地方都加了注释.构造函数里的 ocs 关键字,就相当于一个连接池了,需要使用 的连接调用 new Memcached('
ocs'
) 就能从池里获取连接. 执行结果 将上述代码放到 Apache 工作路径/var/www/html/下面,命名为 test.php.然后再浏览器输入: http://your_ip:80/test.php .前8次浏览器都输出结果为: 即这8次都是新建连接,而8次后都是复用这8个链接了.抓包结果也显示8次后都是长连接,无socket 重连无 鉴权. 那么为什么有8个链接? 通过查看 httpd.conf 配置文件,是因为 appache 启动了8个子进程: 于是刚好在'
ocs'
这个 persistent_id 的连接池里面初始化8个连接,此后的请求就用这8个链接了. 接下来测试页面跳转,拷贝一个 php 文件,建立连接的构造函数的 persistent_id 还是用 ocs .得到的结 果是从一个连接换到了另一个连接上(因为调用的 Apache 子进程不一样),但无鉴权无 socket 重连过程. 即PHP memcached 的长连接设置是有效的.通常我们使用的都是 PHP-FPM 模式, FPM 进程会和 memcached server 保持长连接,因此该连接的生命周期同 Apache 进程. 缓存 Tomcat session 变量 做Tomcat 集群的目的是为了提供更高的负载能力,把访问均摊到不同的服务器上.以下图的结构框架作为例 . New connection Get from OCS: value #StartServers:numbers of server processes to start StartServers
8 云数据库 Memcache 版 最佳实践
5 阿里云集群一般分为两种模式,一种是完全集中 SESSION,各个集群点保持一致;
还有一种就是基于一次会话 指定某一个集群中节点提供服务. ECS 安装 TOMCAT 和JDK. 本例中用的是TOMCAT
7 以及 JDK 7.建议 TOMCAT 先下载到本地,配置好了再上传到 ECS. TOMCAT 增加 memcached 支持的 lib 包. 配置 memcached-session-manager,请参考该文档. 本步骤主要下载一些 lib,下载地址在上面的文档中有给出.把下载到的 lib 放到 Tomcat/lib 目录里 面, 如下图所示.(注意:每个文件的前缀 msm- 本来是没有的,是为了方便管理加的.) 有了这些包之后就可以配置 TOMCAT 连接到 Memcache. TOMCAT 同步 Session 到Memcache. 云数据库 Memcache 版 最佳实践
6 该步骤要做 TOMCAT 具体配置了,有两种配置模式:STICKY 和NON-STICKY. STICKY:负载均衡会根据用户会话,每次都分配到同一个集群节点上.用户每次获取会话 数据都是从 TOMCAT 里面取得,TOMCAT 会备份一个 SESSION 到Memcache,这样可 以保持最高效地获取 SESSION. NON-STICKY:负载均衡不会管用户会话,而是按每次连接分别分发的方式,会话都保持 在Memcache 上,每次读写都在 Memcache 上.由于会远程访问数据,所以效率会低一 些,但是这种却是最符合集群或集中缓存预期效果的. 在/Tomcat/conf/context.xml 中编辑连接到 Memcache 的配置,在 元素下 增加下述的配置描述即可.下面分别是 TOMCAT 的两种配置模式: STICKY 模式 NON-STICKY 模式 注意:必须要有memcachedProtocol= binary ,因为 Tomcat memcached 插件模式这 个属性值是 text,而阿里云支持的是 binary 模式的数据. 修改 TOMCAT 的JVM 设置以及 NIO. 云数据库 Memcache 版 最佳实践
7 在/Tomcat/bin/ 目录下修改 JVM 设置,增加 setenv.sh 文件,写定要优化的配置. 在/Tomcat/conf/context.xml 文件中修改 NIO 设置. 注释掉原有的 Connector=8080 的定义,增加如下的配置定义,使用 NIO 方式. 创建一个检查 SESSION 的JSP. 创建一个 JSP 文件到 Tomcat/webapps/ROOT 目录下. CATALINA_OPTS= -server -Xms3072m -Xmx3072m -Xmn1024m -XX:PermSize=96m - XX:MaxPermSize=128m -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection - XX:CMSMaxAbortablePrecle........