日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

應(yīng)用部署優(yōu)化方案分享

 

?轉(zhuǎn)載本文需注明出處:微信公眾號EAWorld,違者必究。

引言:

在企業(yè)級應(yīng)用實施和運營過程中,為了解決企業(yè)中部分業(yè)務(wù)場景訪問量大、并發(fā)量高的問題,就需要對系統(tǒng)架構(gòu)及應(yīng)用參數(shù)做出優(yōu)化和調(diào)整,如架構(gòu)優(yōu)化、數(shù)據(jù)庫優(yōu)化、應(yīng)用優(yōu)化等。

應(yīng)用系統(tǒng)部署優(yōu)化是一個不斷嘗試、實踐、總結(jié)的過程,并針對不同企業(yè)的特點制定相關(guān)解決方案。通過應(yīng)用系統(tǒng)架構(gòu)、數(shù)據(jù)庫及應(yīng)用優(yōu)化入手,并通過相關(guān)案例加以說明和解釋。

目錄:

1、應(yīng)用系統(tǒng)架構(gòu)簡介

2、數(shù)據(jù)庫及應(yīng)用優(yōu)化方案

3、優(yōu)化案例分析

1. 應(yīng)用系統(tǒng)架構(gòu)簡介


應(yīng)用系統(tǒng)架構(gòu)的發(fā)展

當(dāng)今互聯(lián)網(wǎng)技術(shù)發(fā)展日新月異,應(yīng)用系統(tǒng)架構(gòu)也在不斷的更新迭代,從傳統(tǒng)的單一架構(gòu)演變?yōu)槿缃竦募杭軜?gòu)、分布式、微服務(wù)架構(gòu)等,以便滿足用戶對系統(tǒng)的要求。

NO1.單機部署架構(gòu)

互聯(lián)網(wǎng)建設(shè)初期,用戶訪問量有限,數(shù)據(jù)量不大,多數(shù)系統(tǒng)采用單臺服務(wù)器部署應(yīng)用服務(wù),系統(tǒng)服務(wù)、文件、數(shù)據(jù)庫等所有系統(tǒng)資源部署在一臺服務(wù)器上.

應(yīng)用部署優(yōu)化方案分享

 

NO2.應(yīng)用和數(shù)據(jù)分離

隨著用戶量和數(shù)據(jù)量的不斷攀升,業(yè)務(wù)對系統(tǒng)的性能要求越來越高,這是需要將應(yīng)用和數(shù)據(jù)分離,單獨部署相關(guān)的業(yè)務(wù)組件。

 

應(yīng)用部署優(yōu)化方案分享

 

NO3.引入NoSQL數(shù)據(jù)庫架構(gòu)

隨著用戶不斷的增加,關(guān)系型數(shù)據(jù)庫壓力變大,訪問延遲,性能下降,這時加入緩存技術(shù),將查詢較多數(shù)據(jù)緩存起來,以加快應(yīng)用訪問速度。

應(yīng)用部署優(yōu)化方案分享

 

NO4.應(yīng)用集群部署

在訪問量高峰時期,單一的系統(tǒng)服務(wù)往往無法承受巨大的訪問量,這時就需要做集群服務(wù),以減少單臺服務(wù)器的壓力。

應(yīng)用部署優(yōu)化方案分享

 

中小企業(yè)應(yīng)用系統(tǒng)多數(shù)為集群部署,既保證系統(tǒng)的穩(wěn)定性,又能降低因服務(wù)器故障,造成數(shù)據(jù)丟失的風(fēng)險。

其他在應(yīng)用集群部署方案上演變的架構(gòu)系統(tǒng),如:分布式、微服務(wù)架構(gòu)等,對系統(tǒng)穩(wěn)定性和安全性做的更加出色。

2.數(shù)據(jù)庫及應(yīng)用優(yōu)化方案

本章節(jié)主要介紹MySQL數(shù)據(jù)庫的部署及常見優(yōu)化方案;應(yīng)用以Tomcat為例,簡單介紹tomcat的常見參數(shù)優(yōu)化配置。

  • 數(shù)據(jù)庫分類介紹

當(dāng)今的互聯(lián)網(wǎng)企業(yè)中,最常用的數(shù)據(jù)庫模式主要有兩種,即關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫。

關(guān)系型數(shù)據(jù)庫:采用了關(guān)系模型來組織數(shù)據(jù)的數(shù)據(jù)庫,其以行和列的形式存儲數(shù)據(jù),行和列被稱為表,一組表組成了數(shù)據(jù)庫。

  • MySQL:甲骨文旗下產(chǎn)品,體積小、速度快、成本低,代碼開源,適用于中小型網(wǎng)站開發(fā)
  • ORACLE:同樣為甲骨文旗下產(chǎn)品,Oracle可移植性好、使用方便、功能強,高效率、可靠性好的、適應(yīng)高吞吐量的數(shù)據(jù)庫方案
  • SQLServer:微軟旗下產(chǎn)品,圖像化用戶界面,使用方便、web技術(shù)支持良好、豐富的編程接口

非關(guān)系型數(shù)據(jù)庫:去掉關(guān)系數(shù)據(jù)庫的關(guān)系型特性,數(shù)據(jù)之間無關(guān)系,非常容易擴展。同時也在架構(gòu)的層面上帶來了可擴展能力。大數(shù)據(jù)量,高性能,NoSQL數(shù)據(jù)庫具有非常高的讀寫性能。

  • redis:基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫
  • MongoDB:分布式文件存儲數(shù)據(jù)庫,高效的二進(jìn)制數(shù)據(jù)存儲,使用方便
  • HBASE:列存儲數(shù)據(jù)庫,以列簇式存儲,將同一列數(shù)據(jù)存在一起
  • MySQL數(shù)據(jù)庫部署

案例系統(tǒng)環(huán)境為RadHat_6.6_64;數(shù)據(jù)庫版本為MySQL-5.7.23社區(qū)版(mysql-5.7.23-1.el6.x86_64.rpm-bundle.tar)。

mysql安裝方法有RPM包安裝和源碼包安裝,RPM安裝是最簡單的安裝方法,不需要源碼編譯適合初學(xué)者安裝使用。

1.檢查系統(tǒng)是否含有自帶mysql

使用命令# rpm -qa|grep -i mysql

2.yum卸載自帶mysql

使用命令# yum -y remove mysql-libs-*

卸載完成后,請再次執(zhí)行步驟1進(jìn)行檢查

3.上傳mysql-5.7.23-1.el6.x86_64.rpm-bundle.tar到服務(wù)器,并解壓縮

# tar –xvf mysql-5.7.23-1.el6.x86_64.rpm-bundle.tar

4.rpm安裝mysql數(shù)據(jù)庫,按照順序以下命令執(zhí)行

#rpm -ivh mysql-community-common-5.7.23-1.el6.x86_64.rpm

#rpm -ivh mysql-community-libs-5.7.23-1.el6.x86_64.rpm

#rpm -ivh mysql-community-libs-compat-5.7.23-1.el6.x86_64.rpm

#rpm -ivh mysql-community-embedded-5.7.23-1.el6.x86_64.rpm

#rpm -ivh mysql-community-devel-5.7.23-1.el6.x86_64.rpm

#rpm -ivh mysql-community-embedded-devel-5.7.23-1.el6.x86_64.rpm

#rpm -ivh mysql-community-client-5.7.23-1.el6.x86_64.rpm

#rpm -ivh mysql-community-server-5.7.23-1.el6.x86_64.rpm

5.初始化數(shù)據(jù)庫

# mysqld --initialize

6.啟動數(shù)據(jù)庫并修改root默認(rèn)密碼

使用命令 # service mysqld start --啟動數(shù)據(jù)庫

使用命令 # service mysqld status --檢查數(shù)據(jù)庫狀態(tài)

使用命令 # cat /var/log/mysqld.log --查看數(shù)據(jù)庫root初始化密碼

登錄mysql數(shù)據(jù)庫:

# mysql -uroot –p ‘!w1wzCxJprmv’

設(shè)置root用戶的新密碼:

#set password=password('******');

 

可設(shè)置mysql服務(wù)開機自啟動:

chkconfig --add mysqld

chkconfig mysqld on

檢查:chkconfig --list mysqld

MySQL參數(shù)優(yōu)化

需要修改my.cnf配置文件,修改完成后,重新啟動mysql # service mysqld restart

參數(shù)設(shè)置:

  • skip-name-resolve

#開啟該選項,則所有遠(yuǎn)程主機連接授權(quán)都要使用IP地址方式

  • back_log = 512

#系統(tǒng)在一個短時間內(nèi)有很多連接,則需要增大該值,該值指定到來的TCP/IP連接的偵聽隊列的大小,linux系統(tǒng)推薦設(shè)置為小于512的整數(shù)

  • max_allowed_packet = 4M

#限制插入的數(shù)據(jù)包大小

  • max_connections = 500

#指定MySQL允許的最大連接進(jìn)程數(shù)

  • sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER

# NO_ENGIN_SUBSTITUTION 在創(chuàng)建表指定一個不存在的存儲引擎,mysql會提示錯誤,反之,則會設(shè)置成默認(rèn)的innodb

# STRICT_TRANS_TABLES 在插入或更新數(shù)據(jù)時進(jìn)行更嚴(yán)格的檢查,如果發(fā)現(xiàn)某個值缺失或非法,MySQL將拋出錯誤,語句會停止運行并回滾

# NO_AUTO_CREATE_USER 新建用戶不能空密碼

lower_case_table_names=1

#“0”是表名存儲是給定的大小寫,比較是區(qū)分大小寫的 “1”表名存儲在磁盤是小寫,比較是不區(qū)分大小寫的 “2”表名存儲是給定的大小寫,比較是小寫

  • explicit_defaults_for_timestamp=true

#如果一行數(shù)據(jù)中某些列被更新了,如果這一行中有timestamp類型的列,那么這個timestamp列的數(shù)據(jù)也會被自動更新到,更新操作所發(fā)生的那個時間點

skip-networking

#開啟該選項可以徹底關(guān)閉MySQL的TCP/IP連接方式,如果WEB服務(wù)器是以遠(yuǎn)程連接的方式訪問MySQL數(shù)據(jù)庫服務(wù)器則不要開啟該選項!!!!!

MySQL不同訪問量級時的架構(gòu)應(yīng)用

日訪問量為萬級以內(nèi)

無需做架構(gòu)層優(yōu)化,應(yīng)用和數(shù)據(jù)庫分離部署,但是考慮數(shù)據(jù)的安全和備份,可以考慮搭建主從部署,主數(shù)據(jù)庫承擔(dān)所有業(yè)務(wù)訪問,從數(shù)據(jù)庫用作熱備

日訪問量達(dá)到十萬以上

可以考慮一主多從(讀寫分離)架構(gòu),即主數(shù)據(jù)庫承擔(dān)“寫”任務(wù),從數(shù)據(jù)庫承擔(dān)“讀”任務(wù)

日訪問量達(dá)到百萬以上

一主已經(jīng)無法承擔(dān)相關(guān)業(yè)務(wù)訪問,需要進(jìn)一步作出調(diào)整。我們將相關(guān)的用戶、業(yè)務(wù)、權(quán)限等分離出來,單獨運行至一個數(shù)據(jù)庫,然后再做主從,即分庫;也可以將讀取量或者寫入量大的表分離出來,單獨運行至一個數(shù)據(jù)庫,或者將大表分離成多個小表,即分表。這種方式就是分庫分表的模式

  • 主從同步架構(gòu)介紹
應(yīng)用部署優(yōu)化方案分享

 

可用于用戶量較小,允許短時終止服務(wù)的子系統(tǒng)或小型系統(tǒng)。

當(dāng)master出現(xiàn)故障時,可以通過手動調(diào)整web應(yīng)用服務(wù)器連接數(shù)據(jù)庫的地址,將數(shù)據(jù)庫請求切換到slave數(shù)據(jù)庫中。

當(dāng)master故障修復(fù)后,可以將slave數(shù)據(jù)庫的整個mysql-data目錄拷貝至master中,值得注意的是,mysql-data目錄中包含auto.cnf文件,這是mysql的server-uuid值,需要繼續(xù)使用master中原有的值,然后重新配置主從同步。

[auto]

server-uuid=a34c331b-e55c-11e9-9107-000c292efb70

也可以將Slave用作主庫使用,Master當(dāng)作從庫使用,重新配置主從同步。

主從同步部署

1.主庫創(chuàng)建同步用戶

mysql>GRANT REPLICATION SLAVE,FILE ON *.* TO 'replication'@'%' IDENTIFIED BY '*******'

2.修改主庫配置文件

編輯my.cnf文件

log-bin=mysql-bin #日志文件名

server-id=1 #主數(shù)據(jù)庫端ID號

修改問完成,請重啟

3.查詢主庫master狀態(tài)

mysql> show master status;

+------------------+----------+--------------+------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000001 | 154 | | |

+------------------+----------+--------------+------------------+

調(diào)整完畢后不要再操作主庫,防止主庫數(shù)據(jù)發(fā)生變化

4.從庫執(zhí)行同步命令

mysql>change master to master_host=‘192.168.0.1’,master_user= ‘replication ’,master_password=‘******',master_log_file='mysql-bin.000001',master_log_pos=154;

mysql>start slave; #開啟同步

5.檢查從庫同步狀態(tài)

show slave statusG;

# Slave_IO_Running及Slave_SQL_Running進(jìn)程必須正常運行

應(yīng)用部署優(yōu)化方案分享

 

主從同步參數(shù)優(yōu)化

主從同步參數(shù)優(yōu)化,修改my.cnf文件

1.參數(shù)進(jìn)行忽略(從庫配置文件)

當(dāng)業(yè)務(wù)中出現(xiàn)無需同步的數(shù)據(jù)表時,可以選擇replicate_wild_ignore_table=db.table參數(shù)進(jìn)行忽略(從庫配置文件)

2.跳過指定錯誤(從庫配置文件)

slave-skip-errors = 1062,1053 #根據(jù)業(yè)務(wù)類型選擇

1007:數(shù)據(jù)庫已存在,創(chuàng)建數(shù)據(jù)庫失敗

1008:數(shù)據(jù)庫不存在,刪除數(shù)據(jù)庫失敗

1050:數(shù)據(jù)表已存在,創(chuàng)建數(shù)據(jù)表失敗

1051:數(shù)據(jù)表不存在,刪除數(shù)據(jù)表失敗

1054:字段不存在,或程序文件跟數(shù)據(jù)庫有沖突

1060:字段重復(fù),導(dǎo)致無法插入

1061:重復(fù)鍵名

1068:定義了多個主鍵

1094:位置線程ID

1146:數(shù)據(jù)表缺失,請恢復(fù)數(shù)據(jù)庫

1053:復(fù)制過程中主服務(wù)器宕機

1062:主鍵沖突

3.刪除同步日志(主庫配置文件)

Master庫中的同步日志需要及時刪除

Expire_logs_days = 7 #刪除7天前的同步日志

主從復(fù)制原理簡介

 

應(yīng)用部署優(yōu)化方案分享

 

 

  1. slave庫手動執(zhí)行change master to 語句連接master庫,提供了連接的用戶一切條件(user 、pwd、port、ip),并且讓slave知道,二進(jìn)制日志的起點位置(file名 position 號),同時開啟start slave
  2. slave庫的IO線程和主庫的dump線程建立連接
  3. slave庫根據(jù)change master to 語句提供的file名和position號,IO線程向主庫發(fā)起binlog的請求
  4. master庫dump線程根據(jù)從庫的請求,將本地binlog發(fā)給slave庫IO線程
  5. slave庫IO線程接收binlog并存放到本地relay-log中
  6. slave庫SQL線程應(yīng)用relay-log,默認(rèn)情況下,已經(jīng)應(yīng)用過的relay-log 會自動被清理
  • 主主同步架構(gòu)介紹
應(yīng)用部署優(yōu)化方案分享

 

由于keepalived會檢測mysql運行狀態(tài),在重啟mysql時注意,先停止keepalived服務(wù),確認(rèn)mysql運行正常時,再啟動keepalived。

主主配置方式和上文介紹的主從配置類似,即master復(fù)制slave數(shù)據(jù),slave復(fù)制master數(shù)據(jù)。

Keepalived實現(xiàn)自動切換

Keepalived是實現(xiàn)集群高可用的服務(wù)軟件,通過虛擬路由冗余協(xié)議(vrrp),將N臺提供相同服務(wù)的路由組成一個路由組,可以有一個master和多個backup,master上是對外提供服務(wù)的虛擬ip,當(dāng)backup收不到master發(fā)送的vrrp包時就認(rèn)為master宕掉,此時選舉一個backup來充當(dāng)master并重新綁定虛擬ip,來保證服務(wù)高可用性。

1.用戶自行下載相關(guān)版本并安裝

# cd keepalived

# ./configure --prefix=/usr/local/keepalived (安裝路徑)

# make && make install

2.設(shè)置系統(tǒng)為系統(tǒng)服務(wù)方便啟動停止

mkdir /etc/keepalived

cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

ln -s /usr/local/sbin/keepalived /usr/sbin/

ln -s /usr/local/keepalived/sbin/keepalived /sbin/

3.建議將keepalived設(shè)置為自啟服務(wù)

chkconfig keepalived on

4.Keepalived配置管理

修改/etc/keepalived/keepalived.conf文件

5.編寫keepalived執(zhí)行腳本

注意:授權(quán)chmod +x /etc/keepalived/mysql_check.sh

6.可配置郵件發(fā)送提醒

編寫sendmail.pl腳本,注意:授權(quán)chmod +x /etc/keepalived/sendmail.pl

7.keepalived配置文件

global_defs { #全局配置

notification_email { #定義報警郵件地址

root@localhost

}

notification_email_from root@localhost #定義發(fā)送郵件的地址

smtp_server 127.0.0.1 #郵箱服務(wù)器

smtp_connect_timeout 30 #定義超時時間

router_id LVS_DEVEL #定義路由標(biāo)識信息,建議使用主機名

}

vrrp_script chk_mysql {

script "/etc/keepalived/mysql_check.sh"

interval 2

weight -20

}

vrrp_instance VI_83 { #定義實例

state MASTER #狀態(tài)參數(shù) master/backup 只是說明

interface eth0 #虛ip綁定網(wǎng)卡位置

virtual_router_id 83 #同一個集群id一致

priority 100 #priority值最大的將成為master

mcast_src_ip 192.168.0.1 #發(fā)送組播包的地址,不設(shè)置則使用網(wǎng)卡默認(rèn)ip

advert_int 1 #主備通訊間隔s

authentication { #設(shè)置認(rèn)證

auth_type PASS

auth_pass 1111

}

track_script {

chk_mysql

}

virtual_ipaddress { #虛擬ip

192.168.0.0

}

notify_master /etc/keepalived/sendmail.pl #郵件發(fā)送腳本

}

  • 一主多從架構(gòu)部署介紹
應(yīng)用部署優(yōu)化方案分享

 

應(yīng)用服務(wù)器只配置mycat地址即可,mycat可以實現(xiàn)讀寫分離和故障切換。

Master負(fù)責(zé)寫入,Slave負(fù)責(zé)讀取,同時MySQL可以支持級聯(lián)同步部署。

MySQL為保證事務(wù)的完整性,復(fù)制在slave上是串行化的,也就是多個master上的并行更新操作不能在同一slave上同時進(jìn)行。

Mycat讀寫分離配置及優(yōu)化

mycat可用于讀寫分離和數(shù)據(jù)切分的高可用中間件,并支持基于心跳檢測的自動故障切換,mycat主要包含兩個核心配置文件server.xml和schema.xml

1.server.xml配置優(yōu)化

<user name=“user”> <!—對客戶端提供的用戶名、密碼 及表空間-->

<property name="password">******</property>

<property name="schemas">testdb</property>

<property name="readOnly">false</property>

<!--readOnly設(shè)置成false,代表可進(jìn)行讀寫操作-->

</user>

2. schema.xml配置優(yōu)化

<schema name=“testdb" checkSQLschema="false" sqlMaxLimit="100" dataNode=“dn1">

</schema>

<dataNode name=“dn1" dataHost="host001" database=“db1" />

<dataHost name=" host001" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="2" slaveThreshold="100">

<heartbeat>show slave status </heartbeat>

<writeHost host=“mysql-1” url=“192.168.0.1:3306” user=“user” password=“******”>

<!—master可讀、寫操作,slave只讀-->

<readHost host="mysql-1" url="192.168.0.1:3306" user=“user" password="******" />

<readHost host="mysql-2" url="192.168.0.2:3306" user=“user" password="******" />

</writeHost>

<writeHost host=“mysql-2” url=“192.168.0.2:3306” user=“user”password=“******”>

<!—master故障,切換slave讀寫-->

<readHost host="mysql-2" url="192.168.0.2:3306" user=“user" password="******" />

</writeHost>

</dataHost>

參數(shù)說明:

writeType屬性負(fù)載均衡類型,目前的取值有3種:

  1. writeType="0", 所有寫操作發(fā)送到配置的第一個writeHost,第一個掛了切到還生存的第二個writeHost,重新啟動后以切換后的為準(zhǔn),切換記錄在配置文件中:dnindex.properties.
  2. writeType="1",所有寫操作都隨機的發(fā)送到配置的writeHost,1.5以后廢棄不推薦。
  3. writeType="2",不執(zhí)行寫操作

switchType指的是切換的模式,目前的取值也有4種:

  1. switchType='-1' 表示不自動切換
  2. switchType='1' 默認(rèn)值,表示自動切換
  3. switchType='2' 基于MySQL主從同步的狀態(tài)決定是否切換,心跳語句為 show slave status
  4. switchType='3'基于MySQL galary cluster的切換機制(適合集群)(1.4.1),心跳語句為 show status like 'wsrep%'

負(fù)載均衡類型,目前的取值有4種:

  1. balance="0", 不開啟讀寫分離機制,所有讀操作都發(fā)送到當(dāng)前可用的writeHost上。
  2. balance="1",所有讀操作都隨機的發(fā)送到readHost。全部的readHost與stand by writeHost參與select語句的負(fù)載均衡,簡單的說,當(dāng)雙主雙從模式(M1->S1,M2->S2,并且M1與 M2互為主備),正常情況下,M2,S1,S2都參與select語句的負(fù)載均衡。
  3. balance="2",所有讀操作都隨機的在writeHost、readhost上分發(fā)。
  4. balance="3",所有讀請求隨機的分發(fā)到wiriterHost對應(yīng)的readhost執(zhí)行,writerHost不負(fù)擔(dān)讀壓力
  • Tomcat優(yōu)化分享

1.內(nèi)存優(yōu)化

內(nèi)存優(yōu)化主要是對啟動參數(shù)優(yōu)化,啟動腳本 catalina.sh 中設(shè)置 JAVA_OPTS 參數(shù)

JAVA_OPTS參數(shù)說明:

-server 啟用jdk 的 server 版

-Xms java虛擬機初始化時的最小內(nèi)存

-Xmx java虛擬機可使用的最大內(nèi)存

-XX: PermSize 內(nèi)存永久保留區(qū)域

-XX:MaxPermSize 內(nèi)存最大永久保留區(qū)域

配置示例:

JAVA_OPTS=’-Xms1024m -Xmx2048m -XX: PermSize=256M -XX:MaxNewSize=256m -XX:MaxPermSize=256m’

說明:其內(nèi)存的配置需要根據(jù)服務(wù)器(或虛擬機)的實際內(nèi)存來配置;重啟tomcat生效。

2.線程優(yōu)化

修改server.xml配置文件:

maxThreads = “500”

//最大線程數(shù),默認(rèn)200,沒有最理想的值,需要不斷調(diào)整、優(yōu)化,道道最合理的配置

//當(dāng)系統(tǒng)需要大量計算時,響應(yīng)時間取決于cup運算能力,此時maxThreads盡量設(shè)小,降低同一時間內(nèi)爭搶cup的線程數(shù)

//當(dāng)系統(tǒng)主要是I/O或操作數(shù)據(jù)庫時,響應(yīng)時間取決于外部資源等待,此時maxThreads盡量設(shè)大,提高同時處理請求的個數(shù)

minSpareThreads=“50“ //初始化時創(chuàng)建的線程數(shù),默認(rèn)值為4

maxSpareThreads="500“ //一旦創(chuàng)建的線程超過這個值,Tomcat就會關(guān)閉不再需要的socket線程

acceptCount=“500”

//當(dāng)所有處理的線程都正在使用時,在隊列中排隊請求的最大數(shù)目,默認(rèn)值為10,

//超出隊列數(shù),任何請求都會被拒絕一般設(shè)置跟maxThreads一樣大,

//這個值應(yīng)該是主要根據(jù)應(yīng)用的訪問峰值與平均值來權(quán)衡配置的

3.其他常用優(yōu)化

maxPostSize=“-1” //POST請求數(shù)據(jù)大小限制,默認(rèn)2M,tomcat-7.0.63之前設(shè)置為”0”表示不限制,7.0.63版本之后,設(shè)置為負(fù)數(shù),表示不顯示

connectionTimeout=“20000” //設(shè)置連接超時時間毫秒值

maxHttpHeaderSize=“8192” //HTTP請求和響應(yīng)頭的最大量,以字節(jié)為單位,默認(rèn)值為4096字節(jié)

URIEncoding=“UTF-8“ //Tomcat中配置URIEncoding=”UTF-8”來進(jìn)行中文的處理

enableLookups=“false” //如果為true,則可以通過調(diào)用request.getRemoteHost()進(jìn)行DNS查詢來得到遠(yuǎn)程客戶端的實際主機名,若為false則不進(jìn)行DNS查詢,而是返回其ip地址,為了提高處理能力,應(yīng)設(shè)置為 false

3.優(yōu)化案例分析


上面章節(jié)介紹了架構(gòu)演變、數(shù)據(jù)庫及相關(guān)組件部署優(yōu)化、Tomcat應(yīng)用優(yōu)化等內(nèi)容,本章節(jié)以實際架構(gòu)案例分析,講解上述內(nèi)容在實際架構(gòu)中的應(yīng)用。

應(yīng)用部署優(yōu)化方案分享

 

案例架構(gòu)采用典型的分層服務(wù)架構(gòu)(三層),即接入層、應(yīng)用層和數(shù)據(jù)層,所有應(yīng)用服務(wù)均使用集群部署,保證服務(wù)的高可用性。

數(shù)據(jù)層:

案例系統(tǒng)中,數(shù)據(jù)讀取業(yè)務(wù)偏多,故考慮使用使用mycat做讀寫分離,兩臺數(shù)據(jù)庫同時對外提供讀取業(yè)務(wù),其中一臺主服務(wù)器提供寫入操作,當(dāng)master節(jié)點宕機之后,mycat組件檢測到服務(wù)狀態(tài),并將讀寫能力全部切換至slave節(jié)點,保證系統(tǒng)的運行

Mycat組件進(jìn)行讀寫分離和故障切換,所有應(yīng)用服務(wù)連接keepalived對外提供的虛擬ip進(jìn)行數(shù)據(jù)庫操作,Mycat本身也是一個高可用集群架構(gòu)。

應(yīng)用層:

內(nèi)網(wǎng)負(fù)責(zé)均衡服務(wù)除了可以負(fù)載業(yè)務(wù)的請求之外,還將DMZ區(qū)與內(nèi)網(wǎng)隔離,避免代理服務(wù)器直接請求內(nèi)網(wǎng)應(yīng)用,負(fù)載均衡Nginx使用時,應(yīng)當(dāng)根據(jù)集群中服務(wù)器的性能、部署服務(wù)等,合理進(jìn)行權(quán)重分配。

公共組件應(yīng)用服務(wù)器將組件服務(wù)通過分布式系統(tǒng)發(fā)布,供其他業(yè)務(wù)系統(tǒng)使用;也可為移動端提供公共服務(wù)組件。

應(yīng)用集群服務(wù)器可能存在文件上傳業(yè)務(wù),當(dāng)文件上傳至服務(wù)器后,注意集群之間的數(shù)據(jù)同步問題。

接入層:

DMZ區(qū):為了解決外部網(wǎng)絡(luò)不能訪問內(nèi)部網(wǎng)絡(luò)服務(wù)器的問題,而設(shè)立的一個非安全系統(tǒng)與安全系統(tǒng)之間的緩沖區(qū)。由于DMZ區(qū)的特殊性,與Internet相比,DMZ可以提供更高的安全性,但是其安全性比內(nèi)部網(wǎng)絡(luò)低,所以在部署時,特別注意網(wǎng)絡(luò)上的連通性關(guān)系。

DMZ區(qū)左側(cè)代理服務(wù)器主要負(fù)責(zé)代理推送和設(shè)備管理服務(wù)對互聯(lián)網(wǎng)的請求,用戶也可直接通過互聯(lián)網(wǎng)訪問到該代理集群服務(wù)器,可以用作內(nèi)部自建應(yīng)用市場等互聯(lián)網(wǎng)服務(wù);DMZ區(qū)右側(cè)代理服務(wù)器主要通過安全網(wǎng)關(guān)通道將業(yè)務(wù)請求代理至內(nèi)網(wǎng),安全網(wǎng)關(guān)只對其白名單中的服務(wù)器和端口進(jìn)行開放。

*1.注意圖中①②③④標(biāo)注位置的網(wǎng)絡(luò)開通

*2.圖中使用keepalived做高可用架構(gòu)的地方如圖中的⑤標(biāo)注位置,需要注意虛擬ip的使用

應(yīng)用部署和優(yōu)化的方法多種多樣,其本身就是一個不斷嘗試、實踐、總結(jié)的過程,很多相關(guān)的技術(shù)方案和閱讀資料只能用作借鑒參考,我們需要針對不同企業(yè)的特點來制定相關(guān)方案,不斷去優(yōu)化嘗試,才能最終解決問題。

關(guān)于作者:冬火,現(xiàn)任普元移動團(tuán)隊開發(fā)運維工程師,主攻Java Web開發(fā)、系統(tǒng)架構(gòu)設(shè)計和維護(hù),先后參與多家金融機構(gòu)移動平臺系統(tǒng)的開發(fā)和架構(gòu)設(shè)計運維工作。專注服務(wù)部署和優(yōu)化、網(wǎng)絡(luò)技術(shù)愛好者,移動平臺架構(gòu)的踐行者。

關(guān)于EAWorld:微服務(wù),DevOps,數(shù)據(jù)治理,移動架構(gòu)原創(chuàng)技術(shù)分享。

分享到:
標(biāo)簽:部署
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達(dá)人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定