tomcat开启APR

tomcat中一共有三种运行模式,分别是:bio,nio,apr   bio是阻塞式IO操作,使用的是传统的java i/o处理方式,对于每一个请求都要创建一个线程来进行处理,所以开销较大不适合处理高并发的场景   nio是基于java中非阻塞IO操作的API实现,比传统的i/o处理方式有更高的并发运行性能,启动时可以看到:   apr是从操作系统级别解决异步IO问题,大幅度提高服务器的并发处理性能,也是Tomcat生产环境运行的首选方式   目前Tomcat 8.x默认情况下全部是运行在nio模式下,而apr的本质就是使用jni技术调用操作系统底层的IO接口,所以需要提前安装所需要的依赖,首先是需要安装openssl和apr,命令如下: yum -y install openssl-devel yum -y install apr-devel   安装之后,去tomcat官网下载native组件,native可以看成是tomcat和apr交互的中间环节,下载地址是:http://tomcat.apache.org/download-native.cgi 这里

关于负载均衡的三种传输模式(反向代理,透传,三角)

文章目录 * 1 什么是负载均衡(SLB) * 2 SLB的三种传输模式 * 2.1 反向代理模式 * 2.2 透传模式 * 2.3 三角模式 * 3 总结 什么是负载均衡(SLB) SLB(服务器负载均衡):在多个提供相同服务的服务器的情况下,负载均衡设备存在虚拟服务地址,当大量客户端从外部访问虚拟服务IP地址时,负载均衡设备将这些报文请求根据负载均衡算法,将流量均衡的分配给后台服务器以平衡各个服务器的负载压力, 避免在还有服务器压力较小情况下其他服务达到性能临界点出现运行缓慢甚至宕机情况,从而提高服务效率和质量,因此对客户端而言,RS(real server 实际服务器)的IP地址即是负载均衡设备VIP(虚拟服务地址IP)地址,真正的RS服务器IP地址对于客户端是不可见的。 SLB的三种传输模式 反向代理模式 当负载均衡设备收到客户端请求后,会记录下此报文( 源IP地址、目的IP地址、协议号、源端口、目的端口,服务类型以及接口索引),将报文目的地址更改为优选后的RS设备的IP地址,目的端口号不变,源地址修改为负载均

Linux系统启动过程

文章目录 * 1 启动顺序及过程 * 2 开机自检加载BIOS * 3 读取MBR * 4 Boot Loader * 5 加载 kernel内核 * 6 init进程依据inittab文件设定运行级别 * 7 init进程执行rc.sysinit * 8 启动内核模块 * 9 执行不同运行级别的脚本程序 * 10 执行/etc/rc.d/rc.local * 11 执行/bin/login程序 启动顺序及过程 1):载入BIOS的硬件信息,并取得第一个开机装置的代号; 2):读取第一个开机装置的MBR的boot Loader (grub)的开机信息; 3):载入OS Kernel信息,解压Kernel,尝试驱动硬件; 4):Kernel执行init程序并获得run-lebel信息(如3或5)

LDAP用户管理脚本

环境 centos 6.5 yum安装的ldap ldap用户管理中,创建用户需要一串命令,所以整理了一个用户管理脚本,用于用户创建,删除,显示等管理 脚本 使用时请注意修改LDAP的域名 (编译安装的LDAP路径需要自己修改) 用法 add user:添加用户 del user:删除用户 search user:搜索用户 list:显示所有用户 help:帮助 #!/bin/bash option=$1 user=$2 def ldap_add_user(): #首先创建一个Linux帐户 useradd $1 passwd $1 #转gid到ldap帐户 cat /etc/group | grep $1 >/tmp/

zabbix监控tomcat多实例(自动发现)

文章目录 * 1 环境及背景 * 2 脚本编写及测试 * 3 zabbix客户端配置 * 4 zabbix界面添加自动发现模板 环境及背景 一台服务器运行两个个java api接口,需要监控tomcat 服务状态很多监控项的情况下一个个添加很烦,笔者使用自动发现功能,已监控tomcat线程为例。 系统CentOS6.10,zabbix 4.0.x 脚本编写及测试 zabbix安装省略 创建发现服务器上面运行tomcat的 tomcat目录名称的脚本 脚本可以自动发现tomcat的目录名称(一般自定义),设置脚本成监控项,zabbix会定期执行这个监控项,自动发现当前服务器上所有tomcat实例,脚本默认放在/web/data/zabbix-4.0/share/zabbix/alertscripts目录下,脚本如下: #!/usr/bin/python2 #Usage: discover tomcat_app #Last Modified: import

iptables重启失败挂起,modprobe CPU占用100%

前言 有没有碰到过,当你在重启、停止防火墙或添加防火墙(iptables)规则的时候卡死呢?这时候使用top命令,还能看到一个叫modprobe的进程占用CPU 100%,kill也kill不了,只能重启电脑。 解决方法 在网上寻找了N多的文章,baidu上几乎找不到,而GG上的文章很多,可是关于切实解决方法的也很难见到,经过千辛万苦地寻找,终于有了解决方法 据小编观察,这种卡死大多数都卡在iptables重启的Unloading Module过程中,也就是在卸载模块时出了问题,可是具体是哪个模块出了问题,网上对此议论很多,但是却很麻烦,最终,小编找到一个最简单的方法,那就是,重启iptables不卸载模块。 那么应该如何实现呢? 首先要分操作系统, Centos6 Centos6系统的iptables运行脚本是在/etc/init.d/iptables,解决方法: #打开/etc/init.d/iptables vim /etc/init.d/iptables #找到卸载模块那一行 /modprobe

Linux指令类型(一)change指令

文章目录 * 1 (1)chattr * 2 (2)chgrp * 3 (3)chmod * 4 (4)chown * 5 (5)chfn * 6 (6)chsh * 7 (7)chroot (1)chattr 全名:change attribute 作用:chattr命令用于改变文件属性 语法:chattr [-RV][-v<版本编号>][+/-/=<属性>][文件或目录…] 参数: -R 递归处理,将指定目录下的所有文件及子目录一并处理。   -v<版本编号> 设置文件或目录版本。   -V 显示指令执行过程。   +<属性> 开启文件或目录的该项属性。   -<属性>

Linux下密码过期时间设置chage

chage [选项] 用户名 选项: -m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。 -M:密码保持有效的最大天数。 -w:用户密码到期前,提前收到警告信息的天数。 -E:帐号到期的日期。过了这天,此帐号将不可用。 -d:上一次更改的日期。 -i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。 -l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。 可以编辑/etc/login.defs来设定几个参数,以后设置口令默认就按照参数设定为准: PASS_MAX_DAYS 99999 PASS_MIN_DAYS 0 PASS_MIN_LEN 5 PASS_WARN_AGE 7 通过修改配置文件,能对之后新建用户起作用,而目前系统已经存在的用户,则直接用chage来配置。

nginx缓存服务器上静态文件的设置方法

nginx缓存的优点 nginx缓存,可以在一定程度上,减少源服务器的处理请求压力。 因为静态文件(比如css,js, 图片)中,很多都是不经常更新的。nginx使用proxy_cache将用户的请求缓存到本地一个目录。下一个相同请求可以直接调取缓存文件,就不用去请求服务器了。 毕竟,IO密集型服务的处理是nginx的强项。 转发缓存配置 http段配置 http{ proxy_cache_path /nginxcache levels=1:2 keys_zone=mycache:10m max_size=10g inactive=60m use_temp_path=off; } proxy_cache_path 缓存文件路径 levels 设置缓存文件目录层次;levels=1:2 表示两级目录 keys_

线上优化查 CPU的脚本

淘宝的oldratlee 同学就将上面的流程封装为了一个工具:show-busy-java-threads.sh(点击可直接下载,或参考文末链接下载),可以很方便的定位服务器java进程CPU使用情况 原文链接:https://my.oschina.net/leejun2005/blog/1524687 使用方法 show-busy-java-threads.sh # 从 所有的 Java进程中找出最消耗CPU的线程(缺省5个),打印出其线程栈。 show-busy-java-threads.sh -c <要显示的线程栈数> show-busy-java-threads.sh -c <要显示的线程栈数> -p <指定的Java Process> # -F选项:执行jstack命令时加上-F选项(强制jstack),一般情况不需要使用 show-busy-java-threads.sh -p <指定的Java Process> -F show-busy-java-threads.sh -s <指定jstack命令的全路径> # 对于sudo方式的运行,JAVA_