Page Cache(I)ehcache

Page Cache(I)ehcache

1. Theory
user -----> page -----> filter ----> action ----> service ----> dao -------> database

2. Configuration changes
timeToIdleSeconds no requests for a time, ehcache will delete the cache data.
timeToLiveSeconds cache live time from the creatation time

<cache name="SimplePageCachingFilter"
maxElementsInMemory="10"
maxElementsOnDisk="10"
eternal="false"
overflowToDisk="true"
diskSpoolBufferSizeMB="20"
timeToIdleSeconds="900"
timeToLiveSeconds="900"
memoryStoreEvictionPolicy="LFU"
/>
LFU will erase the data by the hits of the requests.

<filter>
<filter-name>IndexCacheFilter</filter-name>
<filter-class>
net.sf.ehcache.constructs.web.filter.SimplePageCachingFilter
</filter-class>
<init-param>
<param-name>cacheName</param-name>
<param-value>SimplePageCachingFilter</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>IndexCacheFilter</filter-name>
<url-pattern>/index.do</url-pattern>
</filter-mapping>

cache policy
FIFO first in first out
LFU less frequently used
LRU least recently used

3. Problems and Solutions
But get error messages:
2011-07-07 22:44:04,716 ERROR [net.xxxx.app.utils.Utility] (Timer-2) Exception while evicting elements
java.lang.NullPointerException
at net.xxxx.app.utils.Utility.evictExpiredElements(Utility.java:2241)
at org.jboss.scheduler30ss.EhCacheEvictScheduler.perform(EhCacheEvictScheduler.java:37)
at org.jboss.varia.scheduler.Scheduler$Listener.handleNotification(Scheduler.java:1251)
at sun.reflect.GeneratedMethodAccessor207.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.jboss.mx.notification.NotificationListenerProxy.invoke(NotificationListenerProxy.java:153)
at $Proxy316.handleNotification(Unknown Source)
at javax.management.NotificationBroadcasterSupport.handleNotification(NotificationBroadcasterSupport.java:274)
at javax.management.NotificationBroadcasterSupport$SendNotifJob.run(NotificationBroadcasterSupport.java:339)
at javax.management.NotificationBroadcasterSupport$1.execute(NotificationBroadcasterSupport.java:324)
at javax.management.NotificationBroadcasterSupport.sendNotification(NotificationBroadcasterSupport.java:247)
at javax.management.timer.Timer.sendNotification(Timer.java:1247)
at javax.management.timer.Timer.notifyAlarmClock(Timer.java:1209)
at javax.management.timer.TimerAlarmClock.run(Timer.java:1298)
at java.util.TimerThread.mainLoop(Timer.java:534)
at java.util.TimerThread.run(Timer.java:484)

Caused by: net.sf.ehcache.CacheException: Error configuring from /home/luohua/tools/jboss/30ss/ehcache.xml.
Initial cause was Error configuring from input stream. Initial cause was null:509:
Element <cache> does not allow attribute "momoryStoreEvictionPolicy".

Solution:
This is my project problem. My project already use ehcache in the system.
It will create the CacheManager from a configuration file this way:
cm = CacheManager.create(configuration_file_directory + "/ehcache.xml");

That is the problem. So I will customized the filter class like this CustomerSimplePageCachingFilter.java:
package com.xxxxx.web.filter;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.constructs.web.filter.SimplePageCachingFilter;
import net.xxx.xxxx.utils.Utility;

public class CustomerSimplePageCachingFilter extends SimplePageCachingFilter {

protected CacheManager getCacheManager() {
return Utility.getCacheManager();
}
}

Performance Test
>ab -n 1000 -c 50 http://localhost:8080/project/index.do >> log1.txt
>ab -n 1000 -c 50 http://localhost:8080/project/index.do >> log2.txt

error message:
apr_poll: The timeout specified has expired (70007)

solution:
This a bug from ab maybe, I just change the -n to a small number.

The comparation of the test results log1.txt:
Concurrency Level: 50
Time taken for tests: 84.977 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 3444000 bytes
HTML transferred: 3055000 bytes
Requests per second: 11.77 [#/sec] (mean)
Time per request: 4248.845 [ms] (mean)
Time per request: 84.977 [ms] (mean, across all concurrent requests)
Transfer rate: 39.58 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 1.3 0 8
Processing: 2179 4201 704.5 4095 8009
Waiting: 2178 4201 704.5 4095 8009
Total: 2181 4201 704.5 4095 8009

Percentage of the requests served within a certain time (ms)
50% 4095
66% 4286
75% 4425
80% 4531
90% 4960
95% 5591
98% 6454
99% 6950
100% 8009 (longest request)

log2.txt:
Concurrency Level: 50
Time taken for tests: 0.709 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 3218000 bytes
HTML transferred: 2975000 bytes
Requests per second: 1410.30 [#/sec] (mean)
Time per request: 35.453 [ms] (mean)
Time per request: 0.709 [ms] (mean, across all concurrent requests)
Transfer rate: 4431.98 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.6 0 3
Processing: 1 34 22.3 30 181
Waiting: 1 34 22.2 30 165
Total: 2 34 22.7 30 184

Percentage of the requests served within a certain time (ms)
50% 30
66% 37
75% 41
80% 43
90% 56
95% 75
98% 87
99% 159
100% 184 (longest request)

references:
http://ahuaxuan.iteye.com/blog/128458
http://wiki.springside.org.cn/display/calvin/Ehcache
http://hi.baidu.com/luohuazju/blog/item/b9ac3e51803fe7858d543026.html
http://ehcache.org/documentation/samples.html#Cache_Server_Examples
内容概要:本文介绍了ENVI Deep Learning V1.0的操作教程,重点讲解了如何利用ENVI软件进行深度学习模型的训练与应用,以实现遥感图像中特定目标(如集装箱)的自动提取。教程涵盖了从数据准备、标签图像创建、模型初始化与训练,到执行分类及结果优化的完整流程,并介绍了精度评价与通过ENVI Modeler实现一键化建模的方法。系统基于TensorFlow框架,采用ENVINet5(U-Net变体)架构,支持通过点、线、面ROI或分类图生成标签数据,适用于多/高光谱影像的单一类别特征提取。; 适合人群:具备遥感图像处理基础,熟悉ENVI软件操作,从事地理信息、测绘、环境监测等相关领域的技术人员或研究人员,尤其是希望将深度学习技术应用于遥感目标识别的初学者与实践者。; 使用场景及目标:①在遥感影像中自动识别和提取特定地物目标(如车辆、建筑、道路、集装箱等);②掌握ENVI环境下深度学习模型的训练流程与关键参数设置(如Patch Size、Epochs、Class Weight等);③通过模型调优与结果反馈提升分类精度,实现高效自动化信息提取。; 阅读建议:建议结合实际遥感项目边学边练,重点关注标签数据制作、模型参数配置与结果后处理环节,充分利用ENVI Modeler进行自动化建模与参数优化,同时注意软硬件环境(特别是NVIDIA GPU)的配置要求以保障训练效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值