• Category Archives: tomcat

使用jconsole远程监控tomcat的性能

1、修改tomcat的启动文件,在启动文件的CATALINA_OPTS(如果是daemon.sh启动则为JAVA_OPTS)变量中加上以下参数:

-Djava.rmi.server.hostname=[服务器IP] -Dcom.sun.management.jmxremote.port=[用于监控的端口] -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false

2、打开jconsole,输入服务器的IP和监控端口,账号密码为服务器的登录账号和密码,点连接即可。

Tomcat的性能与最大并发(1000)

当一个进程有 500 个线程在跑的话,那性能已经是很低很低了。Tomcat 默认配置的最大请求数是 150,也就是说同时支持 150 个并发,当然了,也可以将其改大。
当某个应用拥有 250 个以上并发的时候,应考虑应用服务器的集群。
具体能承载多少并发,需要看硬件的配置,CPU 越多性能越高,分配给 JVM 的内存越多性能也就越高,但也会加重 GC 的负担。
操作系统对于进程中的线程数有一定的限制:
Windows 每个进程中的线程数不允许超过 2000
Linux 每个进程中的线程数不允许超过 1000
另外,在 Java 中每开启一个线程需要耗用 1MB 的 JVM 内存空间用于作为线程栈之用。
Tomcat的最大并发数是可以配置的,实际运用中,最大并发数与硬件性能和CPU数量都有很大关系的。更好的硬件,更多的处理器都会使Tomcat支持更多的并发。
Tomcat 默认的 HTTP 实现是采用阻塞式的 Socket 通信,每个请求都需要创建一个线程处理。这种模式下的并发量受到线程数的限制,但对于 Tomcat 来说几乎没有 BUG 存在了。
Tomcat 还可以配置 NIO 方式的 Socket 通信,在性能上高于阻塞式的,每个请求也不需要创建一个线程进行处理,并发能力比前者高。但没有阻塞式的成熟。
这个并发能力还与应用的逻辑密切相关,如果逻辑很复杂需要大量的计算,那并发能力势必会下降。如果每个请求都含有很多的数据库操作,那么对于数据库的性能也是非常高的。
对于单台数据库服务器来说,允许客户端的连接数量是有限制的。
并发能力问题涉及整个系统架构和业务逻辑。
系统环境不同,Tomcat版本不同、JDK版本不同、以及修改的设定参数不同。并发量的差异还是满大的。
maxThreads=”1000″ 最大并发数
minSpareThreads=”100″///初始化时创建的线程数
maxSpareThreads=”500″///一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。
acceptCount=”700″// 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理

<Connector port="9682" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
			   minSpareThreads="256" maxSpareThreads="8192" maxThreads="8192" acceptCount="2000"
			   />

 

Redirect apache to tomcat 8 with mod proxy

I’m trying to redirect Apache Webserver to Tomcat 8 in Ubuntu. Both of them are working properly but I can’t redirect from port 80 in Apache to Tomcat in 8080. My apps work un http://localhost:8080/cmsand myapp. I followed this. I tried also AJP mod but it didn’t work. I used a2enmod: a2enmod proxyand a2enmod proxy_http to enable modules.

This is my apache2/sites-available/000-default.conf.

<VirtualHost *:80>
ProxyRequests off
ProxyPreserveHost on

ServerAdmin webmaster@localhost
DocumentRoot /var/www/html

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

ProxyPass         /myapp  http://localhost:8082/myapp
ProxyPassReverse  /myapp  http://localhost:8082/myapp

ProxyPass         /cms  http://localhost:8082/cms
ProxyPassReverse  /cms  http://localhost:8082/cms

</VirtualHost>

These are my servlet.xml connectors:

   <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Connector port="8082" proxyPort="80"/>
    <Connector port="8009" redirectPort="8443" protocol="AJP/1.3"/>

Using ProxyPass /cms http://localhost:8080/cms don’t work either.

Thanks in advance.

Ubuntu下配置Tomcat以指定(非root)身份运行

通常情况下,在配置Tomcat生产环境时,通常会配置Tomcat以特定的身份运行(非root),这样有利于提高安全性,防止网站被黑后的进一步权限提升。

本文依赖的环境:

Ubuntu(其实大部分同样适用于CentOS)JVM(安装并已配置好环境变量)gcc、make等编译工具JAVA_HOME=/usr/lib/jvm/jdk1.7.0_55CATALINA_HOME=/usr/local/apache-tomcat-7.0.53运行Tomcat的用户名为tomcat

首先需要到Apache Tomcat官网下载最新版Tomcat

Apache Tomcat:http://tomcat.apache.org

下载好安装包,解压到/home/apache-tomcat-7.0.67下

# 进入Tomcat安装目录下的bin目录
cd /home/apache-tomcat-7.0.67/bin

# 解压commons-daemon-native.tar.gz
tar zxvf commons-daemon-native.tar.gz

cd commons-daemon-1.0.15-native-src/unix

# 这里需要gcc、make等编译工具,如果没有指定JAVA_HOME环境变量,则需要 --with-java= 参数指定jdk目录
./configure

# 上一步成功后,make
make

# make后,会在当前文件夹下生成一个名为 jsvc 的文件,将其复制到$CATALINA_HOME/bin目录
cp jsvc ../../

# 添加一个用来运行Tomcat的用户
useradd tomcat -M -d / -s /usr/sbin/nologin

# 回到$CATALINA_HOME/bin目录下
cd ../../

# 接下来便是修改$CATALINA_HOME/bin目录下的 daemon.sh 文件
# 设置其中的TOMCAT_USER=tomcat,JAVA_HOME=/usr/java/jdk1.7.0_79

# 如果$CATALINA_HOME/bin下的*.sh文件没有运行权限,则为其添加运行权限
chmod +x *.sh

# 设置$CATALINE_HOME文件夹及其所有子文件Owner为tomcat
chown -R tomcat:tomcat /home/apache-tomcat-7.0.67

# 启动Tomcat
daemon.sh start

设置Tomcat为Service

# 创建 $CATALINA_HOME/bin/daemon.sh 的一个链接到 /etc/init.d/ 下,service名为tomcat7
ln -s /home/apache-tomcat-7.0.67/bin/daemon.sh /etc/init.d/tomcat7

# 启动Tomcat
/etc/init.d/tomcat7 start
# 或者
service tomcat7 start

设置Tomcat开机自启动 (前提是已经设置Tomcat为Service)

# 设置开机自启动
update-rc.d tomcat7 defaults

# 取消开机自启动
update-rc.d tomcat7 remove

把解压缩版的tomcat6注册成服务并设置自启动

操作步骤:
1、在“开始”→“运行”中输入cmd 命令,进入MS-DOS界面
2、cd 到tomcat的bin目录下
C:\> cd tomcat/bin
3、运行命令service install, 就可以把tomcat注册成系统服务了
c:\tomcat\bin> service install
运行命令service uninstall,就可以删除服务。
c:\tomcat\bin> service uninstall

当然,这样注册出来的服务启动类型是手动的;若想设置为开机自动启动,则需要修改bin目录下的service.bat文件。
打开此文件,在倒数第三行左右的那句输出
echo The service ‘%SERVICE_NAME%’ has been installed.
这句是输出服务安装成功,在这之前加一句
sc config %SERVICE_NAME% start= auto
就OK了,以后开机后tomcat服务就自动启动了

备注:
启动/停止tomcat服务的命令,如下:
启动tomcat服务: c:\tomcat> net start tomcat6
停止tomcat服务: c:\tomcat> net stop tomcat6
或者
打开“服务”对话框下进行手动点击“启动”|“停止”按钮来操作。

close