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
標題名稱:memcached演練(4)使用apache+memcached-session-manager+tomcat集群(續)
文章鏈接:http://vcdvsql.cn/article10/pdicgo.html
成都網站建設公司_創新互聯,為您提供虛擬主機、品牌網站建設、網站導航、、動態網站、做網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯