Tomcat 和Nginx以及相关优化

  1. Lnmt 动静分离
    a. Tomcat可以处理动态请求, 也可以处理静态请求
    b. tomcat 处理静态资源效率不高
    c. tomcat 处理动态请求 nginx 处理静态请求
    要求:开发要所有静态资源存放在固定位置 /var/jpress/static

  2. LNMP原理
    静态资源nginx自己处理
    动态资源nginx交给PHP处理

#cat /etc/nginx/conf.d/tomcat.conf
server {
listen 80;
server_name sunny.com;
client_max_body_size 10m;
root /app/tomcat/webapps;
location / {
index index.jsp;
}
location ~ .jsp$ {
proxy_pass 127.0.0.1:8080;
}
}

nginx 负载均衡
#nginx 反向代理 + tomcat
upstream tomcat {
server 10.0.0.7:8080;
server 10.0.0.7:8081;
server 10.0.07:8082;
}

server {
listen 80;
server_name sunny.com;
location / {
proxy_pass http://tomcat;
}
}

  1. Tomcat 优化
    2.1 Tomcat 安全优化
    a telnet管理端口保护(强制) tomcat shutdown端口
    修改shutdown端口
    vim /app/tomcat/conf/server.xml
    <server port='‘8115’ shutdown=""dangerous>

b. ajp 连接端口保护 (8009用于连接apache和tomcat)

  1. 如果需要使用apache+tomcat, 修改 端口
  2. 如果没有使用apache, 就注释这一行
 <!-- server                   -->

c. 禁用管理端(强制)

  1. 管理端主要应用在tomcat测试环境中,删除webapps 下的manager host-manager文件
    [… webapps]#rm manager/ host-manager/ -fr

d. 降权启动 (监牢模式)
在普通用户下面启动维护tomcat
1) 添加用户tomcat
#useradd tomcat
2) 修改tomcat所有者
#chmod -R tomcat.tomcat /app/tomcat/
3)换普通用户启动tomcat
#su - tomcat
#/app/tomcat/bin/startup.sh

开机自启动 通过tomcat用户
#vim /etc/rc.local
#su - tomcat -c /app/tomcat/bin/startup.sh
-c 执行命令 后面只接普通命令

注意:如果给nginx配置降权(监牢模式),端口在1~1024之间 特权端口 只能root使用,需要修改端口。

web 8099
upstream web_tools {
server 10.0.0.7:8099;
server 10.0.0.8:8099;
}

  1. 文件列表访问控制
    默认展示站点目录下面所有内容
    nginx 网站文件列表功能 autoindex on;
    tomcat 默认关闭
    conf/web.xml
<init-param>
  <param-name>listings</param-name>
  <param-value>false</param-value>
</init-param>
  1. 版本信息的隐藏
    conf/web.xml
    修改页面,隐藏版本信息
<error-page>
  <error-code>403</error-code>
 <location>/forbidden.jsp</location>
</error-page>

  1. server header重写 (让黑客不清楚服务器谁)
    查看头部信息
[root@sunny ~]# curl -I taobao.com
HTTP/1.1 302 Found
**Server: Tengine**
Date: Fri, 20 May 2022 05:40:27 GMT
Content-Type: text/html
Content-Length: 258
Connection: keep-alive
Location: http://www.taobao.com/

#vim /app/tomcat/conf/server.xml
在8080端口 添加sever=“nginx/1.16.1”

  1. 访问限制
<value classname="org.apache.catalina.values.RemoteAddrValue"
allow="61.148.18.*,12.111.11.22"  deny="*.*.*.*">
  1. 起停脚本权限回收
    最小化 700 750
    /app/tomcat/bin/*.sh

2 Tomcat性能优化
参数数值调整方式

参考值:不设置数值,通过压力测试软件,看看tomcat性能
增加优化参数 通过压力测试软件 看看tomcat性能
压力测试工具
ab/webbench -----------------http压力测试
sress --------------------压力测试cpu内存swap
jmeter -------------------------压力测试Java
db/fio --------------------------------------测试磁盘性能
mysqlslap -------------------------------压力测试数据库mysql
loadrunner --------------------------------专业测试工具

tomcat 配置参数优化
/app/tomcat/conf/server.xml

  1. 注释ajp端口 8009
  2. tomcat工作模式
    bio tomcat7同步 阻塞
    nio tomcat 8 异步 非阻塞 nio1(默认) nio2
    apr 高并发 额外安装插件

默认

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

修改为: protocol=“org.apache.coyote.http11.Http1Nio2Protocol”

配置apr模式
yum -y install apr apr-devel tomcat-native

修改为: protocol=“org.apache.coyote.http11.Http1AprProtocol”

注意: yum没有tomcat-native 需要编译安装
#cd /app/tomcat/bin/
#ll tomcat-native.tar.gz
#tar -vxf tomcat-native.tar.gz
#cd tomcat-native-1.2.23.-src/
#cd tomcat-native-1.2.23.-src/native/
#ls
#./configure && make && make install

#cat >> /etc/profile<<'EOF'
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
export   LD_RUN_PATH=$ LD_RUN_PATH:/usr/local/apr/lib
EOF

#. /etc/profile

/app/tomcat/conf/server.xml

maxThreads=“500” #最大的线程数量 200~400之间
acceptCount=“500” # 当达到最大的线程数量时,最大的队列长度,一般与maxThreads 一致
acceptorThreadCount=“2” 队列数量
enableLookups=“false” #禁止DNS逆向查询route -n /arp -n
compression=“on” #开启tomcat压缩功能
compressionMinSize=“2048” #压缩文件最小2048
compressableMimeType=“text/hmtl” #压缩哪些类型的文件
disableUploadTimeout=“true” #关闭上传文件超时间

minSpareThreads=“10” # 空闲时最小的线程数量

maxThreads如何配置

  1. 系统响应时间注意限制是CPU的计算能力, 如果maxThreads尽量设置小,降低同一时间争抢CPU的线程个数,可以提高计算机的效率
  2. 如果是IO或者数据库,注意影响是等待外部资源,将maxThreads设置大,会提高系统的处理能力。

java启动参数(catalina.sh) jvm 优化

设置jvm的开始内存大小(物理内测的1/64) jvm最大内存大小(物理内存的1/4)

修改catalina.sh
JAVA_OPTS=‘-Xms1024m -Xmx1024m -xloggc:/var/log/tomcat_gc.log’

xms jvm开始内存
xmx jvm 最大内存
xloggc 执行gc的log文件

java -jar xxxx.jar -Xms1024m -Xmx1024m -xloggc:/var/log/tomcat_gc.log

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值