Notes: glassfish 出现__admingui/common/index.jsp not found 的问题处理

这几天出现了一个奇怪的现象,glassfish的管理端“无缘无故”的登录不了了,查看server.log见以下错误:

File "%2Fopt%2Fglassfish3%2Fglassfish%2Flib%2Finstall%2Fapplications%2F__admingui%2Fcommon%2Findex.jsp" not found|#]

整理下:

File "/opt/glassfish3/glassfish/lib/install/applications/__admingui/common/index.jsp" not found|#]

这个是管理端的首页,更换了好几个全新的glassfish版本在服务器上的现象依旧,本地跑却一点儿事情没有,实在是不明白原因。

最后在这里:http://www.java.net/node/699754 得到了提示,一个叫 dcam 的家伙说:
继续阅读Notes: glassfish 出现__admingui/common/index.jsp not found 的问题处理

Notes: 更改glassfish的日志轮转数量

最近升级到glassfishv3.1.1之后,发现日志的数量始终保持在10个,判断是日志轮转数量有默认限制,查了官方文档,设置如下:

./bin/asadmin set-log-attributes
com.sun.enterprise.server.logging.GFFileHandler.maxHistoryFiles=50

如果glassfish的默认管理端口变了,则需要指定管理端口号,如:
继续阅读Notes: 更改glassfish的日志轮转数量

深入理解JVM

带着问题去学习,jvm分析

[root@localhost ~]# jstat -gcutil 3461 2000
S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT   
0.00   0.00  23.72   6.21  53.61   9     1.302     3    5.263    6.564
0.00   0.00  23.72   6.21  53.61   9     1.302     3    5.263    6.564
0.00   0.00  23.72   6.21  53.61   9     1.302     3    5.263    6.564
0.00   0.00  23.72   6.21  53.61   9     1.302     3    5.263    6.564
0.00   0.00  23.72   6.21  53.61   9     1.302     3    5.263    6.564

上面是一段通过JVM内建的指令jstat对一个Java应用程序的资源和性能进行实时监控的记录,“3461”是Java应用程序的进程ID,“2000”是指每隔2秒钟采集一次监控数据。

各个数据的含义:
继续阅读深入理解JVM

7×24小时不间断服务

对于互联网服务而言,大部分都要求尽可能地做到 7X24 小时不间断的运行,你可能经常会看到一些大网站给出的 99.9% 或者 99.99% 可用 这样的内容,下面的表给出了从 99% 到 99.999% 的不可用时间的计算方式,差别真的很大,想做到真的很难很难:

可用性指标 计算方式 不可用时间(分钟)
99% 1% x 365 x 24 x 60 5256
99.9%  0.1% x 365 x 24 x 60  525.6
99.99%  0.01% x 365 x 24 x 60  52.56
99.999%  0.001% x 365 x 24 x 60  5.256

Notes: 慎用“OpenSessionInView”

最近一个线上项目在和第三方合作伙伴合作进行集成开发过程中,web.xml被加入了OpenSessionInViewFilter,由于在测试中压力较小,没有发现问题,结果在实际使用中出现了严重的性能问题。

OpenSessionInView是什么

OpenSessionInViewFilter是Spring提供的一个针对Hibernate的支持类,其主要意思是:当发起一个页面请求时,打开Hibernate的Session,并一直保持住这个Session,直到这个请求结束。具体是通过一个Filter来实现的。

为什么使用OpenSessionInView

当Hibernate+Spring配合使用的时候,如果设置了lazy=true,那么在读取数据的时候,当读取了父数据后,Hibernate会自动关闭Session,这样,当要使用子数据的时候,系统会抛出session already closed Exception或者 no session 的错误。

这时就需要使用Spring提供的OpenSessionInViewFilter,OpenSessionInViewFilter主要是保持Session状态直到request将全部信息发送到客户端,这样就可以解决延迟加载带来的问题。
继续阅读Notes: 慎用“OpenSessionInView”

分享:第三方IP地址查询接口

平时在做web应用时,有时避免不了IP查询,自建自然有些浪费时间和精力,何不用第三方的一些工具,分享三个常用的IP查询服务:

太平洋电脑网IP地址查询:http://whois.pconline.com.cn/

新浪IP地址查询:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=211.153.22.125

网易有道IP地址查询:http://www.youdao.com/smartresult-xml/search.s?type=ip&q=211.153.22.125

这几个都可以在页面直接嵌入使用,通过JS做简单的处理即可。

Notes: 运维

最近这一周来一直和运维打交道,原因是服务器所在的机房网络不稳定,导致需要进行各种网络检测,测试和服务器硬件维护。

说来负责的这个项目的网络情况比较“被”,先是遇到断电维护,其次是南北网络互通问题,再是IP所在路由器故障,到现在的网络不稳定。总之是大面上遇到的问题都遇到了,小问题也都赶上了。

说起目前的情况也很奇怪:

1、出问题的IP,ping值不稳定,正常的时候3ms左右,出问题的时候不是请求超时就是ping值达到2000多ms,故障发生间隙也是几秒,几分,到几十分钟不等。

2、出问题的IP所在机子,cpu,内存,网络使用等都不大,甚至凌晨压力最最小的时候也出问题。

3、为了排除硬件问题,考虑将备机上架,而可悲的是备机竟然无法上架,原因是出问题的IP到了新机子上始终无法连通外网,而机房内同网段机子却可以ping通,换其他IP也没一点儿问题。

4、为了排除备机的系统问题,重新安装了备机的操作系统,问题同样,出问题的IP始终到了备机上无法连通外网,换其他IP没问题。

5、问题反馈机房,得答复:IP没有做网卡绑定,对此问题他们暂时也没有找到原因。

到这里我们也就无能为力了,换IP或许是最直接和简单的解决办法,但是客户忍受不了了,接连出现的问题让他们对这个机房已经丧失了信心,开始寻找新机房,准备迁移。

在这几天的网络监控中,发现了一个不错的网站“监控宝”,虽然之前早就知道,但是因为之前没有使用的需求,因此也就没有在意,这次网络监测中,发现“监控宝”还是很不错的,虽然免费的账户有一定的限制,但是作为辅助的监测工具还是很有用的,尤其结合即时通知使用时。

这里分享一个使用技巧:

想更好的使用监控宝的即时通知,是要付费的,比如短信通知,但是可以通过139邮箱的短信通知做到一样的即时通知,这点就需要你设置的通知邮箱中有一个必须是139邮箱了。

我的做法:把监控宝的通知邮箱设为我常用的gmail邮箱,然后增加过滤器,只转发来自监控宝的邮件至我不常用的139邮箱,这样只要监控宝一有邮件通知,手机就会立马收到通知。

Note:做优化

补发:之前某项目尾声时做的一些显而易见的优化工作:

1、图片size优化

使用Firebug上的YSlow就可以很方便的处理,但是对于一些重要的图片,比如logo等,还是让UI工程师专门做优化。

2、检查gzip是否开启

检查服务器上的gzip是否开启,这个对于前端优化起很大作用,如下图, gzip前后的js文件大小变化很大:


继续阅读Note:做优化