在Java应用程序开发中,启动时间是非常重要的一个因素。随着应用程序规模的不断增大和复杂度的提高,启动时间也越来越长,这对于用户体验和可用性都是不利的。
10年积累的成都网站制作、成都网站设计经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有通榆免费网站建设让你可以放心的选择与我们合作。
为了解决这个问题,linux jsvc应运而生。本文将详细介绍Linux jsvc是什么,以及如何使用它来提高Java应用程序的启动性能。
什么是Linux jsvc?
Linux jsvc是Apache Commons Daemon项目(简称Commons Daemon)中的一个称为“VC”的工具,用于创建守护进程。一个守护进程就像是一个常驻内存的后台服务,负责执行一些特定的任务,例如Web服务器的响应、发送邮件、网络安全等。通过使用守护进程,我们可以将工作从前台线程中分离出来,以提高系统的稳定性和可用性。
Linux jsvc使用C语言和Java Native Interface (JNI)技术来在本机和Java虚拟机之间建立连接,并创建一个守护进程。在启动过程中,它使用Java的反射机制来调用Java类和方法来执行应用程序的核心功能。Linux jsvc可以跨平台使用,支持Linux、Windows、Solaris和FreeBSD等操作系统。
Linux jsvc如何提高Java应用程序的启动性能?
在默认情况下,Java虚拟机(JVM)需要加载所有的类、执行静态初始化块、创建对象等等,这些操作需要花费很长的时间。对于较大的应用程序,这些操作可能需要几十秒钟或甚至几分钟的时间。
Linux jsvc通过一个特殊的机制,可以在Java虚拟机中运行一个预先初始化的Java类,这样在真正的应用程序加载之前,就可以先加载好JVM。这种方法可以提高启动速度和响应性,提高用户体验。
此外,Linux jsvc还提供了一些额外的功能,如支持将Java应用程序作为系统服务运行、支持多线程的应用程序、支持系统日志记录和管理等等。这些功能可以大大提高Java应用程序的运行效率和可靠性。
如何在Linux jsvc上使用Java应用程序?
在使用Linux jsvc之前,你需要确认你的操作系统支持Apache Commons Daemon项目,并安装相关的软件。
接下来,你需要编辑一个VC XML文件,指定Java虚拟机参数、主类名、类路径等等。例如:
“`
/usr/lib/myapp.jar
com.example.MyApp
myuser
/var/run/myapp.pid
/var/log/myapp.log
/var/log/myapp.err
“`
其中,“classpath”指定需要加载的Jar文件, “class”指定需要运行的Java类名, “user”指定服务运行的用户, “pidfile”指定存储进程ID的文件路径,“outfile”和“errfile”指定输出日志和错误日志的文件路径。
然后,你可以使用VC命令来运行应用程序,例如:
“`
jsvc -debug -cp /usr/lib/myapp.jar -pidfile /var/run/myapp.pid com.example.MyApp
“`
其中,“-debug”指定启动调试模式, “-cp”指定Jar文件路径,“-pidfile”指定存储进程ID的文件路径,“com.example.MyApp”指定要启动的Java类名。
在日常的Java应用程序开发中,我们经常需要面临启动时间较长的问题。通过使用Linux jsvc,我们可以大大提高Java应用程序的启动性能,并提高用户体验和可用性。虽然Linux jsvc有一些学习曲线,但它的功能很强大,提供了很多额外的好处,在一些特定的场景中是非常有价值的。
相关问题拓展阅读:
你看看这个:
tomcat6_apache2.2_ajp负者扮清载均衡加集群实战
环境:
—
一台apache2.2服务器,三台tomcat服务器:
apache2.2服务器
1.ip:192.168.1.20
2.只装apache软件:httpd-2.2.6.tar.bz2
安装路径:/usr/local/apache2
tomcat服务器:均配置相同的应用。
1.集群名:
2.三台集群服务器ip:
IP_1:192.168.1.31
IP_2:192.168.1.32
IP_3:192.168.1.33
3.测试应用程序test文件夹放在tomcat6的webapps目录下
操作系统均为:centos 4.5_x86
jre:1.6:jdk-6u1-linux-i586-rpm.bin
tomcat6.0:编译好的二进制软件包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来启动tomcat6
tomcat6开机自动启动脚本:/etc/init.d/tomcat
下载路径:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
一:前言:
1.apache对tomcat集群支持有俩种方式:
a.通过apache2.1之后版本后内置的proxy_ajp。
b.对于apache2.1之版本则通过tomcat的jk2.0.4的mod_jk2.so:
(该版本已经停止开发)
将解压缩后的目录中的modules目录中的mod_jk2.so
文件复制到apache的安装目录下的modules目录中。
********************
俩种方式比较:
proxy_ajp配置较简单,主要表现在proxy_ajp目前只支持配置到目缺正录,
还不支持对文件名称的pattern模式匹配
(即还不能定义到只对jsp文件起作用)。
而jk2则可首前配置性强,但已经停止开发
********************
官方对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
–现在采用的该方式:内部机器集群少采用
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.负载均衡(load-balance)定义:
在服务器端短时间内获得大量的请求,单一服务器无法在一个较短的时间内响应这些请求,
此时服务器需要一个机制,请求按照多个服务器不同的负载能力,把这些请求合理的分配。
4.集群(cluster):
在多个服务器之间共享用户信息,资源等。
tomcat6_apache2.2负载均衡加集群:高可用性至高体现。
现在的带集群功能相关软件oracle10g,mysql5,tomcat等。
二:软件安装
1.apache服务器安装:
这里主要介绍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
注释:这里测试用,编译了所有可用模块,并激活了tomcat集群需要的
enable-proxy,enable-proxy-http,enable-proxy-connect,enable-proxy-ajp
和enable-proxy-balancer,其中proxy-ajp和proxy-balancer必须依赖proxy,
如果是自定义的编译除了以上几个必须的模块外,mod_status也要编译进去,切记。
enable-proxy-ftp可以不编译。
# make
# make install
2. 三台tomcat服务器安装
主要介绍jdk1.6u1和tomcat6的安装,三台机器重复此工作就可以了,
当然记得ip一定要设置正确。
jdk1.6安装
—
a.卸载系统自带jdk
# rpm -e j2sdk-1.4.1-fcs
b.安装新jdk
# cd /home/xiutuo/software
进入软件包存放目录
# chmod a+x jdk-6u1-linux-i586-rpm.bin
使它有执行权限
# ./jdk-6u1-linux-i586-rpm.bin
多敲几个空格,然后看到的时候输入yes,回车
然后在当前目录下就生成了jdk-6u1-linux-i586-rpm
# rpm -ivh jdk-6u1-linux-i586-rpm
c.设置环境变量
仅设置某个用户而不是所有用户可以修改~/.cshrc,~/.bash_profile文件,
追加下面一段,如果为所有用户以及以后添加的用户都加上环境变量的话,
追加/etc/profie文件.
***主意不要在profile和~/.cshrc或~/.bash_profile中重复追加**
这里:
# vi /etc/profile
//java
//如果你安装的j2sdk的路径不一样,请自行修改
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:测试成功否
# 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)
看到这个消息,就ok啦
—-
tomcat6安装
tomcat6更详细的安装请看blog上tomcat文章
—-
a.安装tomcat,
# cd /home/xiutuo/software//进入软件包存放目录
# tar -zvxf apache-tomcat-6.0.13.tar.gz//解压
# mv apache-tomcat-6.0.13 /usr/local/tomcat6 //安装
# cd /usr/local/tomcat6/bin/ //进入安装目录
# tar -zvxf jsvc.tar.gz//解压
# cd jsvc-src //进入jsvc-src目录
# autoconf
# ./configure –with-java=/usr/java/jdk1.6.0_01
# configure时切记加java的jdk路径,否则无法使用普通用户开机自动启动tomcat
# make//编译生成jsvc文件
# cp jsvc .. //拷贝jsvc到上级目录
# cd ..//回到上级目录
# cd /usr/local/tomcat6/
//运行下面的命令可以使tomcat以daemon方式运行
# ./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
内容如下:
请修改tomcat里所有定义用户的密码:即修改password为自己想要的值。
d.把应用程序文件夹test放到webapps下
3.tomcat负载均衡和集群配置
参考官方配置文档:
a.tomcat6配置文件server.xml和应用程序的web.xml
**开放负载均衡,默认使用ajp协议时使用8009端口(使用http协议时为8080端口)
**修改tomcat 的 conf/server.xml 的(使用ajp协议时配置)
把
–>
改成
–>
说明:
之一台tomcat就把jvmRoute=”tomcat1″
第二台tomcat就把jvmRoute=”tomcat2″
第三台tomcat就把jvmRoute=”tomcat3″
**开放集群
**修改tomcat 的 conf/server.xml (使用ajp协议时配置)
在 后面或者 后面简单的加上
也可以加上更详细参数的集群配置内容(这是官方默认,请自行修改相关参数):
***配置应用的web.xml
***在每个webapps应用中,修改配置文件web.xml文件 添加元素
在web.xml文件中元素下增加以下内容:
具体修改如下:
修改前:
修改后:
4.配置apache的ajp负载均衡功能,这里请务必启用反向代理。
******************************
至于其中的原理请参考官方文档说明。
正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。
正向代理还可以使用缓冲特性(由mod_cache提供)减少网络使用率。
反向代理的典型用途是将防火墙后面的服务器提供给Internet用户访问。
反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。
另外,还可以启用高级URL策略和管理技术,从而使处于不同web服务器系统的web页面同时
存在于同一个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为代理转发的Url,即将所有访问/的请求转发到
群集
BalancerMember为群集的成员,
即群集服务器1或2或3,负载均衡服务器会根据均衡规则来将请求转发给BalancerMember。
配置好后,启动Apahce服务器,访问localhost就会看到群集服务器中应用返回的结果。
访问
,显示负载均衡有关信息
5.调试负载均衡集群系统
调试前务必:
先开启三台tomcat6服务器的tomcat服务!
再开启apache服务器的apache服务,切记!
a.开启tomcat服务
# cd /usr/local/tomcat6/bin
# ./shutdown.sh //停止tomcat
# ./start.sh //启动tomcat
查看tomcat的进程:
# ps -e | grep java
出现了java这个进程的话,说明你的tomcat起来了。
b.开启apache服务
# cd /usr/local/apache2/bin
# ./apachectl configtest
//命令检查一下配置是否有误,显示Syntax OK,说明配置正确
# ./apachectl stop //停止apache
# ./apachectl start //启动apache
6.检验是否负载均衡集群系统成功
访问apache服务器的web服务
如果显示负载均衡有关信息则说明成功了。
接着可以访问
即访问到了tomcat的test应用
7.具体的tomcat集群负载均衡优化请参考文档自行设置相关参数
具体的apache优化请参考文档自行设置相关参数
linux jsvc的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux jsvc,了解Linux jsvc:提高Java应用程序的启动性能,tomcat6.0怎么修改配置文件server.xml以便启用Ajp13的信息别忘了在本站进行查找喔。
香港服务器选创新互联,2H2G首月10元开通。
创新互联(www.cdcxhl.com)互联网服务提供商,拥有超过10年的服务器租用、服务器托管、云服务器、虚拟主机、网站系统开发经验。专业提供云主机、虚拟主机、域名注册、VPS主机、云服务器、香港云服务器、免备案服务器等。
网站栏目:了解Linuxjsvc:提高Java应用程序的启动性能(linuxjsvc)
文章网址:http://www.shufengxianlan.com/qtweb/news7/91107.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联