新聞中心
在Java應(yīng)用程序開發(fā)中,啟動(dòng)時(shí)間是非常重要的一個(gè)因素。隨著應(yīng)用程序規(guī)模的不斷增大和復(fù)雜度的提高,啟動(dòng)時(shí)間也越來越長(zhǎng),這對(duì)于用戶體驗(yàn)和可用性都是不利的。

10年積累的成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有通榆免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
為了解決這個(gè)問題,linux jsvc應(yīng)運(yùn)而生。本文將詳細(xì)介紹Linux jsvc是什么,以及如何使用它來提高Java應(yīng)用程序的啟動(dòng)性能。
什么是Linux jsvc?
Linux jsvc是Apache Commons Daemon項(xiàng)目(簡(jiǎn)稱Commons Daemon)中的一個(gè)稱為“VC”的工具,用于創(chuàng)建守護(hù)進(jìn)程。一個(gè)守護(hù)進(jìn)程就像是一個(gè)常駐內(nèi)存的后臺(tái)服務(wù),負(fù)責(zé)執(zhí)行一些特定的任務(wù),例如Web服務(wù)器的響應(yīng)、發(fā)送郵件、網(wǎng)絡(luò)安全等。通過使用守護(hù)進(jìn)程,我們可以將工作從前臺(tái)線程中分離出來,以提高系統(tǒng)的穩(wěn)定性和可用性。
Linux jsvc使用C語言和Java Native Interface (JNI)技術(shù)來在本機(jī)和Java虛擬機(jī)之間建立連接,并創(chuàng)建一個(gè)守護(hù)進(jìn)程。在啟動(dòng)過程中,它使用Java的反射機(jī)制來調(diào)用Java類和方法來執(zhí)行應(yīng)用程序的核心功能。Linux jsvc可以跨平臺(tái)使用,支持Linux、Windows、Solaris和FreeBSD等操作系統(tǒng)。
Linux jsvc如何提高Java應(yīng)用程序的啟動(dòng)性能?
在默認(rèn)情況下,Java虛擬機(jī)(JVM)需要加載所有的類、執(zhí)行靜態(tài)初始化塊、創(chuàng)建對(duì)象等等,這些操作需要花費(fèi)很長(zhǎng)的時(shí)間。對(duì)于較大的應(yīng)用程序,這些操作可能需要幾十秒鐘或甚至幾分鐘的時(shí)間。
Linux jsvc通過一個(gè)特殊的機(jī)制,可以在Java虛擬機(jī)中運(yùn)行一個(gè)預(yù)先初始化的Java類,這樣在真正的應(yīng)用程序加載之前,就可以先加載好JVM。這種方法可以提高啟動(dòng)速度和響應(yīng)性,提高用戶體驗(yàn)。
此外,Linux jsvc還提供了一些額外的功能,如支持將Java應(yīng)用程序作為系統(tǒng)服務(wù)運(yùn)行、支持多線程的應(yīng)用程序、支持系統(tǒng)日志記錄和管理等等。這些功能可以大大提高Java應(yīng)用程序的運(yùn)行效率和可靠性。
如何在Linux jsvc上使用Java應(yīng)用程序?
在使用Linux jsvc之前,你需要確認(rèn)你的操作系統(tǒng)支持Apache Commons Daemon項(xiàng)目,并安裝相關(guān)的軟件。
接下來,你需要編輯一個(gè)VC XML文件,指定Java虛擬機(jī)參數(shù)、主類名、類路徑等等。例如:
“`
/usr/lib/myapp.jar
com.example.MyApp
myuser
/var/run/myapp.pid
/var/log/myapp.log
/var/log/myapp.err
“`
其中,“classpath”指定需要加載的Jar文件, “class”指定需要運(yùn)行的Java類名, “user”指定服務(wù)運(yùn)行的用戶, “pidfile”指定存儲(chǔ)進(jìn)程ID的文件路徑,“outfile”和“errfile”指定輸出日志和錯(cuò)誤日志的文件路徑。
然后,你可以使用VC命令來運(yùn)行應(yīng)用程序,例如:
“`
jsvc -debug -cp /usr/lib/myapp.jar -pidfile /var/run/myapp.pid com.example.MyApp
“`
其中,“-debug”指定啟動(dòng)調(diào)試模式, “-cp”指定Jar文件路徑,“-pidfile”指定存儲(chǔ)進(jìn)程ID的文件路徑,“com.example.MyApp”指定要啟動(dòng)的Java類名。
在日常的Java應(yīng)用程序開發(fā)中,我們經(jīng)常需要面臨啟動(dòng)時(shí)間較長(zhǎng)的問題。通過使用Linux jsvc,我們可以大大提高Java應(yīng)用程序的啟動(dòng)性能,并提高用戶體驗(yàn)和可用性。雖然Linux jsvc有一些學(xué)習(xí)曲線,但它的功能很強(qiáng)大,提供了很多額外的好處,在一些特定的場(chǎng)景中是非常有價(jià)值的。
相關(guān)問題拓展閱讀:
- tomcat6.0怎么修改配置文件server.xml以便啟用Ajp13
tomcat6.0怎么修改配置文件server.xml以便啟用Ajp13
你看看這個(gè):
tomcat6_apache2.2_ajp負(fù)者扮清載均衡加集群實(shí)戰(zhàn)
環(huán)境:
—
一臺(tái)apache2.2服務(wù)器,三臺(tái)tomcat服務(wù)器:
apache2.2服務(wù)器
1.ip:192.168.1.20
2.只裝apache軟件:httpd-2.2.6.tar.bz2
安裝路徑:/usr/local/apache2
tomcat服務(wù)器:均配置相同的應(yīng)用。
1.集群名:
2.三臺(tái)集群服務(wù)器ip:
IP_1:192.168.1.31
IP_2:192.168.1.32
IP_3:192.168.1.33
3.測(cè)試應(yīng)用程序test文件夾放在tomcat6的webapps目錄下
操作系統(tǒng)均為:centos 4.5_x86
jre:1.6:jdk-6u1-linux-i586-rpm.bin
tomcat6.0:編譯好的二進(jìn)制軟件包apache-tomcat-6.0.13.tar.gz
tomcat6.0 安裝路徑:/usr/local/tomcat6
oralce的jdbc:class12.jar
軟件包存放的路徑:/home/xiutuo/software/
java安裝路徑:/usr/java/jdk1.6.0_01
使用普通用戶:xiutuo來啟動(dòng)tomcat6
tomcat6開機(jī)自動(dòng)啟動(dòng)腳本:/etc/init.d/tomcat
下載路徑:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
一:前言:
1.apache對(duì)tomcat集群支持有倆種方式:
a.通過apache2.1之后版本后內(nèi)置的proxy_ajp。
b.對(duì)于apache2.1之版本則通過tomcat的jk2.0.4的mod_jk2.so:
(該版本已經(jīng)停止開發(fā))
將解壓縮后的目錄中的modules目錄中的mod_jk2.so
文件復(fù)制到apache的安裝目錄下的modules目錄中。
********************
倆種方式比較:
proxy_ajp配置較簡(jiǎn)單,主要表現(xiàn)在proxy_ajp目前只支持配置到目缺正錄,
還不支持對(duì)文件名稱的pattern模式匹配
(即還不能定義到只對(duì)jsp文件起作用)。
而jk2則可首前配置性強(qiáng),但已經(jīng)停止開發(fā)
********************
官方對(duì)ajp和jk2說明:
JK2 has been put in maintainer mode and no further development will take place.
The reason for shutting down JK2 development was the lack of developers interest.
Other reason was lack of users interest in adopting JK2,
caused by configuration complexity when compared to JK.
The latest official JK2 release is 2.0.4.
JK2 will have it’s successor within core Apache2.1/2.2 distribution.
We have developed new proxy_ajp that is an addition to the mod_proxy
and uses Tomcat’s AJP protocol stack. It is developped in httpd-2.1
and integrated in it. We have also developed a new proxy_balancer
module for load balancing http and ajp protocol stacks.
JK will be fully supported for all other web servers.
The next JK release is planned for the end of November.
Lots of code from JK2 has been ported to JK
2.tomcat集群方式:
a.DeltaManager
–現(xiàn)在采用的該方式:內(nèi)部機(jī)器集群少采用
b.BackupManager
********************
兩種集群方式官方說明:
using the DeltaManager to replicate session deltas.
By all-to-all we mean that the session gets replicated to
all the other nodes in the cluster. This works great for aller cluster
but we don’t recommend it for larger clusters(a lot of tomcat nodes).
Also when using the delta manager it will replicate to all nodes,
even nodes that don’t have the application deployed.
To get around this problem, you’ll want to use the BackupManager.
This manager only replicates the session data to one backup node,
and only to nodes that have the application deployed.Downside of
the BackupManager: not quite as battle tested as the delta manager.
********************
3.負(fù)載均衡(load-balance)定義:
在服務(wù)器端短時(shí)間內(nèi)獲得大量的請(qǐng)求,單一服務(wù)器無法在一個(gè)較短的時(shí)間內(nèi)響應(yīng)這些請(qǐng)求,
此時(shí)服務(wù)器需要一個(gè)機(jī)制,請(qǐng)求按照多個(gè)服務(wù)器不同的負(fù)載能力,把這些請(qǐng)求合理的分配。
4.集群(cluster):
在多個(gè)服務(wù)器之間共享用戶信息,資源等。
tomcat6_apache2.2負(fù)載均衡加集群:高可用性至高體現(xiàn)。
現(xiàn)在的帶集群功能相關(guān)軟件oracle10g,mysql5,tomcat等。
二:軟件安裝
1.apache服務(wù)器安裝:
這里主要介紹apache2的源碼安裝
# cd /home/xiutuo/software/
# tar -zvxf httpd-2.2.6.tar.gz
# cd httpd-2.2.6
# mkdir -p /usr/local/apache2
# ./configure \
–prefix=/usr/local/apache2 \
–enable-modules=so \
–enable-mods-shared=all \
–enable-proxy \
–enable-proxy-connect \
–enable-proxy-ftp \
–enable-proxy-http \
–enable-proxy-ajp \
–enable-proxy-balancer
注釋:這里測(cè)試用,編譯了所有可用模塊,并激活了tomcat集群需要的
enable-proxy,enable-proxy-http,enable-proxy-connect,enable-proxy-ajp
和enable-proxy-balancer,其中proxy-ajp和proxy-balancer必須依賴proxy,
如果是自定義的編譯除了以上幾個(gè)必須的模塊外,mod_status也要編譯進(jìn)去,切記。
enable-proxy-ftp可以不編譯。
# make
# make install
2. 三臺(tái)tomcat服務(wù)器安裝
主要介紹jdk1.6u1和tomcat6的安裝,三臺(tái)機(jī)器重復(fù)此工作就可以了,
當(dāng)然記得ip一定要設(shè)置正確。
jdk1.6安裝
—
a.卸載系統(tǒng)自帶jdk
# rpm -e j2sdk-1.4.1-fcs
b.安裝新jdk
# cd /home/xiutuo/software
進(jìn)入軟件包存放目錄
# chmod a+x jdk-6u1-linux-i586-rpm.bin
使它有執(zhí)行權(quán)限
# ./jdk-6u1-linux-i586-rpm.bin
多敲幾個(gè)空格,然后看到的時(shí)候輸入yes,回車
然后在當(dāng)前目錄下就生成了jdk-6u1-linux-i586-rpm
# rpm -ivh jdk-6u1-linux-i586-rpm
c.設(shè)置環(huán)境變量
僅設(shè)置某個(gè)用戶而不是所有用戶可以修改~/.cshrc,~/.bash_profile文件,
追加下面一段,如果為所有用戶以及以后添加的用戶都加上環(huán)境變量的話,
追加/etc/profie文件.
***主意不要在profile和~/.cshrc或~/.bash_profile中重復(fù)追加**
這里:
# vi /etc/profile
//java
//如果你安裝的j2sdk的路徑不一樣,請(qǐng)自行修改
JAVA_HOME=/usr/java/jdk1.6.0_01
export JAVA_HOME
CLASSPATH=/usr/java/jdk1.6.0_01/lib:/usr/java/jdk1.6.0_01/jre/lib
export CLASSPATH
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export PATH
JRE=/usr/java/jdk1.6.0_01/jre
export JRE
d:立即生效
//如果你修改的是/etc/profile
# source /etc/profile
//如果你修改的是~/.cshrc
# source ~/.cshrc
//如果你修改的是~/.bash_profile
# source ~/.bash_profile
e:測(cè)試成功否
# java -version
Java(TM) SE Runtime Environment (build 1.6.0_01-b06)
Java HotSpot(TM) Client VM (build 1.6.0_01-b06, mixed mode, sharing)
看到這個(gè)消息,就ok啦
—-
tomcat6安裝
tomcat6更詳細(xì)的安裝請(qǐng)看blog上tomcat文章
—-
a.安裝tomcat,
# cd /home/xiutuo/software//進(jìn)入軟件包存放目錄
# tar -zvxf apache-tomcat-6.0.13.tar.gz//解壓
# mv apache-tomcat-6.0.13 /usr/local/tomcat6 //安裝
# cd /usr/local/tomcat6/bin/ //進(jìn)入安裝目錄
# tar -zvxf jsvc.tar.gz//解壓
# cd jsvc-src //進(jìn)入jsvc-src目錄
# autoconf
# ./configure –with-java=/usr/java/jdk1.6.0_01
# configure時(shí)切記加java的jdk路徑,否則無法使用普通用戶開機(jī)自動(dòng)啟動(dòng)tomcat
# make//編譯生成jsvc文件
# cp jsvc .. //拷貝jsvc到上級(jí)目錄
# cd ..//回到上級(jí)目錄
# cd /usr/local/tomcat6/
//運(yùn)行下面的命令可以使tomcat以daemon方式運(yùn)行
# ./bin/jsvc -cp ./bin/bootstrap.jar \
-outfile ./logs/catalina.out \
-errfile ./logs/catalina.err \
org.apache.catalina.startup.Bootstrap
b.配置oralce的jdbc
//拷貝oracle的jdbc到/usr/local/tomcat6/lib目錄下
# cp /home/software/class12.jar ./lib/
c.配置tomcat用戶
# cd /usr/local/tomcat6/conf
# vi tomcat-users.xml
內(nèi)容如下:
請(qǐng)修改tomcat里所有定義用戶的密碼:即修改password為自己想要的值。
d.把應(yīng)用程序文件夾test放到webapps下
3.tomcat負(fù)載均衡和集群配置
參考官方配置文檔:
a.tomcat6配置文件server.xml和應(yīng)用程序的web.xml
**開放負(fù)載均衡,默認(rèn)使用ajp協(xié)議時(shí)使用8009端口(使用http協(xié)議時(shí)為8080端口)
**修改tomcat 的 conf/server.xml 的(使用ajp協(xié)議時(shí)配置)
把
–>
改成
–>
說明:
之一臺(tái)tomcat就把jvmRoute=”tomcat1″
第二臺(tái)tomcat就把jvmRoute=”tomcat2″
第三臺(tái)tomcat就把jvmRoute=”tomcat3″
**開放集群
**修改tomcat 的 conf/server.xml (使用ajp協(xié)議時(shí)配置)
在 后面或者 后面簡(jiǎn)單的加上
也可以加上更詳細(xì)參數(shù)的集群配置內(nèi)容(這是官方默認(rèn),請(qǐng)自行修改相關(guān)參數(shù)):
***配置應(yīng)用的web.xml
***在每個(gè)webapps應(yīng)用中,修改配置文件web.xml文件 添加元素
在web.xml文件中元素下增加以下內(nèi)容:
具體修改如下:
修改前:
修改后:
4.配置apache的ajp負(fù)載均衡功能,這里請(qǐng)務(wù)必啟用反向代理。
******************************
至于其中的原理請(qǐng)參考官方文檔說明。
正向代理的典型用途是為在防火墻內(nèi)的局域網(wǎng)客戶端提供訪問Internet的途徑。
正向代理還可以使用緩沖特性(由mod_cache提供)減少網(wǎng)絡(luò)使用率。
反向代理的典型用途是將防火墻后面的服務(wù)器提供給Internet用戶訪問。
反向代理還可以為后端的多臺(tái)服務(wù)器提供負(fù)載平衡,或?yàn)楹蠖溯^慢的服務(wù)器提供緩沖服務(wù)。
另外,還可以啟用高級(jí)URL策略和管理技術(shù),從而使處于不同web服務(wù)器系統(tǒng)的web頁面同時(shí)
存在于同一個(gè)URL空間下。
*****************************
參考文檔:
tomcat6官方文檔
apache中文版本
apache官方英文版本
***配置apache
***修改/usr/local/apache2/conf/httpd.conf文件
確保將以下Module的注釋去掉
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule status_module modules/mod_status.so
并在最后面,增加
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from all
SetHandler balancer-manager
Order Deny,Allow
Deny from all
Allow from all
ProxyRequests Off
ProxyPass /test stickysession=jsessionid nofailover=On
BalancerMember loadfactor=1
BalancerMember loadfactor=2
BalancerMember loadfactor=3
注釋:
ProxyRequests Off 表示啟用反向代理。
ProxyPass為代理轉(zhuǎn)發(fā)的Url,即將所有訪問/的請(qǐng)求轉(zhuǎn)發(fā)到
群集
BalancerMember為群集的成員,
即群集服務(wù)器1或2或3,負(fù)載均衡服務(wù)器會(huì)根據(jù)均衡規(guī)則來將請(qǐng)求轉(zhuǎn)發(fā)給BalancerMember。
配置好后,啟動(dòng)Apahce服務(wù)器,訪問localhost就會(huì)看到群集服務(wù)器中應(yīng)用返回的結(jié)果。
訪問
,顯示負(fù)載均衡有關(guān)信息
5.調(diào)試負(fù)載均衡集群系統(tǒng)
調(diào)試前務(wù)必:
先開啟三臺(tái)tomcat6服務(wù)器的tomcat服務(wù)!
再開啟apache服務(wù)器的apache服務(wù),切記!
a.開啟tomcat服務(wù)
# cd /usr/local/tomcat6/bin
# ./shutdown.sh //停止tomcat
# ./start.sh //啟動(dòng)tomcat
查看tomcat的進(jìn)程:
# ps -e | grep java
出現(xiàn)了java這個(gè)進(jìn)程的話,說明你的tomcat起來了。
b.開啟apache服務(wù)
# cd /usr/local/apache2/bin
# ./apachectl configtest
//命令檢查一下配置是否有誤,顯示Syntax OK,說明配置正確
# ./apachectl stop //停止apache
# ./apachectl start //啟動(dòng)apache
6.檢驗(yàn)是否負(fù)載均衡集群系統(tǒng)成功
訪問apache服務(wù)器的web服務(wù)
如果顯示負(fù)載均衡有關(guān)信息則說明成功了。
接著可以訪問
即訪問到了tomcat的test應(yīng)用
7.具體的tomcat集群負(fù)載均衡優(yōu)化請(qǐng)參考文檔自行設(shè)置相關(guān)參數(shù)
具體的apache優(yōu)化請(qǐng)參考文檔自行設(shè)置相關(guān)參數(shù)
linux jsvc的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于linux jsvc,了解Linux jsvc:提高Java應(yīng)用程序的啟動(dòng)性能,tomcat6.0怎么修改配置文件server.xml以便啟用Ajp13的信息別忘了在本站進(jìn)行查找喔。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
分享文章:了解Linuxjsvc:提高Java應(yīng)用程序的啟動(dòng)性能(linuxjsvc)
文章轉(zhuǎn)載:http://m.5511xx.com/article/dhedcgg.html


咨詢
建站咨詢
