专栏首页WindCodertomcat基础小结

tomcat基础小结

目录结构

bin:可执行文件,包含启动脚本 conf:配置文件 lib:tomcat的依赖库 logs:日志 temp:临时文件 webapp:默认的应用部署目录 work:供web应用使用,tomcat的工作目录,放置tomcat运行中产生的一些文件,如,跑jsp时,翻译出来的servlet一般在这里面。 LICENSE:许可证文件 NOTICE、RELEASE-NOTES、RUNNING.txt:

JVM启动参数配置 环境变量JAVA_OPTS -server-Xms512m -Xmx521m 最小堆内存,最大堆内存,一般可以一样大 如:

//在本发起有效
export JAVA_OPTS = "-server-Xms2048m -Xmx2048m"
//设置一直有效
cat ~/.bashrc

//启动-运行bin目录下的对应启动脚本
./bin/startup.sh

配置文件

重要配置文件 server.xml 结构

Server 最顶层

Service 一个Server可配置多个Service

Connector 一个Service可以有多个Connector 用来接收用户请求。

Engine 一个Service有一个Engine 用于处理Connect接收到的请求,包括平时写的代码也是由其执行。

Host 一个Engine可以有多个Host Host是虚拟主机的概念,即配置域名和ip。

Context 一个Host可有一个或多个Context。 一个Context即一个web应用。

对应组件的实现

Connector

1、Coyote组件,实现了许多不同的Connector 默认BIO Connector 使用传统的 阻塞式的bio的操作的方式,实现方式也是传统的java I/O的实现。 客户端一个链接过来,服务端分配一个线程处理,若请求比较大,时间很久请求头没发完,对应的处理线程就只能一直等待。 2、Container 容器具体执行web应用代码逻辑的部分。 具体实现:Catalina tomcat中实现容器的组件,最终都是由Catalina中的代码执行的。

请求处理流程

java_tomcat_request01

参数配置

Connector

port address 监听网络请求时到哪个地址,一般会有多个ip,若不配置,会在所有地址上监听。 protocol 协议,默认htpp1.1,调优可能会调整更高的。 connectionTimeout 多长时间不发请求则断开,即连接超时时间 acceptCount 排队队列最大值。超过后,超出的会被拒绝处理,即不再处理后面的。 maxConnections 最大连接数。超过后值会接收但不处理。设置-1表示不设置连接数。 minSpareThreads 最小空闲线程数 maxThreads 最大线程数

Executor 线程池 事先创建一定数目的线程,当有任务时,从池中取出用完后再放回池中。 minSpareThreads 最小空闲线程数 maxThreads 最大线程数

当Connector同时配置依赖Executor和minSpareThreads/maxThreads,优先Executor。

    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="150" minSpareThreads="4"/>
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
			   executor="tomcatThreadPool"
               redirectPort="8443" />

Tomcat日志

作用

Tomca运行情况获知 调试利器

分类

系统运行日志:运行信息与状态 访问日志:记录请求访问 应用日志:应用程序打印日志 访问日志: 配置文件 server.xml

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

directory :日志目录 prefix:日志名前缀 suffix:日志名后缀 pattern:日志格式

请求方式(get/post等):method: %m 客户端ip:client ip:%a 请求时刻:time:%t 用户响应码: status:%s 服务端下发字节数: byteSent: %b User-Agent:%{User-Agent}i

日志切割 fileDateFormat="yyyy-MM-dd." --时戳格式 rotatable = "true" --是否开启日志滚动

优化相关

Tomcat学习总结(3)——Tomcat优化详细教程

闲谈Tomcat性能优化 如何优化tomcat配置(从内存、并发、缓存4个方面)优化

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 并发学习笔记12-线程基础(上)

    现代操作系统调度的最小单元是线程,也叫轻量级进程(Light Weight Process)。

    汐楓
  • 并发学习笔记13-线程基础(下)

    Volatile可以修饰字段(成员变量),就是告知程序任何对该变量的访问均需从共享内存中获取,而对它的改变必须同步刷新回共享内存,它能保证所有线程对变量访问的可...

    汐楓
  • nginx+tomcat配置ssl实现https

    仅为tomcat时,进入tomcat目录/conf/server.xml中,添加如下代码(具体参数请根据实际情况修改),并重启tomcat即可。若使用自定义的证...

    汐楓
  • CentOS6.5升级自带glibc-2.12到glibc-2.15的过程解析(无需重启)

    在开发时项目所依赖的包需要更高版本的glibc库支持, 而Centos6.5 中glibc默认版本为2.12, 这样调试时可能会遇到报错。但如果不小心把动态库中...

    孙杰
  • springboot(22)同时支持http和https访问

    IT故事会
  • volatile关键字解析

    在给 volatile关键字解析 之前 希望看本文的朋友对Java内存模型有一定的了解;不了解的朋友可以先看看Java内存模型

    用户2141593
  • 学习go语言编程系列之helloworld

    1. 下载 https://golang.org/dl/ # Go语言官网地址,在国内下载太慢,甚至都无法访问。通过如下地址下载:https://golang...

    2Simple
  • Windows窗口消息和消息队列

    所有基于事件驱动的操作系统中的GUI程序,都会在主线程中运行一个消息泵来从消息队列中取出消息并执行对应的处理逻辑。消息队列中的消息除了由系统产生外,还提供了对应...

    欧阳大哥2013
  • 浅浅的分析下es6箭头函数

    箭头函数作为es6重点的语法内容之一,很多开发者对其爱不释手,当也要注意其可能存在的问题,其正确的使用场景,否则会引起不必要的bug。

    RobinsonZhang
  • volatile关键字解析

    在给 volatile关键字解析 之前 希望看本文的朋友对Java内存模型有一定的了解;不了解的朋友可以先看看Java内存模型

    矿泉水

扫码关注云+社区

领取腾讯云代金券