#顶层配置信息管理服务器级别行为 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不同于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; } } }
到http://tomcat.apache.org下载,解压
tomcat的安装目录介绍:
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"
<!-- 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" />