引言
為了加強基礎知識的復習,鞏固學習成果,小猿將最近上線的公司專案重新部署一遍并記載整個程序,并說明要點,為傳統專案部署做個綜合案例以便做參考,
作業系統
CentOS 記憶體4g 雙核
資料庫作業系統
CentOS 記憶體2g 雙核
jdk安裝
小猿以前的文章中有過專門安裝jdk的文章,如果是安裝jdk小白,請點看小猿的jdk離線安裝如果了解jdk機理,小猿就直接上步驟,
stem-one:獲取系統位數
首先 在安裝各個軟體之前,需要確定自己作業系統的一些資訊,如要獲取自己作業系統的位數,確定是那種系統,才可以決定安裝那個軟體,
#獲取系統
getconf LONG_BIT
step-two:jdk的下載
下載jdk,下載jdk版本也是有講究的,如無特殊需求,還是建議下載jdk1.8.192版本以前的版本,據小猿了解從oracle 公司從 jdk1.8.192開始收費了,所以下載版本的時候需要注意,目前,要下載oracle公司的產品,則必須要注冊oracle賬號,即先注冊后下載,
官網下載地址
https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html

step-three:卸載jdk
查看openjdk
如果有直接卸載
rpm -qa | grep jdk

卸載安裝包

rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.181-7.b13.el7.x86_64
step-four:jdk安裝
rpm包安裝
如果不是壓縮軟體,是rpm包,就直接安裝
rpm -ivh xxx
壓縮包安裝
如果是是.gz檔案,就直接解壓
tar -zxvf jdk-8u191-linux-x64.tar.gz -C /usr/local/jdk
step-five:配置環境變數
打開環境變陣列態檔
vim /etc/profile
在底部加上下面的配置代碼
#set jdk environment
JAVA_HOME=/usr/local/jdk/jdk1.8.0_191
JRE_HOME=${JAVA_HOME}/jre
CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
PATH=${JAVA_HOME}/bin:$PATH
export JAVA_HOME CLASSPATH PATH
需要重新使得profile檔案生效
source /etc/profile
step-six: 查看是否安裝成功
java -version

mysql安裝
step-one: 卸載系統自帶mysql
卸載方法與上面卸載openjdk是類似的此處不再贅述,
step-two: 下載mysql
下載mysql也有版本分別,自從mysql 被oracle公司收購后,mysql就推出企業版,如8.0版本都有企業版和社區版之分,而mysql5.7以前的諸多版本都是社區版,但目前國內許多的中小型專案都用開源專案,因此無需擔心付費的問題:
官網下載地址: https://downloads.mysql.com/archives/community/

step-three:mysql準備作業
解壓mysql壓縮檔案
tar -zxvf mysql安裝包 -C /usr/local/
mv -f mysql安裝檔案夾 mysql
創建mysql用戶和用戶組
groupadd mysql
useradd mysql -g mysql
創建data檔案和my.cnf檔案
cd /usr/local/mysql
mkdir data
touch my.cnf
掛載mysql到mysql用戶和用戶組
cd /usr/local
chown -R mysql:mysql ./mysql
step-four: 撰寫組態檔
vim my.cnf
組態檔如下
[client] # 客戶端設定,即客戶端默認的連接引數
port = 7006 # 默認連接埠
socket = /usr/local/mysql/data/mysql.sock # 用于本地連接的socket套接字,mysqld守護行程生成了這個檔案
default-character-set=utf8mb4
[mysql]
socket=/usr/local/mysql/data/mysql.sock
# set mysql client default chararter
default-character-set=utf8mb4
[mysqld] # 服務端基本設定
# 基礎設定
#user = root
#server-id = 1 # Mysql服務的唯一編號 每個mysql服務Id需唯一
port = 7006 # MySQL監聽埠
basedir = /usr/local/mysql # MySQL安裝根目錄
datadir = /usr/local/mysql/data # MySQL資料檔案所在位置
tmpdir = /usr/local/mysql/tmp # 臨時目錄,比如load data infile會用到
socket = /usr/local/mysql/data/mysql.sock # 為MySQL客戶端程式和服務器之間的本地通訊指定一個套接字檔案
pid-file = /usr/local/mysql/data/localhost.pid # pid檔案所在目錄
skip_name_resolve = 1 # 只能用IP地址檢查客戶端的登錄,不用主機名
character-set-server = utf8mb4 # 資料庫默認字符集,主流字符集支持一些特殊表情符號(特殊表情符占用4個位元組)
transaction_isolation = READ-COMMITTED # 事務隔離級別,默認為可重復讀,MySQL默認可重復讀級別
collation-server = utf8mb4_general_ci # 資料庫字符集對應一些排序等規則,注意要和character-set-server對應
#init_connect='SET NAMES utf8mb4' # 設定client連接mysql時的字符集,防止亂碼
lower_case_table_names = 1 # 是否對sql陳述句大小寫敏感,1表示不敏感
max_connections = 400 # 最大連接數
max_connect_errors = 1000 # 最大錯誤連接數
explicit_defaults_for_timestamp = true # TIMESTAMP如果沒有顯示宣告NOT NULL,允許NULL值
max_allowed_packet = 128M # SQL資料包發送的大小,如果有BLOB物件建議修改成1G
interactive_timeout = 1880000 # MySQL連接閑置超過一定時間后(單位:秒)將會被強行關閉
wait_timeout = 1880000 # MySQL默認的wait_timeout值為8個小時, interactive_timeout引數需要同時配置才能生效
tmp_table_size = 16M # 內部記憶體臨時表的最大值 ,設定成128M;比如大資料量的group by ,order by時可能用到臨時表;超過了這個值將寫入磁盤,系統IO壓力增大
max_heap_table_size = 128M # 定義了用戶可以創建的記憶體表(memory table)的大小
query_cache_size = 0 # 禁用mysql的快取查詢結果集功能;后期根據業務情況測驗決定是否開啟;大部分情況下關閉下面兩項
query_cache_type = 0
## 設定sqlmode 默認情況下mysql5.7.5以上的板本都有sqlmode,而ONLY_FULL_GROUP_BY則是默認的 如果不配置則會出現select后面查詢的欄位沒有出現在group by中的錯誤
#nested exception is java.sql.SQLSyntaxErrorException: Expression #2 of SELECT list is not in GROUP BY clause and
# contains nonaggregated column 'wlhy_xysk.s.vehicle_license_no' which is not functionally dependent on columns in GROUP BY clause;
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
#Threads_created:創建過的執行緒數,
# 1G ---> 8
# 2G ---> 16
# 3G ---> 32
thread_cache_size = 8
# 用戶行程分配到的記憶體設定,每個session將會分配引數設定的記憶體大小
key_buffer_size = 256M #key_buffer_size指定索引緩沖區的大小,它決定索引處理的速度
read_buffer_size = 2M # MySQL讀入緩沖區大小,對表進行順序掃描的請求將分配一個讀入緩沖區,MySQL會為它分配一段記憶體緩沖區,
read_rnd_buffer_size = 8M # MySQL的隨機讀緩沖區大小
sort_buffer_size = 8M # MySQL執行排序使用的緩沖大小
binlog_cache_size = 1M # 一個事務,在沒有提交的時候,產生的日志,記錄到Cache中;等到事務提交需要提交的時候,則把日志持久化到磁盤,默認binlog_cache_size大小32K
back_log = 130 # 在MySQL暫時停止回應新請求之前的短時間內多少個請求可以被存在堆疊中;官方建議back_log = 50 + (max_connections / 5),封頂數為900
skip-external-locking #跳過外部鎖 如果是多型服務器希望打開external locking特征則直接注釋,如果是單臺服務器則直接打開即可
#skip-grant-tables
# 日志設定
log_error = /usr/local/mysql/data/logs/error.log # 資料庫錯誤日志檔案
slow_query_log = 1 # 慢查詢sql日志設定
long_query_time = 1 # 慢查詢時間;超過1秒則為慢查詢
slow_query_log_file = /usr/local/mysql/data/logs/slow_query.log # 慢查詢日志檔案
log_queries_not_using_indexes = 1 # 檢查未使用到索引的sql
log_throttle_queries_not_using_indexes = 5 # 用來表示每分鐘允許記錄到slow log的且未使用索引的SQL陳述句次數,該值默認為0,表示沒有限制
min_examined_row_limit = 100 # 檢索的行數必須達到此值才可被記為慢查詢,查詢檢查回傳少于該引數指定行的SQL不被記錄到慢查詢日志
expire_logs_days = 5 # MySQL binlog日志檔案保存的過期時間,過期后自動洗掉
# 主從復制設定
#skip_slave_start,這樣復制行程就不會隨著資料庫的啟動而啟動
#skip-slave-start
# 開啟mysql binlog功能
#log-bin = mysql-bin
# binlog記錄內容的方式,記錄被操作的每一行
#binlog_format = ROW
# 對于binlog_format = ROW模式時,減少記錄日志的內容,只記錄受影響的列
#binlog_row_image = minimal
# Innodb設定
innodb_open_files = 500 # 限制Innodb能打開的表的資料,如果庫里的表特別多的情況,請增加這個,這個值默認是300
innodb_buffer_pool_size = 64M # InnoDB使用一個緩沖池來保存索引和原始資料,一般設定物理存盤的60% ~ 70%;這里你設定越大,你在存取表里面資料時所需要的磁盤I/O越少
innodb_log_buffer_size = 2M # 此引數確定寫日志檔案所用的記憶體大小,以M為單位,緩沖區更大能提高性能,但意外的故障將會丟失資料,MySQL開發人員建議設定為1-8M之間
innodb_flush_method = O_DIRECT # O_DIRECT減少作業系統級別VFS的快取和Innodb本身的buffer快取之間的沖突
innodb_write_io_threads = 2 # CPU多核處理能力設定,根據讀,寫比例進行調整最好多少核的cpu配多少數
innodb_read_io_threads = 2
innodb_lock_wait_timeout = 120 # InnoDB事務在被回滾之前可以等待一個鎖定的超時秒數,InnoDB在它自己的鎖定表中自動檢測事務死鎖并且回滾事務,InnoDB用LOCK TABLES陳述句注意到鎖定設定,默認值是50秒
innodb_log_file_size = 32M # 此引數確定資料日志檔案的大小,更大的設定可以提高性能,但也會增加恢復故障資料庫所需的時間
為了確保不報錯,需要改變一些東西,原則上是創建完后就修改,掛載
chmod -R 755 my.cnf
step-five: 初始化mysql
./bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
step-sex:首次啟動mysql
./support-files/mysql.server start
如果中途中有沒有創建檔案夾或者檔案的錯誤
Starting MySQL.2021-10-24T14:55:12.749885Z mysqld_safe error: log-error set to '/usr/local/mysql/data/logs/error.log', however file don't exists. Create writable for user 'mysql'.
ERROR! The server quit without updating PID file (/usr/local/mysql/data/localhost.pid).
則直接創建檔案夾或者檔案
mkdir logs
touch ./logs/error.log
再次掛載`
chown -R mysql:mysql ./logs
chmod -R 755 ./logs
總之如果遭遇以下類似的問題
ERROR! The server quit without updating PID file (/usr/local/mysql/data/localhost.pid).
基本上大多數問題都是權限的問題,需要修改權限及掛載用戶組操作
還有一類問題是selinux導致,這類問題需要查看系統日志一般情況下執行下面命令基本上都能得到解決,
vim /etc/selinux/config
# 把SELINUX=enforcing改為SELINUX=disabled后存盤退出重啟機器
step-seven: 添加成開機啟動
cp support-files/mysql.server /etc/init.d/mysql
如執行了上面的命令也可以用以下命令開啟mysql 服務
./etc/init.d/mysqld start
添加到開機啟動
# 添加開機啟動
chkconfig mysql on
step-eight:配置環境變數
在profile中添加下面內容
vim /etc/profile
#將游標移動到最底,然后加入下面的內容
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin
重繪profile檔案
source profile
step-night:設定其他引數
臨時密碼首次登錄
mysql 首次登錄需要密碼,mysql 安裝后生成了臨時密碼,查看密碼需要執行下面的操作,
cat /root/.mysql_secret
#得到
NlT6a,hnWvkN
如果臨時密碼失效或者不想用臨時密碼,則需要修改my.cnf檔案,讓其跳過密碼授權,在mysqld中添放開下面的項,
skip-grant-tables
重啟mysql
配置密碼
use mysql
update mysql.user set authentication_string=password('root') where user='root';
flush privileges;
或者
set password=password("root");
flush privileges;
如果上述的陳述句執行報錯

則按照提示直接采用下面的陳述句
alter user 'root'@'localhost' identified by 'root';
修改my.cnf,注釋掉跳過密碼,如果這一步不做則可能在設定遠程連接時遇到報錯
#skip-grant-tables
修改密碼重啟mysql
service mysql restart
設定遠程連接使能
在Linux下為了安全,默認是不允許mysql本機以外的機器訪問mysql資料庫服務,因此需要重新授權root,
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
flush privileges;
或者
use mysql;
update user set host='%' where user='root';
flush privileges;
執行上述操作后重啟mysql,即mysql 安裝成功

注意事項
通常情況下按照上述步驟基本都能解決問題,但是諸事都有例外,當例外發生時我們需要學會觀看日志,如黑視窗給的資訊不全面,則需要我們去查看mysql的日志,在小猿安裝是就將日志設定在/usr/local/mysql/data/logs下,所有的錯誤日志都在其中有記錄,

錯誤日志都在error.log中有記錄,

依照上述解決辦法的模式,這種安裝mysql的方式就基本沒問題了,
專案部署思路
為了更加清晰明了的的理解整體專案的部署,小猿直接以圖的方式來展示整個專案的部署原理圖,

從上面圖中基本能清晰的得知整個專案的部署框架,我們要做的事情就是將每個環節的安裝和行管配置環境做好,
nginx安裝配置
依賴包及nginx下載
nginx安裝需要依賴以下幾個庫檔案,所以需要提前下載好給出依賴庫網址
依賴庫下載
https://www.openssl.org/source/
http://www.zlib.net/
https://ftp.pcre.org/pub/pcre/
nginx下載地址
http://nginx.org/download/
最好時庫的版本和nginx的版本匹配,否則會報錯,由于版本不匹配造成的錯誤一般都是要將版本匹配后再次安裝,下面小猿給出推薦版本:

上述的四個壓縮包都需要解壓
tar -zxvf pcre-8.44.tar.gz -C /usr/develop/nginxref/
tar -zxvf nginx-1.16.1.tar.gz -C /usr/local/nginxref/
tar -zxvf zlib-1.2.11.tar.gz -C /usr/local/nginxref/
tar -zxvf openssl-1.1.0c.tar.gz -C /usr/local/nginxref/
版本匹配后直接解壓完成后需要查看是否存在gcc 編譯器,若沒有則需要安裝,
gcc編譯器安裝
查看gcc及gcc++
#查看gcc版本
gcc --version
#查看gcc-c++版本
g++ --version
若沒有安裝gcc或者gcc++編譯器,則需要安裝相關編譯器
#安裝gcc
yum -y install gcc
#安裝gcc-c++
yum -y install gcc-c++
安裝pcre
cd /usr/local/nginxref/pcre-8.44
./configure&&make&&make install
安裝zlib
cd /usr/local/nginxref/zlib-1.2.11/
./configure&&make&&make install
安裝openssl
cd /usr/local/nginxref/openssl-1.1.0c/
./config&&make&&make install
nginx 安裝
cd /usr/local/nginxref/nginx-1.16.1/
開始編譯并安裝nginx
./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-pcre=/usr/local/nginxref/pcre-8.44 --with-zlib=/usr/local/nginxref/zlib-1.2.11 --with-openssl=/usr/local/nginxref/openssl-1.1.0c
直到一路安裝完成,安裝完成后,在配置的目錄中即可看到相關的執行檔案

nginx 啟動
啟動之前先修改權限
cd /usr/local
chmod -R 777 nginx/
開始啟動
cd /usr/local/nginx
./nginx -c ./nginx.conf
nginx 停止
./nginx -s stop
nginx 重啟
./nginx -s reload
nginx 注意事項
啟動報錯:如權限問題,用戶組問題,組態檔語法錯誤問題都可以查看對應的日志,
為了此目的,小猿故意制造錯誤,在error.log中可以詳細的展示出對應的錯誤項,根據報錯資訊直接更改即可,
vim ./logs/error.log

解決問題后就可以重新啟動,強調的是一定要看日志,
nginx檔案配置
根據專案需求,小猿的nginx配置如下:
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
upstream tomcat8_1 {
server localhost:9000 ;
}
upstream tomcat8_2 {
server localhost:9001 ;
}
upstream tomcat8_3 {
server localhost:9002 ;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /usr/local/tomcats/wlhy/wlhy-site;
index index.html index.htm;
}
#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;
# }
location ~ /vvise-js/{
root /usr/local/tomcats/wlhy/ ;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
server {
listen 80;
server_name pt.xywl.com;
add_header backendIP $upstream_addr;
add_header backendCode $upstream_status;
location /{
root html;
index index.html index.htm;
proxy_pass http://tomcat8_1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_http_version 1.1 ;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
client_max_body_size 100M;
client_body_buffer_size 128k;
client_body_in_file_only clean;
proxy_read_timeout 600;
proxy_send_timeout 600;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
#
}
server {
listen 80;
server_name fh.xywl.com;
add_header backendIP $upstream_addr;
add_header backendCode $upstream_status;
location /{
root html;
index index.html index.htm;
proxy_pass http://tomcat8_2;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_http_version 1.1 ;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
client_max_body_size 100M;
client_body_buffer_size 128k;
client_body_in_file_only clean;
proxy_read_timeout 600;
proxy_send_timeout 600;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 80;
server_name cy.xywl.com;
add_header backendIP $upstream_addr;
add_header backendCode $upstream_status;
location /{
root html;
index index.html index.htm;
proxy_pass http://tomcat8_3;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_http_version 1.1 ;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
client_max_body_size 100M;
client_body_buffer_size 128k;
client_body_in_file_only clean;
proxy_read_timeout 600;
proxy_send_timeout 600;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
# 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;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
組態檔配置成功后nginx的基本安裝和部署就完成了
tomcat配置及優化
tomcat常見部署方式
war包部署
war包部署比較方便,這得益于tomcat在啟動時會自動去掃描webapps各種專案包并自動執行解壓并將專案加載入tomcat容器,從而只要訪問對應的專案名就可直接訪問專案,若果想了解更多,則可查看tomcat啟動程序的相關文章,
組態檔部署
組態檔部署稍微麻煩一些,但是這種部署方式的好處在于專案檔案可進行集中管理,部署方法

tomcat 在啟動時會自動掃描上述檔案夾及檔案,如有xml代碼會自動掃描,并依據xml腳本加載專案檔案,xml組態檔如下:
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/wlhy-platform" docBase="/usr/local/tomcats/wlhy/wlhy-platform" debug="0" reloadable="true" privileged="false" sessionCookieName="wlhy_8_1" >
</Context>
tomcat 檔案配置
眾所周知tomcat 的主要組態檔是server.xml,該檔案屬于tomcat的核心組態檔,需要我們做深入的了解,
,兩個重要的埠都需要修改
server埠修改
<Server port="8005" shutdown="SHUTDOWN">
...
...
</Server>
connector 埠修改
<Connector executor="tomcatThreadPool"
port="9000"/>
tomcat 優化
connector優化
<Connector executor="tomcatThreadPool"
port="9000"
protocol="HTTP/1.1"
maxThreads="500"
minSpareThreads="40"
maxSpareThreads="500"
minProcessors="40"
maxProcessors="500"
redirectPort="8443"
URIEncoding="UTF-8"
connectionTimeout="20000"
enableLookups="false"
disableUploadTimeout="false"
connectionUploadTimeout="15000"
acceptCount="300"
keepAliveTimeout="12000"
maxKeepAliveRequests="1"
compression="on"
compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,image/gif,image/jpg,image/png" />
引數基本含義
tomcatThreadPool 執行器(執行緒池)起一個名字
maxThreads 客戶請求最大執行緒數
minSpareThreads Tomcat初始化時創建的 socket 執行緒數
maxSpareThreads Tomcat連接器的最大空閑 socket 執行緒數
enableLookups 若設為true, 則支持域名決議,可把 ip 地址決議為主機名
redirectPort 在需要基于安全通道的場合,把客戶請求轉發到基于SSL 的 redirectPort 埠
acceptAccount 監聽埠佇列最大數,滿了之后客戶請求會被拒絕(不能小于maxSpareThreads )
connectionTimeout 連接超時定義建立客戶連接超時的時間. 如果為 -1, 表示不限制建立客戶連接的時間
minProcessors 服務器創建時的最小處理執行緒數
maxProcessors 服務器同時最大處理執行緒數
URIEncoding URL統一編碼
compression 打開壓縮功能
compressionMinSize 啟用壓縮的輸出內容大小,這里面默認為2KB
compressableMimeType 壓縮型別
命令優化
常見虛擬機配置命令含義
-Xmx1024m:設定JVM最大可用記憶體為1024M
-Xms1024m: 初始堆記憶體大小,此值可以設定與-Xmx相同,以避免每次垃圾回收完成后JVM重新分配記憶體,
-Xmn800m:設定年輕代大小為800M整個JVM記憶體大小=年輕代大小 + 年老代大小 + 持久代大小
-Xss1m: jdk堆疊大小
-XX:MetaspaceSize 首次觸發GC記憶體閾值,Meta區容量范圍為[20.8m, MaxMetaspaceSize),建議設定與MaxMetaspaceSize一致避免頻繁GC
XX:MaxMetaspaceSize 最大GC記憶體觸發值
在windows系統下需要優化catalina.sh,在linux系統下需要優化catalina.bat
優化catalina.sh
JAVA_OPTS="-server -XX:PermSize=256M -XX:MaxPermSize=512m -Xms1024m -Xmx1024m"

圖形優化
在linux環境中,由于對圖形處理如果出現例外,驗證碼無法正常顯示,

需要在catalina.sh中追加以下內容
JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true"

startup.sh 和 shutdown.sh 優化
在 startup.sh 和 shutdown.sh 的最后追加下面的內容,指定tomcat運行的jdk環境,適用于一個系統有多個jdk存在的情況,
export JDK8=/usr/local/jdk/jdk1.8.0_191
export JAVA_HOME=${JDK8}
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

其他幾個tomcat按照配置方法和優化思路逐步照做即可,
警告處理
小猿在關閉tomcat的程序中遇到入戲警告,大概意思是說jdk1.8已經不支持PermSize MaxPermSize的設定操作,因此需要重新設定

修改catalina.sh 中的優化配置
JAVA_OPTS="-server -Xmx1024m -Xss1m -Xms1024m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m"

處理效果

結果處理完美
部署結果
服務啟動情況
server1

server2

首頁

platform


carrier

customer

至此所有的部署作業和筆記作業圓滿完成,期望讀者們能從小猿的文章中有所識訓,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/337663.html
標籤:其他
上一篇:helm入門
