【服务器】TOMCAT (on MAC)

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

  • 查看版本
    cd /Library/Tomcat-9.0.13/bin
    sh version.sh
    可查看到Server number: 9.0.13.0

  • 打开
    cd /Library/Tomcat-9.0.13/bin
    ./startup.sh
    (若Permission denied,赋予超级管理员权限sudo chmod 755 *.sh,再次./startup.sh

  • 查看
    浏览器输入 http://localhost:8080/

  • 关闭
    cd /Library/Tomcat-9.0.13/bin
    ./shutdown.sh

  • 于IDEA上配置:
    Run/Debug Configuration
    左上角单击+ - Tomcat Server - Local
    第一步,输入配置的Tomcat的Name;
    第二步,点击配置Tomcat:Configuration;
    第三步,在弹出的Application Servers中配置Tomcat Home(Library - Tomcat)和Library( - bin);Apply。

介绍

  • 是由 Apache 开发的一个Servlet 容器,实现了对 Servlet 和 JSP 的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。他可以运行你按照J2EE中的Servlet规范编写好的Java程序。
  • 简单的说它是一个Web网站的运行容器,把你写好的网站放进去就可以运行。
  • 由于 Tomcat 本身也内含了一个 HTTP 服务器,它也可以被视作一个单独的 Web 服务器。但是,不能将 Tomcat 和 Apache HTTP 服务器混淆,Apache HTTP 服务器是一个用 C 语言实现的 HTTP Web 服务器;这两个 HTTP web server 不是捆绑在一起的。Tomcat 包含了一个配置管理工具,也可以通过编辑XML格式的配置文件来进行配置。
  • Apache只支持静态网页html,tomcat支持jsp动态网页。
  • Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展,处理动态网页部分。

war模式与war exploded的区别

  • war模式:将WEB工程以包的形式上传到服务器 ;
    发布模式,看名字也知道,这是先打成war包,再发布;

  • war exploded模式:将WEB工程以当前文件夹的位置关系上传到服务器;
    直接把文件夹、jsp页面 、classes等等移到Tomcat 部署文件夹里面,进行加载部署。因此这种方式支持热部署,一般在开发的时候也是用这种方式。
    war exploded 适合开发模式,可以部署多个项目调试代码,不会跑到别的项目里面去,因为他不会把项目拷贝到webapp目录下。


Tomcat调优

可以从如下几个方面考虑优化:

  • 1.Tomcat 运行模式
  • 2.Tomcat 配置优化
  • 3.JVM 优化
  • 4.内核参数优化

————————————————————————————

  • 提问:Tomcat的缺省(默认)端口是多少,怎么修改

8080
Conf下的Serverl.xml中,修改:

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

(找准此段代码,要认准:protocal=HTTP这一项)
————————————————————————————

  • 提问:Tomcat Connector(Tomcat连接器)有几种运行模式(优化)?

Tomcat Connector(Tomcat连接器)有BIO、NIO、APR三种运行模式;

BIO
传统的Java I/O操作,同步且阻塞IO;
bio(blocking I/O):Tomcat在默认情况下就是以bio模式运行的。
这可以从守护线程的信息看出来:
Daemon Thread [ajp-bio-8080-AsyncTimeout](Running)

BIO的缺点:
1.当客户端多时,会创建大量的处理线程。每个线程都要占用栈空间和一些CPU时间。
2.阻塞可能带来频繁的上下文切换,而大部分的上下文切换是无意义的。
就一般而言,bio模式是三种运行模式中性能最低的一种。

NIO

Java 1.4开始支持,同步阻塞 或 同步非阻塞IO;
nio(non-blocking I/O)是非阻塞I/O操作。nio是一个基于缓冲区并能提供非阻塞I/O操作的Java API,它拥有比bio更好的并发运行性能。要让Tomcat以nio模式来运行也比较简单,我们只需要修改下server.xml文件:

<Connector port="8080" protocol="org.apache.coyote.http11.HttpNioProtocol"
               connectionTimeout="20000"
               redirectPort="8443"  />

守护线程的信息变了:
Daemon Thread [ajp-nio-8080-ClientPoller-0](Running)

NIO的工作原理包括:
1.由一个专门的线程来处理所有的 I/O 事件、并负责分发。
2.事件驱动机制,而不再同步地去监视事件。
3.线程之间通过 wait,notify 等方式通讯。保证每次上下文切换都是有意义的,减少无谓的线程切换。

NIO采用了 双向通道 channel 进行数据传输,而不是单向的 流 stream
在通道上我们可以注册指定的事件,一共有以下四种事件:
1.服务端接收客户端连接事件OP_ACCEPT(16)
2.客户端连接服务端事件 OP_CONNECT(8)
3.读事件 OP_READ(1)
4.写事件 OP_WRITE(4)

服务端和客户端各自维护一个管理通道的对象,我们称之为selector,该对象能检测一个或多个通道上的事件。
以服务端为例,如果服务端的selector上注册了读事件,某时刻客户端给服务端发送了一些数据,BIO这时会调用read()方法阻塞地读取数据,而NIO的服务端会在selector中添加一个读事件。
服务端的处理线程会轮询地访问selector,如果访问selector时发现有感兴趣的事件到达则处理这些事件;
如果没有感兴趣的事件到达则处理线程会一直阻塞,直到感兴趣的事件到达为止。

APR

apr(Apache portable Run-time libraries/Apache可移植运行库)
是Apache HTTP服务器的支持库。

Tomcat 7 使用的 Connector 默认启用 Apr 协议,但需要系统安装 Apr 库,否则就会使用 bio 方式。

在apr模式下,Tomcat将以JNI(Java Native Interface)的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大提高Tomcat对静态文件的处理性能。
Tomcat apr是在Tomcat上运行高并发应用的首选模式。

如果Tomcat不在apr模式下运行,在启动Tomcat的时候,我们可以在日志信息中看到类似如下信息:
十二月 02, 2016 8:24:09 下午 org.apache.catalina.core.AprLifecycleListener init 信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path:

要让Tomcat以apr模式运行,Tomcat 7.0前后有差别:

Tomcat 7.0.30之后,只需要再次修改protocol为:
org.apache.coyote.http11.Http11AprProtocol

Tomcat 7.0.30之前,需要以下三个组件的支持:
1.APR library[APR库]
2.JNI wrappers for APR used by Tomcat (libtcnative)[Windows上一个名为tcnative-1.dll的动态链接库文件]
3.OpenSSL libraries[OpenSSL库]

————————————————————————————

  • 提问:Tomcat怎么优化/调优?

一、Tomcat本身的优化

修改一下 xml 配置文件中的参数,调整最大连接数,超时等。此外,我们安装 Tomcat 时,优化就已经开始了。

1、工作方式选择

为了提升性能,首先就要对代码进行动静分离,让 Tomcat 只负责 jsp 文件的解析工作。如采用 Apache 和 Tomcat 的整合方式,他们之间的连接方案有三种选择,JK、http_proxy 和 ajp_proxy。
相对于 JK 的连接方式,后两种在配置上虽简单,灵活性方面也一点都不逊色。
但就稳定性而言,JK 最能经受考验,所以建议采用 JK 的连接方式。

2、Connector连接器的配置

之前文件介绍过的 Tomcat 连接器的三种方式: bio、nio 和 apr,三种方式性能差别很大,apr 的性能最优, bio 的性能最差。而 Tomcat 7 使用的 Connector 默认就启

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值