互联网做网站怎么赚钱,wordpress停止更新,服务器有了网站怎么做,怎样建设自己的网站tomcat 服务器
tomcat: 是一个开源的web应用服务器。区别nginx#xff0c;nginx主要处理静态页面#xff0c;那么动态请求#xff08;连接数据库#xff0c;动态页面#xff09;并不是nginx的长处#xff0c;动态的请求会交给tomcat进行处理。
nginx-----转发动态请求-…tomcat 服务器
tomcat: 是一个开源的web应用服务器。区别nginxnginx主要处理静态页面那么动态请求连接数据库动态页面并不是nginx的长处动态的请求会交给tomcat进行处理。
nginx-----转发动态请求------tomcat
tomcat 1处理动态页面http的请求 2处理后端请求调用数据库服务器 3易部署tomcat会自动识别配置文件。自动部署运行 4轻量级的服务软件处理中小架构的网站可以满足大型的交互需求tomcat就非长处了python node.js 容器化来处理在容器化部署的项目架构中是不使用tomcat都是用jar包直接运行包括k8s. tomcat的核心组件
1web容器完成web功能 处理请求也是nginx转发http(s)请求处理动态页面java代理编译的页面处理后端的请求转发数据库的请求。 2servletcatalina是整个tomcat处理的底层逻辑。处理web请求的动态页面也处理后端请求数据库 3jspjsp会把动态翻译成serlvet的代码。用编译后的规则显示代码的静态页面。 静态页面html
动态页面php inex.php jsp index.jsp ----java格式写成的代码靠jsp翻译servlet执行编译后的代码最后展示结果。 容器容器通常指的是一种虚拟化技术运行在当前的操作环境当中虚拟化的运行多个独立的环境。独立运行的环境就是我们说的容器彼此之间的相互隔离拥有自己的一套系统资源。宿主。容器寄生在宿主上实际使用的是宿主的资源。docker
servlet容器用于开发web应用程序的关键组件处理http请求生成动态内容于客户端之间的交互前端交互后端数据库服务交互。和redis缓存交互。 类java当中。调用各种方法是由开发人员自定义的。
处理http请求
生成动态页面的内容
会话管理处理用户会话跟踪用户在不同请求之间的状态。servlet可以在用户访问不同页面时保持用户的状态信息。购物车同步用户登录等等。 JSPjava server pages 动态网页的开发技术使用jsp的标签在HTML的网页中插入java代码
%开头
%结尾
实现java web应用程序的访问界面。用户界面。或者访问数据库生成页面内容。 tomcat的核心功能
功能部分由两个块组成 接受和响应外部请求的连接器 connector 负责处理请求的 container 包含
1 engine引擎管理多个虚拟主机一个tomcat里面只能有一个engine
2 host 代表站点也就是虚拟主机一个engine可以有多个host
3 context一个context 执行一个web应用。
4 wrapper最底层处理和编译代码运行结果。 实验
java组件
JDK开发工具包开发java的应用程序jdk包括编译器调试器等等以及java的类库
开发者用来创建编译 运行java程序的重要组件组件 JVM:java的虚拟机负责编译后的java字节码编程本地的机器码。运行Java的代码。
jvm内存管理垃圾回收机制 线程管理。 export JAVA_HOME/usr/java/jdk1.8.0_201-amd64
设置java_home的环境变量指向jdk也就是java的工作目录 export CLASSPATH.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
java类的搜索路径 export PATH$JAVA_HOME/bin:$PATH
把java的可执行命令添加到系统的环境变量当中。 bin存放启动或者关闭tomcat的脚本文件startup.sh shoutdow.sh
conf存放的是配置文件server.xml就是tomcat的主配置文件
webapps:tomcat默认的web应用的部署目录。
worktomcat的工作目录,存放JSP编译之后产生的class文件。清缓存会用到。 tomcat配置虚拟主机
1配置工作目录
在公司当中会运行多个项目一台tomcat太多会浪费资源所以会在tomcat中配置多个主机通过不同的域名访问不同的内容。 Host namewww.kgc com 指定站点(虚拟主机的域名)
appBasewebapps 站点的工作目录在webapps存放web应用的目录 unpackWARsrue 启动webapps,对war包进行展开
autoDeploytrue 防止在默认应用目录的程序文件自动进行部罢。 xmIValidationfalse #是否验证XML文件执行的有效性标志
xmINamespaceAwarefalse #是否启动xml命令 空间。
docBase/usr/local/tomcat/webapps/kgc : web应用程序的具体部署位置也就是context所属的host中的具体的工作目录。
path:为空默认就是webapps
reloadabletrue:允许重新加载context相关的web应用程序的类. 1、 请求到连接器;连接的端口是8080,连接器接受请求
2. www.kgc.com 引擎管理虚拟主机-----host-----www.kgc.om------context----访问www.kgc.com该主机的工作目录-----webapps/kgc-----index.jsp----wrapper----servlet来解析index.jsp内容
3、响应的内容返回到客户端。 和nginx的虚拟主机是一样的
开启之后要检查端口。 tomcat的优化
默认配置并不适合生产环境频繁的出现假死。
需要通过压力测试不断优化提高稳定。 1配置文件优化背 面试题
server.xml (0配置文件) maxThreads“200”
tomcat使用线程来处理接受的每个请求可以创建的最大线程数。支持的最大连接并发数 200 minSpareThreads“200”
最小空闲线程数tomcat启动是的初始的线程数表示没人请求也要打开这些空的线程等待请求 默认是10 一般是200或者最大的一半 maxSpareThreads
最大备用线程数创建线程的超过这个值tomcat会关闭不再需要的线程默认是-1 不做限制 connection Timeout 网络连接超时。设置为20000毫秒 enableLookups“false”
是否方向解析域名不解析提高处理效率 disableUploadTimeouttrue
上传文件时是否启用超时限制 connectionUploadTimeout“15000”
上传比下载要耗时根据需求自定义 accpetCount100
所有的可以使用的线程被占用可以传入的队列长度的最大值。默认100 compressionno off force: 所有的情况下都进行压缩
是否对响应的数据进行gzip压缩一般都是on 压缩之后的页面大小可以减少1/3.提高响应速度和带宽 noCompressionUserAgentsgozilla chrom
对指定访问的浏览器不进行压缩 2jvm优化 JAVA_ OPTS$JAVA. OPTS -server -Xms2048m -Xmx2048m -Xmn768m -XX:ParallelGCThreads2 -XX:PermSize1024m -
XX:MaxPermSize1024m -Djava.awt.headlesstrue -XX:DisableExplicitGC
cygwinfalse
-server一定作为第一个参数
-Xms2048mjava初始化堆的大小是分配jvm的最小内存。cpu性能高可以再设高一点
-Xms2048mjava初始化堆的大小是分配jvm的最大内存取决于物理内存有多大。建议-xms和xmx的值设置成一样推荐设置成内存的一半。
目的java的垃圾回收机制清理完堆区后不需要重新分隔计算堆区的大小。 -Xmn768新生代内存的大小。官方推荐整个堆区的大小3/8。
新生代Java中每新建一个新的对象占用的内存就是新生代
中生代对象创建完毕之后占用的内存就是中生代
老年代java垃圾回收机制进行资源回收之后中生代中剩余的部分就是老年代。 -XX:PermSize1024m
设置非堆内存的初始值持久代内存的大小一般设置为物理内存的1/4 -XX:MaxPermSize1024m
最大非堆内存的大小持久代内存从最大值一般设置为物理内存的1/4 -Djava.awt.headlesstrue
避免在linux环境下web不能展示图片 -XX:DisableExplicitGC
禁止调用system.gc() ,误调用了gc方法会导致jvm的响应速度降低。 堆存储新创建的对象。
非堆存储编译之后的代码或者是压缩后的类 或者是类的元数据 ajp-nio-8009
连接器的一种类型ajp协议名称就叫ajp.nio: 异步非阻塞通信
8009是ajp协议的监听端口
AJP:tomcat服务器和前端web服务器APAACCHE nginx进行连接
提供负载均衡和高效的请求转发提高并发处理能力 http-nio-8080
用于处理http协议的网络请求
端口8080 3操作系统优化内核优化
Linux内核优化中主要针对两个配置文件 /etc/security/limits.conf 和/etc/sysctl.conf
通常是利用调用内核参数的程序sysctl -a 查询出最优内核参数然后写入 /etc/sysctl.conf 文件内的。 sysctl -a |grep fs.file-max #查询出的文件句柄数量上限。 文件句柄File Handle是操作系统用于跟踪和管理打开的文件或资源的数据结构。
在操作系统中每个打开的文件、网络连接、设备等都会被分配一个唯一的句柄
操作系统通过这个句柄来标识和访问这些资源。 句柄数是指操作系统能够同时管理的句柄的数量。在一个计算机系统中
许多应用程序和进程需要打开和使用文件、网络连接等资源。每个资源都需要一个句柄来进行操作。
如果系统的句柄数限制太低就可能导致应用程序无法打开足够的文件、网络连接或其他资源
从而影响系统的性能和可用性。 因此调整句柄数的设置是确保系统能够处理并发连接和资源请求的重要一环。
在高负载的服务器环境中适当地增加句柄数的限制可以提高系统的并发能力和性能。
但是过于激进地增加句柄数可能会消耗过多的系统资源因此需要根据实际需求和硬件配置进行调整。 永久配置
注意设置保存后需要重新ssh连接才会看到配置更改的变化
*soft nproc 65535 最大进程数软限制为 65535即可以使用 ulimit -u 命令查看和修改的值。
*hard nproc 65535 最大进程数硬限制为 65535即最大可分配的进程数。
*soft nofile 65535最大打开文件数软限制为 65535即可以使用 ulimit -n 命令查看和修改的值。
*hard nofile 65535最大打开文件数硬限制为 65535即最大可分配的文件数。
这里使用的通配符 * 表示对所有用户生效。 其他调试内核参数的查看 sysctl -a
kernel.sysrq 0: 禁用了内核的SysRq功能SysRq允许在系统崩溃或出现问题时执行一些调试操作。
kernel.core_uses_pid 1: 设置核心转储文件名中包含进程ID有助于标识是哪个进程导致了核心转储。
kernel.msgmnb 和 kernel.msgmax: 增加IPC消息队列的默认和最大大小用于进程间通信。
kernel.shmmax 和 kernel.shmall: 调整共享内存的最大大小和分配页面数。
net.ipv4.ip_forward 0: 禁用IP数据包的转发功能通常用于不充当路由器的系统。
net.ipv4.conf.default.rp_filter 和 net.ipv4.conf.all.rp_filter: 控制反向路径过滤提高网络安全性。
net.ipv4.icmp_echo_ignore_all: 允许或禁止系统响应ping请求。
...