使用apr和tomcat-native优化tomcat,提高tomcat的性能。

Apache Tomcat Native library 是干什么的呢?
这是 Apache 为了提升 Tomcat 的性能搞的一套本地化 Socket, Thread, IO 组件也就是说它有高级 IO 功能, 操作系统级别的功能调用, 以及本地进程处理等等, 这些都能使 Tomcat 更像一个 Web Server(像Apache那样), 而不是只能用来解释JSP, 也就是说提升单独的 Tomcat 作为服务器的吞吐性能.

一般情况下,APR开发包很轻易理解为仅仅是一个开发包,不过事实上并不是。目前,完整的APR实际上包含了三个开发包:apr、apr-util以及apr-iconv,每一个开发包分别独立开发,并拥有自己的版本。
apr包含了一些通用的开发组件,包括mmap,文件等等,前面已经描述过。
apr-util也是包含了一些常用的开发组件。这些组件与apr目录下的相比,它与apache的关系更加密切一些。比如存储段和存储段组,加密等等。
apr-iconv包中的文件主要用于实现iconv编码。目前的大部分编码转换过程都是与本地编码相关的。在进行转换之前必须能够正确地设置本地编码。因此假如两个非本地编码A和B需要转换,则转换过程大致为A->Local以及Local->B或者B->Local以及Local->A。
XPG2 标准中另外定义了一组全新的函式接口ICONV,该接口是一种更广义的字集转换系统。也是一个与本地编码无关的字集转换系统。APR中也支持这种字集转换系统,为此它提供了完整的实现。Apr-iconv正是为此目的而产生。

此次安装在64位centos 5.5系统
32位系统只需装32位jdk即可

所需文件
[code]
1. jdk-6u21-linux-x64.bin
http://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/VerifyItem-Start/jdk-6u21-linux-x64.bin?BundledLineItemUUID=H1eJ_hCyf.AAAAEqFAYUA7zE&OrderID=cFSJ_hCyoZEAAAEqAAYUA7zE&ProductID=xKiJ_hCySHIAAAEpT7wzBGsB&FileName=/jdk-6u21-linux-x64.bin

2. apr-1.4.2.tar
http://labs.renren.com/apache-mirror//apr/apr-1.4.2.tar.gz

3. apr-iconv-1.2.1.tar.gz
http://labs.renren.com/apache-mirror//apr/apr-iconv-1.2.1.tar.gz

4. apr-util-1.3.9.tar
http://labs.renren.com/apache-mirror//apr/apr-util-1.3.9.tar.gz

5. tomcat-native
http://apache.etoak.com//tomcat/tomcat-connectors/native/1.1.20/source/tomcat-native-1.1.20-src.tar.gz
[/code]
安装jdk
[code]
chmod +x jdk-6u21-linux-x64.bin
./jdk-6u21-linux-x64.bin
mv jdk1.6.0_21/ /usr/local/
[/code]

设置环境变量
[code]
vi /etc/profile
export JAVA_HOME=/usr/local/jdk1.6.0_21
export CLASSPATH=/usr/local/jdk1.6.0_21/lib/dt.jar:/usr/local/jdk1.6.0_21/lib/tools.jar
export PATH=/usr/local/jdk1.6.0_21/bin:$PATH
export PATH JAVA_HOME CLASSPATH
[/code]

安装tomcat
[code]
tar zxvf apache-tomcat-7.0.2.tar.gz
mv apache-tomcat-7.0.2 /usr/local/webserver/
vi /usr/local/webserver/tomcat/bin/catalina.sh
[/code]
在程序开头添加一句
JAVA_HOME=/usr/local/jdk1.6.0_21

优化tomcat
安装apr
[code]
tar zxvf apr-1.4.2.tar
cd apr-1.4.2
./configure –prefix=/usr/local/apr
make
make install
[/code]
安装apr-iconv
[code]
tar -zxvf apr-iconv-1.2.1.tar.gz
cd apr-iconv-1.2.1
./configure –prefix=/usr/local/apr-iconv –with-apr=/usr/local/apr
make
make install
[/code]
安装apr-util
[code]
tar zxvf apr-util-1.3.9.tar.gz
cd apr-util-1.3.9
./configure –prefix=/usr/local/apr-util –with-apr=/usr/local/apr –with-apr-iconv=/usr/local/apr-iconv/bin/apriconv
make
make install
[/code]
安装tomcat-native
[code]
tar zxvf tomcat-native-1.1.20-src.tar.gz
cd tomcat-native-1.1.20-src/jni/native
./configure –with-apr=/usr/local/apr –with-java-home=/usr/local/jdk1.6.0_21
make
make install
[/code]
添加环境变量
[code]
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib" >>/etc/profile
source /etc/profile
[/code]
启动tomcat
/usr/local/webserver/tomcat/bin/start.sh
less /usr/local/webserver/tomcat/logs/catalina.out

即可看到
Aug 29, 2010 3:47:32 PM org.apache.catalina.core.AprLifecycleListener init
INFO: Loaded APR based Apache Tomcat Native library 1.1.20.
表显已优化完成

八月 29th, 2010

Posted In: 未分类

最近一直在做系统及程序优化,原32位系统升级为64位系统,在对tomcat进行优化后,启动控制台报错,现提供本人解决方法
以下为报错代码
[code]
java.lang.UnsatisfiedLinkError: /usr/local/apr/lib/libtcnative-1.so.0.1.20: /usr/local/apr/lib/libtcnative-1.so.0.1.20: wrong ELF class: ELFCLASS64 (Possible cause: architecture word width mismatch)
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1751)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1676)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1030)
at org.apache.tomcat.jni.Library.<init>(Library.java:42)
at org.apache.tomcat.jni.Library.initialize(Library.java:168)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.core.AprLifecycleListener.init(AprLifecycleListener.java:157)
at org.apache.catalina.core.AprLifecycleListener.isAprAvailable(AprLifecycleListener.java:81)
at org.apache.catalina.connector.Connector.setProtocol(Connector.java:513)
at org.apache.catalina.connector.Connector.<init>(Connector.java:69)
at org.apache.catalina.startup.ConnectorCreateRule.begin(ConnectorCreateRule.java:62)
at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1283)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:501)
at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:179)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1339)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2747)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1544)
at org.apache.catalina.startup.Catalina.load(Catalina.java:524)
at org.apache.catalina.startup.Catalina.load(Catalina.java:560)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:260)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Aug 29, 2010 2:47:14 PM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/local/jdk1.6.0_07/jre/lib/i386/client:/usr/local/jdk1.6.0_ 07/jre/lib/i386:/usr/local/jdk1.6.0_07/jre/../lib/i386::/usr/local/apr/lib:/usr/java/packages/lib/i386:/li b:/usr/lib

[/code]

因更换系统后,原jdk 1.6.0_07不支持apr,故要将jdk进行升级,本人升级为jdk-6.21后圆满解决此问题
以下为jdk-6.21下载地址
http://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/VerifyItem-Start/jdk-6u21-linux-x64.bin?BundledLineItemUUID=H1eJ_hCyf.AAAAEqFAYUA7zE&OrderID=cFSJ_hCyoZEAAAEqAAYUA7zE&ProductID=xKiJ_hCySHIAAAEpT7wzBGsB&FileName=/jdk-6u21-linux-x64.bin

八月 29th, 2010

Posted In: 未分类

十岁以前,就不说了,无非是淘气和不懂事。

十三、四岁的时候,开始对女孩有好感,但是那时候他离女孩远远的,并且以讨厌女孩自居,生怕被同伴嘲笑。

十五岁的时候,听到大人们说某某男人好花,把女朋友甩了,女孩自杀了。他觉得这人真狠毒,自己将来一定要做个痴情的男人,一定要一生只爱一个人。

十六岁的时候,他喜欢上了一个女孩,但是他不敢和她说。仍然和往常一样,脏兮兮的在灰土飞扬的操场上踢球。只在女孩走出校门的时候,躲在二层的窗户上看她的背影,他觉得她一定是个天使。

十七岁的时候,有个女孩喜欢上了他,但是他离她很远,他心里面只有自己那个女孩, 他觉得看别的女孩都是对她的不忠。

十八岁的时候,看了一个MTV,感动得想哭,他想,如果自己的女孩失去了双眼,他一定 男主角会毫不犹豫的把自己的眼睛给她,让她能看到光明。

十九岁的时候,高考了。终于和自己暗恋的女孩分别,坐火车去学校的时候,感觉自己离她越来越远,心像被掏空了一样。还在想自己一定不会忘记她,等到自己成功以后一定要去找她。

二十岁的时候,听到有人讲黄色笑话,觉得这人真可耻。

二十一岁的时候,她的回信中告诉他,自己有了男朋友。偷偷的哭了一个晚上。

二十二岁的时候,他向一个女孩表白,女孩说“你是个好人,可是我还小。”他想,我的确是个好人,他说“没关系,我可以等你。”心想,我不会像那些花心的人一样,三年五年我也能等。

二十三岁的时候,说自己还小的女孩和一个帅哥恋爱了。他很纳闷,长大原来可以这快。

二十四岁的时候,他又向一个女孩表白,女孩说“你是个好人,可是我并不适合你。” 他纳闷很久,我是好人你怎么还不适合我呢?

二十五岁的时候,他又追求一个女孩,女孩接受了他。他开始很幸福的为未来拼搏,他 想,一时的开心只是暂时的,只有努力拼搏,他和她才能有快乐的未来,但是,半年以 后,女孩和他分手了。只是因为另外一个男孩会说让她开心的话。女孩说“你是个好人 ,是我对不起你。”他似乎明白了问题所在,他是个好人。

二十六岁的时候,他开始堕落,交网友。打扮得时尚而酷,而且渐渐的学习着讨好女孩 的话。不久,他有了个女朋友,虽然他对她也很好,可是,他心里知道,自己并不爱她 。

二十七岁的时候,他和女孩分手了。他对女孩说“你是个好女孩,是我对不起你。”

二十八岁的时候,他尝试了一夜情,发现别人能做的,自己也一样。

二十九岁的时候,他学会了讲黄色笑话,并且以看旁边的女孩子脸红为乐趣。

三十岁的时候,他忽然发现自己变得很有能力追求到女孩,但是却没有了爱的能力。于 是

他在自己QQ上写下了如下的话 *****************************************

其实每个男孩,本来都是想做一个感情专一的好男人的。
其实每个男孩,本来看女孩子都是看脸而不是胸部的。
其实每个男孩,本来都是不会讲黄色笑话的。
其实每个男孩,本来都是渴望爱一个人直到永远的。
只是,没有任何女孩爱这样的男孩,她们觉得这样的男孩太幼稚,太古板,没有情趣。
于是男孩开始改变,变成女孩喜欢的那种 嘴角挂着坏坏的笑,玩世不恭或者幽默
开始学会说甜言蜜语而不是心里想说的话 开始学会假装关心,学会给女孩送小饰物讨好她

学会如何追求,如何把握爱情。 或者看破红尘,游戏情场,成为女人恨恨的那种男人
他们可以很容易俘获女孩子的心 但是他们也会在黑的夜里叼着烟流泪 心里有爱的时候,没有女孩.有了女孩,却永远没有了爱的感觉 在听到女人抱怨世上没有一个好男人时候 他们不会再去努力做个好男人,只是微笑着擦肩而过

八月 22nd, 2010

Posted In: 未分类

无觅相关文章插件,快速提升流量