代码编织梦想

1.版本问题

tomcat 8或8.5 配合使用 7.0以上版本JDK

Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个servelet容器,按照Sun microsystems提供的技术规范开发出来,Tomcat 8实现了对servlet 3.1和Javaserver page 2.3(JSP)的支持,并提供了作为web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat附加组件等

2.tomcat 安装

1).构建Java环境

 [root@tomcat ~]# tar xf jdk-8u60-linux-x64.tar.gz
[root@tomcat ~]# mv jdk1.8.0_60/ /usr/local/java8
[root@tomcat ~]# vim /etc/profile.d/java.sh
[root@tomcat ~]# cat /etc/profile.d/java.sh
JAVA_HOME=/usr/local/java8
CLASSPATH=$JAVA_HOME/lib
PATH=$PATH:$JAVA_HOME/bin
[root@tomcat ~]# source /etc/profile
[root@tomcat ~]# java -version
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)

2).安装tomcat

[root@tomcat ~]# tar xf apache-tomcat-8.5.16.tar.gz
[root@tomcat ~]# mv apache-tomcat-8.5.16 /usr/local/tomcat
启动并测试
[root@tomcat ~]# /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/java8
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

访问ip时加上8080端口
在这里插入图片描述

3.tomcat架构

1).架构图

在这里插入图片描述
一个tomcat只有一个server,一个server包含多个service,一个service包含两个核心组件(连接器,容器)连接器可以有多个,容器只有一个。
连接器:connector 处理连接相关的事情,并提供Socket与Request和Response相关的转化
容器:contaioner 封装和管理Servlet,以及具体处理Request请求
整个tomcat生命周期由server控制。

2).connector 结构

在这里插入图片描述

3).container 结构

在这里插入图片描述
host:站点 context:应用程序 wrapper:封装servlet

4).container 处理流程:pipeline—value管道处理。

4.connector 运行模式

(无NIO2)----8.0----(BIO,NIO,NIO2/AIO,APR)----8.5----(无BIO)—
*
BIO:同步阻塞
*
NIO:同步非阻塞
*
NIO2/AIO:异步非阻塞

* 

tomcat 默认使用 NIO 通过 grep -i handler catalina.out 查看 (/usr/local/tomcat/log/)

在这里插入图片描述
在浏览器三个按键查看也可以。

使用按键需要修改配置文件。

vim /usr/local/tomcat/conf/tomcat-users.xml
  <role rolename="manager-gui"/> //对应第二个按钮权限
  <role rolename="admin-gui"/>   //对应第三个按钮权限
  <user username="tomcat" password="tomcat" roles="tomcat,manager-gui,admin-gui"/>

8.5 版本 出现403修改方法

/usr/local/tomcat/conf/Catalina/localhost/manager.xml和/usr/local/tomcat/conf/Catalina/localhost/host-manager.xml 中分别加入以下内容,分别对应

<?xml version="1.0" encoding="UTF-8"?>
<Context privileged="true" antiResourceLocking="false"
         docBase="${catalina.home}/webapps/manager">
    <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
</Context>

重启服务

cd /usr/local/tomcat/bin/startup.sh

5.JVM

JVM某种程度上可以被认为是一个虚拟的操作系统,它有着自己的内存模型等;一个Tomcat容器的启动,相当于在JVM中启动了一个进程。

在这里插入图片描述
堆是虚拟机管理内存的最大一块,也是被所有线程共享的内存区域。

当内存不足无法完成实例分配的时候,同时推也无法扩展的时会出现OOM除了程序计数器,都会出现oom(out of memory) 内存溢出。

内存问题,造成主页缺失,次页缺失。

解决方法:修改/usr/local/tomcat/bin/catalina.shJAVA_OPTS=" -server -Xms512m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m"

说明:
Xms 堆内存的初始大小,取决于物理内存,通常一半
Xmx 堆内存上限,取决于物理内存,通常一半
XX:MetaspaceSize:非堆内存初始大小
XX:MaxMeatespaceSize 非堆内存上限

6.内存泄漏

不用的内存没被释放 内存泄漏 >>> 垃圾回收(gc)回收不到 >>> 占用pid,线程多   >>>   tomcat远程连接不上 (用jstack查看解决) 

7.nginx 做负载均衡轮询tomcat配置

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/qq_39109226/article/details/111107273

【Linux学习笔记27】Shell常用基础命令详解(diff、patch、cut、sort、uniq、tr、&&、||、test)-爱代码爱编程

文章目录 1. diff 比较文本文件1.1 diff 输出信息解释1.2 diff 参数详解1.3 diff 命令使用示例2. patch 补丁3. cut 显示文件指定内容3.1 cut 参数3.2 cut 用法示例4. sort 排序4.1 sort 参数4.2 sort 示例用法5. uniq 忽略重复行6. tr 替换、压缩和删除字符7.

渗透测试-地基篇-隧道之cobalt strike内网穿透(二十一)-爱代码爱编程

** 渗透测试-地基篇-cobalt strike 内网穿透(二十一) ** 作者:大余 时间:2020-12-13 简介: 渗透测试-地基篇: 该篇章目的是重新牢固地基,加强每日训练操作的笔记,在记录地基笔记中会有很多跳跃性思维的操作和方式方法,望大家能共同加油学到东西。 请注意: 对于所有笔记中复现的这些终端或者服务器,都是自行搭建的环境

Linux-高性能Web集群实践-Day01-爱代码爱编程

Linux-高性能Web集群实践 Linux-高性能Web集群实践Day 01 实践试验准备阶段 1.试验镜像2.修改网卡名为eth0的形式3.我采用Minimal Install,并且需要安装一下几个包组:4.企业生产场景中Linux系统的分区方案5.系统无法联网的故障排除方法6.更新系统7.额外安装一些有用的软件包Day 01 实践试验准备

shell的执行流控制-爱代码爱编程

一、for循环 for 定义变量 do 使用变量,执行动作 done 结束标志 格式1: #!/bin/bash for WESTOS in `seq 2 2 10` do echo $WESTOS done 格式2: for WESTOS in 1 2 3 do echo $WESTOS done 格式3: for

2021-09-28 Linux基础篇学习—shell及shell脚本-爱代码爱编程

概述 shell概念 shell又称命令解释器,它能识别用户输入的各种命令,并传递给操作系统 它的作用类似于Windows操作系统中的命令行,但是,Shell的功能远比命令行强大的多;在UNIX或者linux中,Shell既是用户交互的界面,也是控制系统的脚本语言 shell的种类 CentOS linux系统

使用三剑客分析Nginx.log-爱代码爱编程

接上一篇三剑客和管道,这篇写一下如何分析Nginx.log 文章目录 Nginxgrep补充命令sed补充awk补充命令Nginx.log实战 Nginx 做web服务器的,网站上点击请求通过nginx启用一个服务,后面是一个别的程序写的服务,但是前端访问都是通过nginx软件提供数据,前端才能看到页面 grep补充命令 grep -A -

linux桌面背景一片蓝-爱代码爱编程

更新内核之后重启桌面背景一片蓝,但是可以鼠标移到对应位置有显示本来的东西 按ctrl+alt+f4进入 输入账户名和密码 然后输入命令 sudo apt-get install xserver-xorg-lts-utopic sudo dpkg-reconfigure xserver-xorg-lts-utopic reboot 如果前面第一

Linux下C语言验证多线程-分段排序-爱代码爱编程

知识点:用Linux下的多线程,对数组中元素分段排序 -------------------------------------------------------------------------------------- 参考: https://blog.csdn.net/skrskr66/article/details/90298470 h

如何搭建本地yum源与在线yum源-爱代码爱编程

搭建本地yum源与在线yum源 一、搭建本地yum源二、搭建在线yum源 一、搭建本地yum源 公司内网搭建服务器,通常情况下不能连外网,导致CentOS 中的yum安装工具不能使用;使用rpm包安装软件要处理各种依赖,非常麻烦。我们可以通过搭建本地yum源来解决这个问题 mount /dev/cdrom /mnt/ #把光盘挂

Nginx+Tomcat负载均衡、动静分离群集部署-爱代码爱编程

目录 一、Nginx应用二、Nginx负载均衡实现原理Nginx配置反向代理的主要参数三、Nginx动静分离实现原理四、案例:Nginx+Tomcat负载均衡、动静分离实验1.两台Tomcat服务器节点部署2.Nginx调度器部署 一、Nginx应用 Nginx是一款非常优秀的HTTP服务器软件 支持高达50000个并发连接数的响应 拥有强大

shell的执行流控制-爱代码爱编程

一、for循环 for 定义变量 do 使用变量,执行动作 done 结束标志 格式1: #!/bin/bash for WESTOS in `seq 2 2 10` do echo $WESTOS done 格式2: for WESTOS in 1 2 3 do echo $WESTOS done 格式3: for