# -*- coding: utf-8 -*-
#ip转化为long型格式
def iptolong(ipaddr):
data = 0L
ip = ipaddr.split('.')
for i in range(0,len(ip)):
if 0 <= long(ip[i]) < 256:
data = data+long(ip[i])*(256**(3-i))
else:
data = 0L
break
return data
#long型转化成ip格式
def longtoip(iplong):
i_4 = iplong % 256
i_3 = (iplong - i_4)/256 % 256
i_2 = (iplong - i_3*256 - i_4)/256**2 % 256
i_1 = (iplong - i_2*256*256 - i_3*256 - i_4)/256**3 % 256
ip = str(i_1)+'.'+str(i_2)+'.'+str(i_3)+'.'+str(i_4)
return ip
说明:
本文是在apache2+resin3(开源版)环境下的配置,主要是对resin3配置进行了分析,详细调试请见caucho-doc ,apache2的调优见apache的man文档。实践总结,如转载请注明出处--2hei.net 谢谢.
Using Resin(R) under the GNU Public License (GPL).
See http://www.caucho.com for information on Resin Professional,
including caching, clustering, JNI acceleration, and OpenSSL integration.
resin配置文件: resin.conf
1、dependency-check-interval 参数调整
resin检查系统配置及java、jsp、resin.conf等文件的时间间隔。
默认值为2秒,适合开发及调试环境,如果是正式环境尽量把参数调大或者直接改为-1,不允许检查,也就是禁止了热部署。
<dependency-check-interval>-1s</dependency-check-interval>
2、缓存
改变cache-mapping的值:
<cache-mapping url-pattern="/" expires="5s"/>
<cache-mapping url-pattern="*.gif" expires="60s"/>
<cache-mapping url-pattern="*.jpg" expires="60s"/>
<cache-mapping url-pattern="*.png" expires="60s"/>
3、jvm优化
jvm需要根据你的系统配置及应用来调整。
JVM OPTION PASSED TO RESIN MEANING
-Xms initial java heap size
-Xmx maximum java heap size
-Xmn the size of the heap for the young generation
将-Xms和-Xmx设置为一样大小是不错的选择。
如: bin/httpd.sh -Xms500M -Xmx500M -Xmn100M
更多的关于jvm优化参数如:young generation、Eden generation、older generation可见
Sun documentation on garbage collection
jvm的监控,google一下有很多的工具,如:jconsole jstat jstack
jconsole的使用见我的另外一篇文章 《使用Jconsole对java的内存使用情况(JVM)进行监控》
$jps
1229 Jps
1003 Resin
973 resin.jar
$jmap 973
Attaching to process ID 973, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 1.5.0_16-b02
0x0000000040000000 64K /home/jdk1.5.0_16/bin/java
0x00000030b2a00000 127K /lib64/ld-2.5.so
0x00000030b2e00000 1647K /lib64/libc-2.5.so
0x00000030b3200000 22K /lib64/libdl-2.5.so
0x00000030b3600000 600K /lib64/libm-2.5.so
0x00000030b3a00000 138K /lib64/libpthread-2.5.so
0x00000030b5a00000 111K /lib64/libnsl-2.5.so
0x00002aaab46ad000 26K /home/jdk1.5.0_16/jre/lib/amd64/libmanagement.so
0x00002aaab49de000 79K /home/jdk1.5.0_16/jre/lib/amd64/libnet.so
0x00002aeeac3c1000 9933K /home/jdk1.5.0_16/jre/lib/amd64/server/libjvm.so
0x00002aeeacd46000 43K /home/jdk1.5.0_16/jre/lib/amd64/native_threads/libhpi.so
0x00002aeeace61000 52K /lib64/libnss_files-2.5.so
0x00002aeead06c000 58K /home/jdk1.5.0_16/jre/lib/amd64/libverify.so
0x00002aeead17b000 171K /home/jdk1.5.0_16/jre/lib/amd64/libjava.so
0x00002aeead2a5000 78K /home/jdk1.5.0_16/jre/lib/amd64/libzip.so
jstat -gc 1489 1000 3
S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT
43648.0 43648.0 0.0 0.0 262208.0 101390.5 699072.0 18545.6 28032.0 15756.6 1 0.055 1 0.115 0.170
43648.0 43648.0 0.0 0.0 262208.0 101390.5 699072.0 18545.6 28032.0 15756.6 1 0.055 1 0.115 0.170
43648.0 43648.0 0.0 0.0 262208.0 101390.5 699072.0 18545.6 28032.0 15756.6 1 0.055 1 0.115 0.170
jstack 1489
Thread 1495: (state = BLOCKED)
- java.lang.Object.wait(long) @bci=0 (Interpreted frame)
- java.lang.Object.wait() @bci=2, line=474 (Interpreted frame)
- java.lang.ref.Reference$ReferenceHandler.run() @bci=46, line=116 (Interpreted frame)
Thread 1489: (state = IN_NATIVE)
- java.net.SocketInputStream.socketRead0(java.io.FileDescriptor, byte[], int, int, int) @bci=0 (Interpreted frame)
- java.net.SocketInputStream.read(byte[], int, int) @bci=84, line=129 (Interpreted frame)
- java.net.SocketInputStream.read() @bci=23, line=182 (Interpreted frame)
- com.caucho.server.resin.Resin.waitForExit() @bci=304, line=1265 (Interpreted frame)
- com.caucho.server.resin.Resin.main(java.lang.String[]) @bci=42, line=1367 (Interpreted frame)
4、JNI加速
resin不使用NIO而是使用了JNI的方式使用本地码的方式来提升效率,经验证,resin使用JNI的效率要高于使用NIO,
使用JNI是需要对resin进行编译,在./configure时把jni编译进去,
./configure --enable-jni 美中不足的是Resin Professional版本才提供此项功能。
下面是resin-doc的说明:
Resin does not use NIO - it uses JNI to handle low-level I/O calls with native code. The performance using this method was found to be much better than nio.
5、jsp第一次编译的处理
一般来讲,第一次访问jsp会自动进行编译,如果更新了过多的jsp、且系统访问很大的话,重启resin容易造成负载过高。
下面配置是启动app-server时,对所有的jsp进行编译,编译完毕后启动监听,这样启动时间会长一些,但是可以防止第一次访问编译造成系统负载大。
<listener>
<listener-class>com.caucho.jsp.JspPrecompileListener</listener-class>
<init>
<extension>jsp</extension>
<extension>jspx</extension>
</init>
</listener>
6、resin 与apache 性能的比较
resin3单独使用时性能也是不错,当然也可以跟apache配合使用。下面是resin-doc中的说法:
For JSP and Servlets, Resin standalone is certainly faster than Resin/Apache. Because of the extra overhead of the Resin/Apache connection, the Resin/Apache configuration is necessarily slower than Resin standalone.
可以看出各有优劣,
apache对于静态页面来说比较快。如果使用了SSL,apache+resin要比resin单独使用快一些,更为重要的是resin3的开源版本不支持ssl。
7、resin-server TIME_WAIT 过多的处理
thread-max指定了最大连接数,socket-timeout是socket超时时间
keepalive-max指定了长连接的数量,这是可以重复使用的连接,netstat -an时系统可以看到响应数量的ESTABLISHED状态
设定keepalive-max和把keepalive-timeout调小可以减少TIME_WAIT的数量。
<thread-max>256</thread-max>
<socket-timeout>65s</socket-timeout>
<keepalive-max>128</keepalive-max>
<keepalive-timeout>120s</keepalive-timeout>
一般来讲如果是Resin standalone方式,调整timeout并不是很重要,如果是apache+resin的方式,而且apache压力很大的情况下,需要调小timeout的值。
load-balance-idle-time是用来设置load-balance和分布式session的关闭时间,默认时间为keepalive-timeout - 1s
<load-balance-idle-time>100s</load-balance-idle-time>
8、关于watchdog
resin3启动是多了一个watchdog的进程。可以单独启动也可以跟随resin.jar一起启动,主要是用来监控resin jvm实例,在必要的时候重启。
<watchdog-jvm-arg>-Dcom.sun.management.jmxremote</watchdog-jvm-arg>
<watchdog-port>6600</watchdog-port>
查看 watchdog 状态
java -jar lib/resin.jar status
Resin/3.1.6 status for watchdog at 127.0.0.1:6600
server '' : active
password: missing
user: root
root: /home/resin/
conf: /home/resin/conf/resin.conf
[Wed Nov 12 14:15:38 CST 2008][MysqlDb.connectDB]java.sql.SQLException: Client does not support authentication protocol requested by server; consider upgrading MySQL client
搜了一下,好多人遇到此问题,大致是mysql版本不通造成的,以下是解决办法:
mysql>UPDATE mysql.user SET Password = OLD_PASSWORD('yourpass') WHERE Host = 'localhost' AND User = 'username';
mysql>FLUSH PRIVILEGES;
这里是mysql官方的解释!
http://dev.mysql.com/doc/refman/5.0/en/old-client.html
i meet such logs:
kernel: mptbase: ioc0: LogInfo(0x31120401): Originator={PL}, Code={Abort}, SubCode(0x0401)
#modinfo mptbase
filename: /lib/modules/2.6.18-53.1.13.el5/kernel/drivers/message/fusion/mptbase.ko
version: 3.04.04
license: GPL
description: Fusion MPT base driver
author: LSI Logic Corporation
srcversion: DEE575D01207DC868D4D69B
depends:
vermagic: 2.6.18-53.1.13.el5 SMP mod_unload gcc-4.1
parm: mpt_msi_enable: MSI Support Enable (default=0) (int)
parm: mpt_channel_mapping: Mapping id's to channels (default=0) (int)
#lsmod
Module Size Used by
ipv6 411425 16
dm_mirror 60105 0
dm_mod 96017 1 dm_mirror
video 51273 0
sbs 49921 0
backlight 39873 0
i2c_ec 38593 1 sbs
button 40545 0
battery 43849 0
asus_acpi 50917 0
acpi_memhotplug 40133 0
ac 38729 0
parport_pc 62313 0
lp 47121 0
parport 73165 2 parport_pc,lp
sg 69865 0
shpchp 70765 0
ata_piix 49861 0
i2c_i801 41429 0
tg3 141381 0
i2c_core 56129 2 i2c_ec,i2c_i801
libata 160977 1 ata_piix
pcspkr 36289 0
mptsas 62545 6
mptscsih 56513 1 mptsas
mptbase 92640 2 mptsas,mptscsih
scsi_transport_sas 66753 1 mptsas
sd_mod 56257 7
scsi_mod 186361 6 sg,libata,mptsas,mptscsih,scsi_transport_sas,sd_mod
ext3 166993 5
jbd 93873 1 ext3
ehci_hcd 65229 0
ohci_hcd 54493 0
uhci_hcd 57433 0
cat /proc/mdstat
Personalities :
unused devices: <none>
google and google, no answer!
~ who can help me ? ~
Installing PHP SAPI module: apache2handler
/home/apache2/build/instdso.sh SH_LIBTOOL='/home/apache2/build/libtool' libphp5.la /home/apache2/modules
/home/apache2/build/libtool --mode=install cp libphp5.la /home/apache2/modules/
cp .libs/libphp5.lai /home/apache2/modules/libphp5.la
cp .libs/libphp5.a /home/apache2/modules/libphp5.a
chmod 644 /home/apache2/modules/libphp5.a
ranlib /home/apache2/modules/libphp5.a
libtool: install: warning: remember to run `libtool --finish /home/yujingtao/soft/php-5.2.6/libs'
Warning! dlname not found in /home/apache2/modules/libphp5.la.
Assuming installing a .so rather than a libtool archive.
chmod 755 /home/apache2/modules/libphp5.so
chmod: cannot access `/home/apache2/modules/libphp5.so': No such file or directory
apxs:Error: Command failed with rc=65536
.
make: *** [install-sapi] Error 1
my configure script is below:
./configure --with-apxs2=/home/apache2/bin/apxs --with-mysql-sock=/tmp/mysql.sock LDFLAGS='-L/usr/lib64'
google for a along time , still have this error, Can anybody help me??
垃圾本也真是往死里折腾啊,今天早上终于挂掉了,开机后居然蓝屏,蔚蓝的屏幕看着真是让人轻松,只是那两行醒目的英文着实有些扎眼:
c000021a unknown hard error
凭借多年的经验,我断定重新启动一下应该可以恢复,试了几次,可惜都不管用! Xp启动时的进度条闪过去后,还是迅速地转为蓝屏的,好喝的,充足的,我呸呸!
试过了安全模式居然也无法进入。。。
无语了
去其他电脑google了一番,发现怎么解释的都有,不过都不靠谱、再说不靠谱的事也并不适合我,
回想起来最近的操作,最令我感到怀疑的就是昨晚勤劳勇敢的卡巴曾经提示有个dll文件是木马,问我是否删除,哎!想都没想就点击了删除。工作到深夜,合上本就睡了。
早上,忙,很多事情堆到了一起,没有电脑,工作真是没法进行啊!
赶紧把破本还给了IT去检查,先借了一个更破的本本用先,可惜是个裸奔,嘛软件也木有,麻烦死了,我的n多环境的安装啊,不过也没有办法,凑合先用着吧。。
中午过后,IT大哥下山,结果出炉,本本重装,C盘格掉,其他保留!
不错的结果,我很满意!想想如果是硬盘挂掉,等着哭吧就。
送各位一句金玉良言:卡巴虽好,也不尽可信,备份麻烦,真的重要啊!
荒废了几年的足球,如今捡就算起来了,坚持了将近1个多月,
one week one time !
但是踢球的感觉明显不一样了,位置明显靠后,
昔日的前锋到现在的后卫,甚至门将。。。
岁月的磨砺终于显示出它的力量,
每况愈下的体力成就了现在只能靠意识踢球的“懒人”。
遥想当年皮肤黝黑、浑身臭汗的疯狂少年,
也曾是个整天天泡在在绿荫场,不知疲惫的小小球星;
那个当年龙江通信杯身披10号战袍的优秀年轻人,如今也已不再年轻,
对于足球的热爱或许只能通过品头论足来体现吧!
如今,每周一次的足球运动对于我来讲是如此的难得,也是如此的珍惜,
现在不需要多么的表现自己的华丽脚法,
也无需一次次体验进球后的快感,
只要能够跑在那柔软的草坪上,
尽情享受足球的乐趣就是那么的让我心满意足!
3年后,终于又可以踢上了大场,3年后也终于又参加正式的比赛,
兄弟,拿出激情来吧,
哪怕是只有疯狂的呐喊!
《第四届中国网络媒体足球精英赛》必将留下俺闪耀的身影!
路上,一对情侣与俺对面坐
男小伙帅呆了,野人花园出来的,头发都立着;女娃子也真漂亮,一脸的青春还有些红豆豆!
亲亲我我,腻腻歪歪,眉来眼去的好不黏糊,令人好生羡慕啊!!
稍许,那兄弟掏出超级大手机,对着女人深情地说了一句:啊!哥们功能就是强!
我吃了一惊,心里暗暗赞许,这才是真爷们,有胆量、敢表白,众目睽睽之下居然如此这般、这般如此!
那手机也真是油品味,衰呆了、呕像!
手机闪着七彩的光芒,还伴随着美妙的音乐 --- 亲爱的,你慢慢飞,小心前面带刺的玫瑰!(让我想起了小品里说的,瞎啊!往刺上撞?)
那音响效果超赞,绝对立体声,如果再接个功放,那是相当有感觉,绝对可以达到院线效果。
我们一路走,丫的一路放,我的这个心啊,都碎了!
我无语,我崩溃,那些歌曲真的让我听的好累!
丫丫个呸的,这就是所谓的MTK!
这一路翻来覆去的《无所谓》整我直反胃!
终于到站,俺要下车了,机会终于来了,
憋了50分钟的我终于有了表达自己心意的机会了,
俺深情地望了一下这对神仙般摇头晃脑的鸳鸯,
还有那部超牛B的泛着神的光芒的山寨机,
我咬了咬嘴唇,浑身战栗着,
思绪万千,化作无言的泪水,
最后终于在汽车将近关门的一刹那,俺直挺挺、恶狠狠的抛出一句话:
大哥,你的山寨机很好,很弓虽大,哪儿买地?
#!/bin/bash
#得到1970年到今天的累计天数
get_day()
{
Begin_Year=1970
TO_Year=`date +%Y`
L=`expr $TO_Year - $Begin_Year`
To_Mon=`date +m%d`
To_day=`date +%j`
nu=1
all_day=0
while [ $nu -le $L ]
do
Y=`expr $Begin_Year + $nu`
is_runnian=`expr $Y \% 4`
if [ $is_runnian -eq 0 ]
then
day_nu=366
else
day_nu=365
fi
nu=`expr $nu + 1`
all_day=`expr $all_day + $day_nu`
done
echo `expr $To_day + $all_day`
}
http://liba52.sourceforge.net/files/a52dec-0.7.4.tar.gz
liba52 is a free library for decoding ATSC A/52 streams. It is released under the terms of the GPL license.
The A/52 standard is used in a variety of applications, including digital television and DVD. It is also known as AC-3.
./configure
make
/usr/bin/ld: .libs/imdct.o: relocation R_X86_64_32S against `a local symbol' can not be used when making a shared object; recompile with -fPIC
.libs/imdct.o: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[1]: *** [liba52.la] Error 1
make[1]: Leaving directory `/home/buynintw/src/a52dec-0.7.4/liba52'
make: *** [install-recursive] Error 1
This trouble me for a week!!!
Finally I resolve it!
Just do below:
./configure --prefix=/usr --enable-shared 'CFLAGS=-fPIC'
make && make install
nagios的check_ping命令:
可以在其他程序中调用check_ping命令,作为辅助的网络检测工具。




