# Nginx+tomcat集群
## 一.概述
Nginx 是一個很強大的高性能Web和反向代理服務器,它具有很多非常優越的特性:在高連接并發的情況下,Nginx是Apache服務器不錯的替代品,能夠支持高達 50,000 個并發連接數的響應。
Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬于輕量級應用服務器,利用nginx高并發等特性,可以實現tomcat服務器集群的負載均衡。
## 二.優點
?提高單個服務器處理業務的性能,把鏡頭請求交給nginx處理,而動態則分發到tomcat服務器群,實現動態分離,減輕服務器的壓力
?提高系統的穩定性,當集群中有一臺機器出現故障時,會把請求分發到其他服務器,系統不會因此癱瘓
?提高系統的并發能力,nginx可以并發幾萬個連接,而且把動態業務分發到tomcat服務器,大大提高服務器的處理效率
### 三,架構圖

分析:
從圖中我們可以看出影響系統性能的主要有兩個方面:1.nginx負載均衡服務器 2.tomcat服務器,其中nginx服務器的性能決定了整個系統的性能,因此我們要優化nginx服務器,使其可以處理更多的請求,其次,tomcat服務器的性能決定了處理業務的速度,從而間接提高nginx服務器的處理能力。
## 四.Nginx服務器的搭建與優化
1.安裝
直接解壓,并運行nginx.exe,打開http://localhost/即可訪問
2.性能監聽
開啟性能監聽模塊,便于我們觀察服務器的狀態
在nginx.conf里的server段里增加
location /status {
stub_status on;
access_log logs/status.log;
auth_basic "NginxStatus";
}
訪問http://localhost/status
其中Active connections 表示當前連接數
Waiting表示當前等待連接數
優化的結果就是盡可能地提高當前的連接數,也就是并發數
3.配置優化
#開啟4個工作進程,與cpu等同
worker_processes 4;
#設置nginx能打開的最大文件數
worker_rlimit_nofile 10240;
#每個進程可以支持的最多線程數
worker_connections 10240;
#關閉日志
access_log off;
#啟用內核復制模塊,保持最大的io效率
sendfile on;
#提高并發效率
keepalive_timeout 40;
#配置服務器群
upstream myappserver{
server 127.0.0.1:8080 max_fails=2 ;
server 127.0.0.1:8081 max_fails=2 ;
server 127.0.0.1:8082 max_fails=2 ;
}
#開啟壓縮
gzip on;
gzip_http_version 1.1;
gzip_vary on;
gzip_comp_level 6;
gzip_min_length 1000;
gzip_proxied any;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_buffers 16 8k;
gzip_disable "MSIE [1-6]\.";
#優化fastcgi
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
#指定該目錄跳轉到集群
location /myapp{
proxy_pass http://myappserver;
proxy_redirect default;
}
注:經過測試在windows上nginx最多只能保持1024個連接,也就是最多只能同時處理1024個請求,原因應該是系統限制,如tcp/ip的連接數,同時打開的文件數
## 五.Tomcat的搭建與優化
1.開啟status監控
修改配置文件tomcat-users(該文件在Tomcat安裝程序根目錄中的conf文件夾中),添加一個admin設置權限,在<tomcat-users>中添加的內容如下:
<role rolename="admin-gui"/>
<user username="admin" password="1234" roles="manager-gui"/>
2.配置與優化
?提高處理請求的能力
acceptCount="2000" 最大處理并發數
maxThreads="3000" 最多開啟3000個線程
minSpareThreads="200" 最小空閑線程數
maxSpareThreads="500" 最大空閑線程數
?優化內存
JAVA_OPTS='-Xms1024m?-Xmx2048m?-XX:PermSize=256M?-XX:MaxNewSize=256m?-XX:MaxPermSize=256m'
?緩存優化
compression="on"
compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
- 我的筆記
- 服務器
- ubuntu svn 環境的搭建
- ubuntu Memcache 的配置
- ubuntu 密鑰登錄服務器
- centos 搭建服務器環境
- nginx+tomcat 集群搭建
- 餐廳運營來看如何構建高性能服務器
- VMware-Centos-網絡配置
- Ubuntu-PHP-Apache-Mysql-PhpMyadmin的搭建
- UbuntuApache配置日志
- linux獲取當前執行腳本的目錄
- Ubuntu svn的快速配置(原創)
- Https配置
- Mysql 不支持遠程連接解決方案
- ubuntu+apache+rewrite
- php Mcrypt 擴展
- 重啟Apache出現警告信息Could not reliably determine the server's fully qualified domain name,
- Mysql無法遠程連接
- 定時任務設置
- Linux中Cache內存占用過高解決辦法
- Ubuntu14-04安裝redis和php5-redis擴展
- php
- thinkphp3.2 一站多城市配置
- PHP 安全編程建議(轉)
- phpexcel導入時間處理
- Mysql按時,天,月,年統計數據
- PHP-支付寶-APP支付
- 百度爬蟲-獲取全國數據
- PHPEXCEL導入導出excel文件
- php-微信app支付后端設計
- Phpqrcode生成二維碼
- 圖片+文字水印
- 數據庫優化
- java
- Mybatis 二級緩存
- 微信
- 微信公眾號多域名授權
- 微信掃碼支付
- web
- 網站性能優化方案實施
- ionic環境搭建
- 登錄設計方案
- 設置dev元素的寬高比例
- 設計模式
- app
- 版本更新
- 微擎數據庫操作擴展
- select
- find
- delete
- update
- insert
- where
- order
- page
- group
- having
- limit
- fields
- debug
- bind
- join
- alias
- query
- 聚合函數
- count
- sum
- max
- min
- avg
- 事務管理
- 自增自減
- 算法設計
- ACM:入口的選擇------深度優先搜索
- java:N的N次方
- 最少攔截系統:貪心思想
- ACM:蠶寶寶:搜索
- ACM:n!的位數 :斯特林公式
- 神奇的異或
- 中國剩余定理
- 矩陣翻硬幣
- 回溯法
- ACM程序設計網站集錦
- 博弈論
- 多維空間上的搜索算法
- 算法學習筆記之一(排序)
- 算法學習筆記之二(堆排序)
- 算法學習筆記之三(快速排序)
- ACM俱樂部密碼
- 原創開源
- 個人感悟