您好,登錄后才能下訂單哦!
memcached演練(4) 使用apache+memcached-session-manager+tomcat集群,存在一些問題。問題列表
問題1:2個tomcat節點,apache,memcached服務器均放在一個虛擬機,不能真正模擬真實環境。
問題2:不能整整模擬分布式環境。
本文,重新設計下物理結構。沿用《memcached演練(4) 使用apache+memcached-session-manager+tomcat集群》配置。僅僅將主機進行了調整。
操作步驟。
1.將配置好的tomcat節點分別復制到 2個主機
scp -r apache-tomcat-node1 root@hadoop2:/u01 scp -r apache-tomcat-node2 root@hadoop3:/u01
2.修改apache的worker.properties
[root@hadoop1 /]# vi /etc/httpd/conf/workers.properties worker.list=loadbalancer worker.tomcat1.port=8009 worker.tomcat1.host=192.168.163.156 worker.tomcat1.type=ajp13 worker.tomcat1.lbfactor=1 worker.tomcat2.port=8019 worker.tomcat2.host=192.168.163.166 worker.tomcat2.type=ajp13 worker.tomcat2.lbfactor=1 worker.loadbalancer.type=lb worker.loadbalancer.balance_workers=tomcat1,tomcat2 worker.loadbalancer.sticky_session=true
3.修改每個節點的tomcat的context相關MSM配置
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:192.168.163.146:11211" sticky="false" requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" />
指向192.168.163.146:11211
4.測試下吞吐量
c:\Apache24\bin>ab -n 10000 -c 4 http://192.168.163.146/examples/testSession.jsp This is ApacheBench, Version 2.3 <$Revision: 1604373 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking 192.168.163.146 (be patient) Completed 1000 requests ... Completed 10000 requests Finished 10000 requests Server Software: Apache/2.2.15 Server Hostname: 192.168.163.146 Server Port: 80 Document Path: /examples/testSession.jsp Document Length: 331 bytes Concurrency Level: 4 Time taken for tests: 10.322 seconds Complete requests: 10000 Failed requests: 0 Total transferred: 5930000 bytes HTML transferred: 3310000 bytes Requests per second: 968.84 [#/sec] (mean) Time per request: 4.129 [ms] (mean) Time per request: 1.032 [ms] (mean, across all concurrent requests) Transfer rate: 561.06 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.4 1 5 Processing: 0 4 11.7 3 585 Waiting: 0 4 11.7 3 585 Total: 0 4 11.7 3 585 ERROR: The median and mean for the initial connection time are more than twice the standard deviation apart. These results are NOT reliable.
吞吐量:968.84。比上節中的測試結果“727.55”超出不少。
經過多次測試,差別有點大。
Requests per second: 1281.74 [#/sec] (mean)
Requests per second: 1451.22 [#/sec] (mean)
模擬一臺節點宕機情況,測試吞吐量
c:\Apache24\bin>ab -n 10000 -c 4 http://192.168.163.146/examples/testSession.jsp This is ApacheBench, Version 2.3 <$Revision: 1604373 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking 192.168.163.146 (be patient) Completed 1000 requests ... Finished 10000 requests Server Software: Apache/2.2.15 Server Hostname: 192.168.163.146 Server Port: 80 Document Path: /examples/testSession.jsp Document Length: 331 bytes Concurrency Level: 4 Time taken for tests: 7.994 seconds Complete requests: 10000 Failed requests: 0 Total transferred: 5930000 bytes HTML transferred: 3310000 bytes Requests per second: 1250.92 [#/sec] (mean) Time per request: 3.198 [ms] (mean) Time per request: 0.799 [ms] (mean, across all concurrent requests) Transfer rate: 724.41 [Kbytes/sec] received
吞吐量:1250.92。FUCK出乎意料啊。竟然比2個節點的情況下還高。
多次測試,發現均在1700左右。
Requests per second: 1729.64 [#/sec] (mean)
Requests per second: 1779.67 [#/sec] (mean)。
結果出乎我的意料。 記住這個結果,以后做個監控分析下。
最后討論
關于session應該不應該使用memcached存儲,可詳見《為什么不能用memcached存儲Session》
簡單整理下表格
usual session pattern | usual memcached session pattern |
* Blobs (250 bytes to 5k+) * Read from datastore on every single page load * Usually written to the datastore on every page load * Reaped from the DB after inactivity | * Read from memcached on page load * 'set' over the existing session with a new expiration time * Cache misses mean user is logged out |
1.Run your instances out of memory and people get logged out early, or can't log in at all 2.Upgrading memcached, the OS, hardware, etc, now kicks people off 3.Adding or removing servers to the cluster, now kicks people off | |
如果非常希望借助memcached提高Session讀取速度,那么可以借鑒Norkūnas提出的memcached+RDBMS(在有些情況下,NoSQL也可以)的模式:
當用戶登錄時,將Session “set”到memcached,并寫入數據庫;
在Session中增加一個字段,標識Session最后寫入數據庫的時間;
每個頁面加載的時候,優先從memcached讀取Session,其次從數據庫讀取;
每加載N頁或者Y分鐘后,再次將Session寫入數據庫;
從數據庫中獲取過期Session,優先從memcached中獲取最新數據。
內容來自:http://www.infoq.com/cn/news/2015/01/memcached-store-session
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。