- 浏览: 719940 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
18335864773:
看了楼主写的用jxl生成excel。有地方用到了流,还特别强调 ...
jxl导出excel文件简单示例 -
shaoshou111:
查看Apache的并发请求数及其TCP连接状态netstat ...
Linux查看连接数,并发数 -
gengjunshi:
非常感谢哈,刚好在学webservice编程,很有用呢。
JAX-WS开发webservice示例详解 -
zcgewu:
encrypt2()和encrypt()有什么区别
JAVA实现AES加密 -
java爱好者92:
ireport的操作还是相对比较复杂的,帆软报表会相对简单一点 ...
iReport报表开发中常见的问题
1.分配给Tomcat足够大的内存空间。
压解版本中
文件位置 :bin\catalina.bat
这里增加了 :
以下是这条命令在catalina.bat文件中的位置:
rem $Id: catalina.bat 656834 2008-05-15 21:04:04Z markt $
rem ---------------------------------------------------------------------------
可以在catalina.bat文件最后加上一条命令:echo %JAVA_OPTS%>d:\JAVA_OPTS.log
安装版本中:
可以执行Apache Tomcat 6 Properties配置管理工具。
进入Java面板后设置相关的Java参数:
Java Options:加入
-XX:PermSize=128M
-XX:MaxNewSize=256m
-XX:MaxPermSize=256m
Initial memory pool :256 MB
Maximum memory pool :1024 MB
Thread stack size :1024 KB
2.设置Tomcat连接器相关参数。
连接器使用的线程池的名子:executor="tomcatThreadPool"
连接器端口 :port="8090"
连接器使用的传输方式 :protocol="org.apache.coyote.http11.Http11NioProtocol"
传输时是否支持压缩 :compression="on"
压缩的大小 :compressionMinSize="2048"
3.设置Tomcat连接器池。
线程池名: name="tomcatThreadPool"
线程前缀: namePrefix="catalina-exec-"
最大产生线程数:maxThreads="800"
最小初始现程数:minSpareThreads="400"
最大初始现程数:minSpareThreads="700"
4.开启Tomcat6的Nio机制。
5.设置Tomcat安全相关。
设置:\apache-tomcat-6.0.18\conf\web.xml
设置Manager用户名和密码
文件位置:
使用ab工具简单测试Tomcat并发。
1. JVM
1.1. 使用 Server JRE 替代JDK。
服务器上不要安装JDK,请使用 Server JRE. 服务器上根本不需要编译器,代码应该在Release服务器上完成编译打包工作。
理由:一旦服务器被控制,可以防止在其服务器上编译其他恶意代码并植入到你的程序中。
1.2. JAVA_OPTS
-Xms 指定初始化时化的栈内存
-Xmx 指定最大栈内存
2. Tomcat 优化
2.1. maxThreads 连接数限制
maxThreads 是 Tomcat 所能接受最大连接数。一般设置不要超过8000以上,如果你的网站访问量非常大可能使用运行多个Tomcat实例的方法。
即,在一个服务器上启动多个tomcat然后做负载均衡处理。
提示
很多做过php运维的朋友在这里会犯一个大错误,php优化服务器通常怎做法是安装cpu以及内存的情况配置连接数,连接数过万都很正常,但java不同jvm配置要非常小心,稍有差错就会崩溃。
maxThreads 配置要结合 JVM -Xmx 参数调整,也就是要考虑内存开销。
2.2. 虚拟主机
不要使用Tomcat的虚拟主机,每个站点一个实例。即,启动多个tomcat.
这也是PHP运维在这里常犯的错误,PHP的做法是一个Web下面放置多个虚拟主机,而不是每个主机启动一个web服务器。Tomcat 是多线程,共享内存,任何一个虚拟主机中的应用出现崩溃,会影响到所有应用程序。采用多个实例方式虽然开销比较大,但保证了应用程序隔离与安全。
2.3. 压错传输
通常所说的gzip压缩,Tomcat通过在server.xml配置设置压缩的选项。
提示
压缩会增加Tomcat负担,最好采用Nginx + Tomcat 或者 Apache + Tomcat 方式,压缩交由Nginx/Apache 去做。
3. Tomcat 安全配置
3.1. 安装后初始化配置
当Tomcat完成安装后你首先要做的事情如下:
首次安装完成后立即删除webapps下面的所有代码
注释或删除 tomcat-users.xml 所有用户权限,看上去如下:
隐藏Tomcat版本信息
服务器信息已经被改为 Server: Neo App Srv 1.0
3.2. 启动用户与端口
不要使用root用户启动tomcat,Java程序与C程序不同。nginx,httpd 使用root用户启动守护80端口,子进程/线程会通过setuid(),setgid()两个函数切换到普通用户。即父进程所有者是root用户,子进程与多线程所有者是一个非root用户,这个用户没有shell,无法通过ssh与控制台登陆系统,Java 的JVM 是与系统无关的,是建立在OS之上的,你使用什么用户启动Tomcat,那麽Tomcat 就会继承该所有者的权限。
这造成了一个问题,Linux系统小于1024的端口只有root可以使用,这也是为什么Tomcat默认端口是8080。如果你想使用80端口只能使用root启动Tomcat。这有带来了很多安全问题。
解决方案是创建一个不同用户,如:
注意 /sbin/nologin , 意味着该用户不能登录,同时我也没有给它指定密码,这个用户只能用于启动tomcat
接下来解决80端口问题, 思路就是80去调用8080,或者映射端口。
下面是影射方案,80 跳转 8080
取消跳转
查看规则
另一个就是从80请求去调用8080的方案
这个方案可以在 Tomcat 前段增加反向代理,例如:Nginx,Apache,Squid,Varnish或者F5, Array这类设备等等
3.3. 应用程序安全
关闭war自动部署 unpackWARs="false" autoDeploy="false"。防止被植入木马等恶意程序
应用程序部署与tomcat启动,不能使用同一个用户。
我的tomcat 安装在 /srv目录下,Tomcat启动用户为daemon; 应用程序放在/www目录下www所有者是www用户。这样的目的是一旦tomcat被植入web shell程序,它将不能创建或编辑/www目录下面的任何内容。
3.4. JSESSIONID
修改 Cookie 变量 JSESSIONID, 这个cookie 是用于维持Session关系。建议你改为PHPSESSID
压解版本中
文件位置 :bin\catalina.bat
这里增加了 :
set JAVA_OPTS=-Xms1024m -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=256m
以下是这条命令在catalina.bat文件中的位置:
rem $Id: catalina.bat 656834 2008-05-15 21:04:04Z markt $
rem ---------------------------------------------------------------------------
set JAVA_OPTS=-Xms1024m -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=256m rem Guess CATALINA_HOME if not defined
可以在catalina.bat文件最后加上一条命令:echo %JAVA_OPTS%>d:\JAVA_OPTS.log
安装版本中:
可以执行Apache Tomcat 6 Properties配置管理工具。
进入Java面板后设置相关的Java参数:
Java Options:加入
-XX:PermSize=128M
-XX:MaxNewSize=256m
-XX:MaxPermSize=256m
Initial memory pool :256 MB
Maximum memory pool :1024 MB
Thread stack size :1024 KB
2.设置Tomcat连接器相关参数。
<Connector executor="tomcatThreadPool" port="8090" redirectPort="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" compression="on" compressionMinSize="2048" enableLookups="false" acceptCount="1000" URIEncoding="UTF-8" connectionTimeout="40000" />
连接器使用的线程池的名子:executor="tomcatThreadPool"
连接器端口 :port="8090"
连接器使用的传输方式 :protocol="org.apache.coyote.http11.Http11NioProtocol"
传输时是否支持压缩 :compression="on"
压缩的大小 :compressionMinSize="2048"
3.设置Tomcat连接器池。
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="800" minSpareThreads="400" maxSpareThreads="700"/>
线程池名: name="tomcatThreadPool"
线程前缀: namePrefix="catalina-exec-"
最大产生线程数:maxThreads="800"
最小初始现程数:minSpareThreads="400"
最大初始现程数:minSpareThreads="700"
4.开启Tomcat6的Nio机制。
protocol="org.apache.coyote.http11.Http11NioProtocol"
5.设置Tomcat安全相关。
设置:\apache-tomcat-6.0.18\conf\web.xml
<init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param>
设置Manager用户名和密码
文件位置:
D:\apache-tomcat-6.0.18\conf\ tomcat-users.xml <?xml version='1.0' encoding='utf-8'?> <tomcat-users> <role rolename="manager"/> <user username="temobi" password="temobi8090" roles="manager"/> </tomcat-users>
使用ab工具简单测试Tomcat并发。
1. JVM
1.1. 使用 Server JRE 替代JDK。
服务器上不要安装JDK,请使用 Server JRE. 服务器上根本不需要编译器,代码应该在Release服务器上完成编译打包工作。
理由:一旦服务器被控制,可以防止在其服务器上编译其他恶意代码并植入到你的程序中。
1.2. JAVA_OPTS
export JAVA_OPTS="-server -Xms512m -Xmx4096m -XX:PermSize=64M -XX:MaxPermSize=512m"
-Xms 指定初始化时化的栈内存
-Xmx 指定最大栈内存
2. Tomcat 优化
2.1. maxThreads 连接数限制
maxThreads 是 Tomcat 所能接受最大连接数。一般设置不要超过8000以上,如果你的网站访问量非常大可能使用运行多个Tomcat实例的方法。
即,在一个服务器上启动多个tomcat然后做负载均衡处理。
<Connector port="8080" address="localhost" maxThreads="2048" maxHttpHeaderSize="8192" emptySessionPath="true" protocol="HTTP/1.1" enableLookups="false" redirectPort="8181" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" />
提示
很多做过php运维的朋友在这里会犯一个大错误,php优化服务器通常怎做法是安装cpu以及内存的情况配置连接数,连接数过万都很正常,但java不同jvm配置要非常小心,稍有差错就会崩溃。
maxThreads 配置要结合 JVM -Xmx 参数调整,也就是要考虑内存开销。
2.2. 虚拟主机
不要使用Tomcat的虚拟主机,每个站点一个实例。即,启动多个tomcat.
这也是PHP运维在这里常犯的错误,PHP的做法是一个Web下面放置多个虚拟主机,而不是每个主机启动一个web服务器。Tomcat 是多线程,共享内存,任何一个虚拟主机中的应用出现崩溃,会影响到所有应用程序。采用多个实例方式虽然开销比较大,但保证了应用程序隔离与安全。
2.3. 压错传输
通常所说的gzip压缩,Tomcat通过在server.xml配置设置压缩的选项。
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" compression="on" compressionMinSize1="2048" noCompressionUserAgents="gozilla, traviata" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,,application/octet-stream"/>
提示
压缩会增加Tomcat负担,最好采用Nginx + Tomcat 或者 Apache + Tomcat 方式,压缩交由Nginx/Apache 去做。
3. Tomcat 安全配置
3.1. 安装后初始化配置
当Tomcat完成安装后你首先要做的事情如下:
首次安装完成后立即删除webapps下面的所有代码
rm -rf /srv/apache-tomcat/webapps/*
注释或删除 tomcat-users.xml 所有用户权限,看上去如下:
# cat conf/tomcat-users.xml <?xml version='1.0' encoding='utf-8'?> <tomcat-users> </tomcat-users>
隐藏Tomcat版本信息
vim $CATALINA_HOME/conf/server.xml <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxThreads="8192" minSpareThreads="64" maxSpareThreads="128" acceptCount="128" enableLookups="false" server="Neo App Srv 1.0"/> # curl -I http://localhost:8080/ HTTP/1.1 400 Bad Request Transfer-Encoding: chunked Date: Thu, 20 Oct 2011 09:51:55 GMT Connection: close Server: Neo App Srv 1.0
服务器信息已经被改为 Server: Neo App Srv 1.0
3.2. 启动用户与端口
不要使用root用户启动tomcat,Java程序与C程序不同。nginx,httpd 使用root用户启动守护80端口,子进程/线程会通过setuid(),setgid()两个函数切换到普通用户。即父进程所有者是root用户,子进程与多线程所有者是一个非root用户,这个用户没有shell,无法通过ssh与控制台登陆系统,Java 的JVM 是与系统无关的,是建立在OS之上的,你使用什么用户启动Tomcat,那麽Tomcat 就会继承该所有者的权限。
这造成了一个问题,Linux系统小于1024的端口只有root可以使用,这也是为什么Tomcat默认端口是8080。如果你想使用80端口只能使用root启动Tomcat。这有带来了很多安全问题。
解决方案是创建一个不同用户,如:
groupadd -g 80 daemon adduser -o --home /daemon --shell /sbin/nologin --uid 80 --gid 80 -c "Web Server" daemon
注意 /sbin/nologin , 意味着该用户不能登录,同时我也没有给它指定密码,这个用户只能用于启动tomcat
chown daemon:daemon -R /srv/* su - daemon -c "/srv/apache-tomcat/bin/startup.sh"
接下来解决80端口问题, 思路就是80去调用8080,或者映射端口。
下面是影射方案,80 跳转 8080
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
取消跳转
iptables -t nat -D PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
查看规则
iptables -t nat -L
另一个就是从80请求去调用8080的方案
这个方案可以在 Tomcat 前段增加反向代理,例如:Nginx,Apache,Squid,Varnish或者F5, Array这类设备等等
3.3. 应用程序安全
关闭war自动部署 unpackWARs="false" autoDeploy="false"。防止被植入木马等恶意程序
应用程序部署与tomcat启动,不能使用同一个用户。
我的tomcat 安装在 /srv目录下,Tomcat启动用户为daemon; 应用程序放在/www目录下www所有者是www用户。这样的目的是一旦tomcat被植入web shell程序,它将不能创建或编辑/www目录下面的任何内容。
adduser --home /www -c "Web Application" www
3.4. JSESSIONID
修改 Cookie 变量 JSESSIONID, 这个cookie 是用于维持Session关系。建议你改为PHPSESSID
发表评论
-
WIN10系统如何设置系统的护眼色
2019-03-30 08:50 6861. windows+R键调出运行窗口(或者鼠标右击 ... -
如何在微信上上传大于20兆视频
2018-01-03 13:31 35101、在手机本地找到一个视频,打开QQ,找到我的电脑对话框( ... -
视频剪切
2018-01-03 13:26 440http://www.flvcd.com/ -
Apache与Nginx的优缺点比较(转)
2013-08-26 11:13 11281、nginx相对于apache的优点: 轻量级,同样起we ... -
[经验技巧] 小米 MIUI V4 系统精简列表
2013-07-14 08:57 4538MIUI V4 系统程序功能说明和精简建议之前需要:进授权 ... -
Linux查看连接数,并发数
2013-06-25 21:41 35291软连接 ln -s /home/ictfmcg/d ... -
解决java.net.BindException: Address already in use问题
2013-06-03 15:19 6386如果tomcat服务器异常终止,下次启动时就有可能出现 jav ... -
安装配置Apache
2012-10-16 15:53 1046安装包的获取:http://www.apache.org 1. ... -
(转)win 7系统 word 2011 “由于本机的限制,该操作已被取消,请与管理员联系”的解决方法
2011-10-24 15:06 2031方法一:修改注册表(我就是用这种方法解决问题的) 1 ... -
Linux 和 windows修改java虚拟机内存大小
2011-10-11 13:33 6736因为内存溢出问题1. Linux下直接修改%tomcat_ho ... -
Linux下查看磁盘剩余空间和文件夹大小
2011-07-12 15:13 1375查看内容 free -m total是 ... -
Linux系统时间查看与设定
2011-05-24 15:31 1277Linux系统时间查看与设定 查看: [root@loca ... -
手把手指南:如何架设VPN
2011-05-23 07:40 0简介 让远程用户连接Exchange Server的传 ... -
手把手指南 Windows 路由和远程访问实现如何架设VPN
2011-05-23 07:39 0Win2003路由和远程访问实 ... -
Java:log4j与log4j.properties的配置说明
2010-11-13 16:36 2216在强调可重用组件开发的今天,除了自己从头到尾开发一个可重用的日 ... -
电脑问题处理
2010-11-06 11:28 9571、谁知到在电脑上的搜索中搜寻文件的时候弹出一个“意外错误,操 ... -
系统优化
2010-11-06 11:15 1071高安全性系统优化: 1 ... -
xp中怎么关闭ping?就是让别人ping不到我这台机子
2010-10-12 08:26 2133因为我不想装防火墙,修改些设置就好。 (1) 点击 开始--运 ... -
(转)Windows xp 下如何压缩tar.gz格式
2010-08-26 08:46 5154tar.gz 是linux和unix下面比较常用的格式,几个命 ... -
WINXP优化精髓
2010-08-06 16:43 0WINXP优化精髓 加快开机与关机的速度: ①选“开始\ ...
相关推荐
tomcat性能优化
Tomcat性能优化.rar Tomcat性能优化.rar
tomcat性能优化 调优 tomcat 性能优化 优化详解 优化步骤 优化过程
通过优化tomcat提高网站的并发能力。 2.服务器资源 服务器所能提供CPU、内存、硬盘的性能对处理能力有决定性影响。 3.优化配置
Tomcat性能优化 1. 操作系统2. JAVA 虚拟机3. Tomcat 自身的调整策略
Tomcat性能优化可从外部环境和自身调整两方面着手。 外部环境主要是Tomcat所在服务器的运行环境,包括操作系统层面、部署以及Java虚拟机的配置
Tomcat性能优化设置tomcat的java虚拟机参数catalina.sh/batWindows下修改 $tomcat$\ bin \ catalina.
tomcat性能优化.doc
Tomcat性能优化及JVM内存工作原理,适用于运维人员,开发人员
tomcat性能优化方案 按照此方法进行配置tomcat可以提高你服务器的性能。希望可以帮助到你。
tomcat性能优化,详细讲解,都有例子,非常实用。
Tomcat性能优化篇笔记.pdf
Tomcat 性能调整,tomcat参数调整,压力测试介绍
1.操作系统调优; 2.Java虚拟机调优; 3.Apache集成Tomcat; 4.【适用场景】 大量使用静态页面的应用系统; 5.【适用场景】 并发用户量及在线使用用户数量比较高的系统
在较大型的应用项目中,默认的内存是不够的,有可能导致系统无法运行。常见的问题是报Tomcat内存溢出错误“java.lang.OutOfMemoryError: Java heap space”,从而导致客户端显示500错误。
通过优化tomcat提高网站的并发能力。服务器所能提供CPU、内存、硬盘的性能对处理能力有决定性影响。
主要介绍了tomcat性能优化方式简单整理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下