Nginx的安装使用
- rpm(或pkg)安装,类似于windows安装程序,是预编译好的程序
- yum(或apt -get)安装
- 编译安装
- 检查和安装依赖项
yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel - configure
- make && make install
- 检查和安装依赖项
Nginx的配置
#顶层配置信息管理服务器级别行为
worker_processes 1;
#event指令与事件模型有关,配置处理连接有关信息
events {
worker_connections 1024;
}
#http指令处理http请求
http {
#mime type映射
include mime.types;
default_type application/octet-stream;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
#Server 表示一个虚拟主机,一台服务器可配置多个虚拟主机
server {
#监听端口
listen 80;
#识别的域名
server_name localhost;
#字符集 与url参数乱码问题有关
charset utf-8;
#access_log logs/host.access.log main;
#location表达式
#syntax: location [=|~|~*|^~] /uri/ { … }
#分为两种匹配模式..普通字符串匹配正则匹配
#无开头引导字符或以=开头表示普通字符串匹配
#以~或~*开头表示正则匹配,~*表示不区分大小写
#多个location时匹配规则
#总体是先普通后正则原则,只识别URI部分,例如请求为/test/1/abc. do?arg=xxx
#1.先查找是否有=开头的精确匹配即location = /test/1/abc.do {...}
#2.再查找普通匹配。以最大前缀为规则。如有以下两个location
# location /test/ {...}
# location /test/1/ {...}
# 则匹配后一项,
#3.匹配到一个普通格式后,搜索并未结束,而是暂存当前结果,并继续再搜索正则模式
#4.在所有正则模式location中找到第-个匹配项后,以此匹配项为最终结果
#所以正则匹配项匹配规则受定义前后顺序影响,但普通匹配不会
#5.如果未找到正则匹配项,则以3中缓存的结果为最终结果
#6.如果一个匹配都没有,返回404
#location =/ {...} 与location / {...} 的差别 #location表达式
#前一个是精确匹配,只响应/请求。所有/xxx类请求不会以前缀匹配形式匹配到它
#而后一个正相反。.所有请求必然都是以/开头,所以没有其它匹配结果时一定会执行到它
#location ^~ / {...} ^~意思是非正则。表示匹配到此模式后不再继继正则搜索
#所有如果这样配置,相当于关闭了正则匹配功能
#因为一个请求在普通匹配规则下没得到其它普通匹配结果时,..最终匹配到这里
#而这个^~指令又相当于不允许正则。相当于匹配到此为止/test/abc.jsp
location / {
root html;
index index.html index.htm;
# deny all; 拒绝请求,返回403
# allow all; 允许请求
}
location ^~ /test/ {
deny all;
}
location ~ /test/.+\.jsp$ {
proxy_pass http://192.168.1.31:8080;
}
location ~ \.jsp$ {
proxy_pass http://192.168.1.32:8080;
}
#定义各类错误页面
error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# @类似于变量定义
#error_page 403 http://www.test.com这种定义不允许,所以利用@实现
error_page 403 @page403;
location @page403 {
proxy_pass http://www.test.com;
}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
Nginx的优化
# nginx不同于apache服务器,当进行了太量优化设置后会魔术般的明显性能提升效果
# nginx在安装完成后太部分参数就已经是最优化了,我们需要管理的东西并不多
#user nobody;
#阻塞和非阻塞网络模型:
#同步阻塞模型,一请求一进(线)程,当进(线)程增加到一定程度后
#更多CPU时间浪费到切换进(线)程,性能急剧下降,所以负载率不高
#Nginx基于事件的非阻塞多路复用(epoll或kquene)模型
#一个进程在短时间内可以响应大量的请求
#建议值<= cpu核心数量,一般高于cpu数量不会带好处,也许还有进程切换开销的负面影响
worker_processes 4;
#将worker_ processes绑定到特定cpu上,避免进程在cpu间切换的开销
worker_cpu_affinity 0001 0010 0100 1000
#8内核4进程时的设置方法worker_ cpu_ affinity 00000001 00000010 00000100 10000000
#每进程最大可打开文件描述符数量(linux上文件描述符比较广义,网络端口、设备、磁盘文件都是)
#文件描述符用完了,新的连接会被拒绝,产生502类错误
# linux最太可打开文件数可通过ulimit -n FILECNT或 /etc/security/limits. conf配置
#理论值 系统最大数量/进程数。但进程间工作量并不是平均分配的,所以可以设置的太一些
worker_rlimit_nofile 655350
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
#并发响应能力的关键配置值
#每个进程允许的最大同时连接数,work_connectins * worker_processes = maxConnection;
#要注意maxConnections不等同于可响应的用户数量,
#因为一般一个浏览器会同时开两条连接,如果反向代理,nginx到后端服务器的连接也要占用连接数
#所以做静态服务器时,一般maxClient = work_connectins * worker_processes / 2
#做反向代理服务器时maxClient = work_connectins * worker_processes / 4
#这个值理论上越大越好,但最多可承受多少请求与配件和网络相关,也可最大可打开文件,最大可用sockets数量
work_connectins 500;
#指明使用epoll 或 kquene (*BSD)
use epoll
#备注:要达到超高负载下最妊的网络响应能力还有必要优化与网络相关的1inux内核参数
}
http{
include mime.types;
default_type application/octet-stream;
#关闭此项可减少I0开销,但也无法记录访问信息,不利用业务分析,一般运维情况不建议使用
access_log off
#只记录更为严重的错误日志,可减少I0压力
error_log logs/error.log crit;
#access_log logs/access.log main
#启用内核复制模式,应该保持开启达到最快I0效率
sendfile on;
#简单说,启动如下两项配置,会在数据包达到一定大小后再发送数据
#这样会减少网络通信次数,隆低阻塞概率,但也会影响响应及时性
#比较适合王文件下载这类的太数据包通信场景
#tcp_nopush on;
#tcp_nodelay on|off; on禁用Nagle算法
#keepalive_timeout 0;
# HTTP1.1支持持久连接alive
#降低每个连接的alive时间可在一定程度上提高可响应连接数量,所以一般可适当隆低此值
keepalive_timeout 30s;
#启动内容压缩,有效降低网络流量
gzip on;
#过短的内容压缩效果不佳,压缩过程还
gzip_min_length 10
#可选值1~9,压缩级别越高压缩率越
gzip_comp_level 4;
#压缩的内容类别
gzip_types text/pl
#静态文件缓存
#最大缓存数量,文件未使用存活期
open_file_cache max=655350 inactive=20s;
#验证缓存有效期时间间隔
open_file_cache_valid 30s;
#有效期内文件最少使用次数
open_file_cache_min_uses 2;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
}
}
Tomcat的安装使用
到http://tomcat.apache.org下载,解压
tomcat的安装目录介绍:
- bin:可以执行文件
- conf:tomcat服务器的配置文件
- lib:tomcat启动后需要依赖的jar包
- logs:tomcat工作之后的日志文件
- webapps:是tomcat布暑工程的目录。
- work:jsp文件在被翻译之后,保存在当前这个目录下,session对象被序列化之后保存的位置
Tomcat的配置与优化
- 内存使用配置
bin目录下catalina.bat(win)/catalina.sh(linux)
通过内存设置充分利用服务器内存
-server模式启动应用慢,但可以极大程度提高运行性能
java8开始,PermSize被MetaspaceSize代替,MetaspaceSize共享heap,不会再有java.lang.OutOfMemoryError: PermGen space,可以不设置
headless=true适用于linux系统,与图形操作有关,如生成验证码,含义是当前使用的是无显示器服务器,应用中如果获取系统显示有关参数会抛异常
可通过jmap -heap proccess_id查看设置是否成功
windows下设置方法set JAVA_OPTS=-server -Xms2048m -Xmx2048m -XX:PermSize=512m -XX:MaxPermSize=512m -Djava.awt.headless=true
linux下设置方法JAVA_OPTS="-server -Xms2048m -Xmx2048m -XX:PermSize=512m -XX:MaxPermSize=512m -Djava.awt.headless=true"
- 最大连接数配置
conf目录下server.xml
<!-- protocol启用nio模式,(tomcat8默认使用的是nio)(apr模式利用系统级异步io) -->
<!-- minSpareThreads最小空闲连接线程数 -->
<!-- maxThreads最大连接线程数 -->
<!-- acceptCount允许的最大连接数,应大于等于maxProcessors -->
<!-- enableLookups 如果为true , requst.getRemoteHost会执行DNS查找,反向解析ip对应域名或主机名 -->
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
redirectPort="8443"
maxThreads="500"
minSpareThreads="100"
maxSpareThreads="200"
acceptCount="200"
enableLookups="false"
/>