生产环境下我们不应该使用root用户开启tomcat服务,所以为了安全起见,我们创建一个用户tomcat

useradd tomcat

passwd tomcat(密码也设为tomcat)

编辑tomcat目录下的conf里的tomcat-users.xml文件

在tomcat-users里面增加以下内容

<role rolename="manager"/>
<role rolename="manager-gui"/>
<role rolename="admin"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="tomcat" roles="admin-gui,admin,manager-gui,manager"/>



点击server status进入,输入用户名tomcat和密码tomcat

可以看到有个ajp



默认的tomat的模式是bio,上图是我已经修改模式为nio了的效果图,修改方法为

vi conf/service.xml,找到connector,就是以下内容

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

修改一下协议内容,HTTP/1.1改为

org.apache.coyote.http11.Http11NioProtocol

此时刷新页面

一般情况下我们使用的是nginx+tomat,而不是ajp协议,禁用该协议有利于提升性能,方法为vi conf/service.xml注释掉协议为AJP的那行

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

重启服务后,效果如下

[root@localhost bin]# cd -     #回到上一个工作目录
/usr/local/src/apache-tomcat-7.0.78/conf
[root@localhost conf]# vi server.xml
[root@localhost conf]# cd -
/usr/local/src/apache-tomcat-7.0.78/bin
[root@localhost bin]# ./shutdown.sh ;./startup.sh #依次执行,好像没有重启的脚本,所以就关闭再打开了
Using CATALINA_BASE: /usr/local/src/apache-tomcat-7.0.78
Using CATALINA_HOME: /usr/local/src/apache-tomcat-7.0.78
Using CATALINA_TMPDIR: /usr/local/src/apache-tomcat-7.0.78/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/src/apache-tomcat-7.0.78/bin/bootstrap.jar:/usr/local/src/apache-tomcat-7.0.78/bin/tomcat-juli.jar
Using CATALINA_BASE: /usr/local/src/apache-tomcat-7.0.78
Using CATALINA_HOME: /usr/local/src/apache-tomcat-7.0.78
Using CATALINA_TMPDIR: /usr/local/src/apache-tomcat-7.0.78/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/src/apache-tomcat-7.0.78/bin/bootstrap.jar:/usr/local/src/apache-tomcat-7.0.78/bin/tomcat-juli.jar
Tomcat started.
[root@localhost bin]#

还有一个是增加线程池,不过我没有把这个配置成功,所以这里就不说了。

tomcat7简单优化的更多相关文章

  1. 一次千万级别的SQL查询简单优化体验

    背景:从两张有关联的表查询数据,A表数据量1400万,B表数据量8000万.A与B通过ID逻辑关联,没有实际的外键.B表是后来扩展出来的. 问题:根据某个ID查询时超时,运行时跑不出结果. 原因:使用 ...

  2. 双数组trie树的基本构造及简单优化

    一 基本构造 Trie树是搜索树的一种,来自英文单词"Retrieval"的简写,可以建立有效的数据检索组织结构,是中文匹配分词算法中词典的一种常见实现.它本质上是一个确定的有限状 ...

  3. [mysql] 2进制安装和简单优化

    ##################################mysql 2进制安装和简单优化################################################## ...

  4. 封装ajax,让调用变得简单优化

    思考一下: 通常我们在使用ajax来发送接口请求时,每一次都会调用ajax固定的元素,比如data.url.method.success.error等.那么我们想一下能不能先把ajax封装起来,在每次 ...

  5. linux简单优化

    1.简单优化 #关闭firewalld,selinux,NetworkManager systemctl(管理服务的命令) stop(关服务) firewalld (服务名称,d是demo的意思) s ...

  6. mysql的简单优化【简单易学】

    1.选取最适用的字段属性: 表字段尽量设小,不要给数据库增加没必要的空间:如:值为'01'.'02',给char(2)即可: 2.使用连接(JOIN)来代替子查询(Sub-Queries): 使用jo ...

  7. mysql简单优化思路

    mysql简单优化思路 作为开发人员,数据库知识掌握的可能不是很深入,但是一些基本的技能还是要有时间学习一下的.作为一个数据库菜鸟,厚着脸皮来总结一下 mysql 的基本的不能再基本的优化方法. 为了 ...

  8. mysql之优化器、执行计划、简单优化

    mysql之优化器.执行计划.简单优化 2018-12-12 15:11 烟雨楼人 阅读(794) 评论(0) 编辑 收藏 引用连接: https://blog.csdn.net/DrDanger/a ...

  9. 【jQuery基础学习】11 jQuery性能简单优化

    关于性能优化 合适的选择器 $("#id")会直接调用底层方法,所以这是最快的.如果这样不能直接找到,也可以用find方法继续查找 $("p")标签选择器也是直 ...

随机推荐

  1. python -input用户输入

    #接收用户输入信息用input就可以了 #还有输入密码的,也就是隐藏的,pycharm中不好用,要到命令行去 import getpass name = input('name:') age = in ...

  2. java 实现简单的顺序队列

    package com.my; import java.util.Arrays; /** * 顺序队列 * @author wanjn * */ public class ArrayQueue { p ...

  3. 直接插入排序(Straight Insertion Sort)

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  4. vue-14-过滤

    过滤器可以用在两个地方:mustache 插值和 v-bind 表达式 <!-- in mustaches --> {{ message | capitalize }} <!-- i ...

  5. 【转】MySQL实现Oracle里的 rank()over(ORDER BY) 功能

    Oracle rank()和dense_rank()的区别是: –rank()是跳跃排序,有两个第二名时接下来就是第四名 –dense_rank()l是连续排序,有两个第二名时仍然跟着第三名 sele ...

  6. iOS 10跳转到其他app

    - (BOOL)jumpsToThirdAPP:(NSString *)urlStr{ if ([urlStr hasPrefix:@"mqq"] || [urlStr hasPr ...

  7. python中的__call__()函数

    __call__ 在Python中,函数其实是一个对象: >>> f = abs >>> f.__name__ 'abs' >>> f(-123) ...

  8. :工厂模式2:抽象工厂模式--Pizza

    #ifndef __INGREDIENT_H__ #define __INGREDIENT_H__ #include <iostream> using namespace std; cla ...

  9. ReentrantReadWriteLock

    ReentrantReadWriteLock 这个对象,有两个内部类,readLock和writeLock,都有一个aqs的属性sync,实例化的时候,获取的是从ReentrantReadWriteL ...

  10. 解决Invalid bound statement (not found): com.cqupt.ssm.dao.UserDao.queryMenu问题

    今天写项目时多加了个查询菜品的方法报错: Invalid bound statement (not found): com.cqupt.ssm.dao.UserDao.queryMenu 大概意思是找 ...