首页 > 系统相关 >Tomcat、Nginx和JVM的理解

Tomcat、Nginx和JVM的理解

时间:2022-11-07 14:01:32浏览次数:65  
标签:Web HTTP Tomcat 代码 Nginx 线程 JVM

  • Tomcat启动的时候,启动的是JVM进程,这个进程首先是执行JVM的代码,而JVM会加载Tomcat的class执行,并分配一个主线程,这个主线程会从main函数开始执行。在主线程执行过程中,Tomcat的代码还会启动其他一些线程,包括处理HTTP请求的线程。

  • 而我们开发的应用其实就是一些类, 这些类被Tomcat加载到JVM里执行,所以,即使这里有多个应用被加载,也只是多加载了一些类而已,我们写的类被加载进来以后,并没有增加JVM进程中的线程数,也就是Web应用本身和线程是没有关系的。

  • 而Tomcat会根据HTTP请求的URL执行应用中的代码,这个时候,可以理解成每个请求分配一个线程,每个线程执行的都是我们开发的Web代码。如果Web代码中包含了创建新线程的代码,Tomcat的线程在执行代码时,就会创建出新的线程,这些线程也会被操作系统调度执行。

  • JVM的角度看,Tomcat和我们的Web应用是一样的,都是一些Java代码,但是Tomcat却可以加载并执行Web代码,而我们的代码又不依赖Tomcat。

  • Tomcat运行在JVM之上,它和HTTP服务器一样,绑定IP地址并监听TCP端口,同时还包含以下职责:

    • 管理Servlet程序的生命周期

    • 将URL映射到指定的Servlet进行处理

    • 与Servlet程序合作处理HTTP请求——根据HTTP请求生成HttpServletRequest对象并传递给Servlet进行处理,将Servlet中的HttpServletResponse对象生成的内容返回给浏览器。

  • 虽然Tomcat也可以认为是HTTP服务器,但通常它仍然会和Nginx配合在一起使用:

    • 动静态资源分离——运用Nginx的反向代理功能分发请求:所有动态资源的请求交给Tomcat,而静态资源的请求(例如图片、视频、CSS、JavaScript文件等)则直接由Nginx返回到浏览器,这样能大大减轻Tomcat的压力。

    • 负载均衡,当业务压力增大时,可能一个Tomcat的实例不足以处理,那么这时可以启动多个Tomcat实例进行水平扩展,而Nginx的负载均衡功能可以把请求通过算法分发到各个不同的实例进行处理。

参考:

         Java Web程序在Tomcat上是如何运行的

         tomcat 与 nginx,apache的区别是什么?

标签:Web,HTTP,Tomcat,代码,Nginx,线程,JVM
From: https://www.cnblogs.com/road2master/p/16865702.html

相关文章

  • 记在Linux系统实现用nginx解析php
    记在Linux系统实现用nginx解析php实验环境:系统版本:CentOS7nginx版本:nginx-1.6.0(http://mirrors.sohu.com/nginx/nginx-1.6.0.tar.gz)php版本:php-5.3.28(http://mu......
  • Nginx configure error: the HTTP rewrite module requires the PCRE library
    IssueWhen configure nginx1.19.0,runthecommands../configure--prefix=/opt/nginx-1.19.0CopyButthefollowingerror occurs.checkingforPCRElibr......
  • nginx 代理mongodb redis 配置
    worker_processes1;events{worker_connections1024;}stream{ upstreamapp-ssh{ server192.168.25.130:22; } upstreamapp-redis{ serve......
  • tomcat + ftp小工具可以进行上传,无法下载
    利用tomcat+ftpServer工具,做了一个上传和下载的功能,结果测试的时候,发现可以上传,但是无法进行下载,输入地址后直接就转到404了,经过排查,发现自己的上传目录没有放到tomcat的......
  • Nginx操作:显示代理IP与配置多个静态文件
    今天使用Nginx,排查一个问题,负载过程,登陆应用提示“暂无权限”!需要查看负载真实IP信息就有了这篇记录。先上脚本:#add_headerbackendIP$upstream_add......
  • Nginx1.8.1 编译扩展https
    nginx无缝编译扩展https本贴只限用于通过编译安装的nginx,如果用的是yum源安装请卸载后参见 安装nginx部分。一、重新编译nginx1、查看nginx是否支持ssl/usr/local/nginx/sb......
  • Nginx反向代理之路径替换
    在使用nginx进行反向代理时,有时需要使用别名,或者说需要进行路径的替换。听不懂?那直接看下面的需求:1.代理静态资源在目录"E:\test\data\upload\20221104"下有一张图片1.jp......
  • thinkphp在phpstudy nginx 隐藏index.php 问题
    近日选用phpstudynginx测试本地项目,thinkphp5.1url('index/login/login')生成路径访问时不包含index.php,结果报404错误。必须index.php/login/login这样访问很丑在对......
  • Nginx配置限速
    限速:在生产环境中,为了保护WEB服务器的安全,我们都会对用户的访问做出一些限制,保证服务器的安全及资源的合理分配。分类:下载速度限速、单位时间内请求数限制、基于客户端的......
  • Nginx反向代理配置
    代理:代理服务器扮演的就是一个中间人的角色。首先用户将请求发给代理服务器,然后代理服务器代用户去访问数据,最后代理服务器将数据给用户。分类:正向代理和反向代理正向代......