企業級應用TOMCAT

来源:http://www.cnblogs.com/bananaaa/archive/2017/11/27/7904915.html
-Advertisement-
Play Games

第1章 Tomcat 1.1 Tomcat簡介 Tomcat是一個免開放源代碼的Web應用伺服器,屬於輕量級應用伺服器,在中小型系統和併發訪問用戶不多的場合下被普遍使用,是開發調試JSP程式的首選,另外它還是Servlet和JSP容器,獨立的Servlet容器是Tomcat的預設模式 其類似Ngin ...


第1章 Tomcat

1.1 Tomcat簡介

Tomcat是一個免開放源代碼的Web應用伺服器,屬於輕量級應用伺服器,在中小型系統和併發訪問用戶不多的場合下被普遍使用,是開發調試JSP程式的首選,另外它還是Servlet和JSP容器,獨立的Servlet容器是Tomcat的預設模式

其類似Nginx、Apache(httpd)、lighttpd等Web伺服器

nginx和http只能處理html等靜態文件(jpg),配合php就能夠處理動態的網頁(以.php結尾);

tomcat也能夠處理靜態的html文件,配合hdk能夠處理動態網頁(以.jsp結尾)

但Tomcat處理靜態HTML的能力不如Nginx/Apache

1.2 軟體版本選擇

JDK下載:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

Tomcat下載:http://tomcat.apache.org/

說明:在生產環境下,使用Tomcat安裝版本需同開發協商,Tomcat和JDK版本需並行(tomcat8<=>jdk8)

 

第2章 Tomcat安裝

2.1 安裝JDK(⭐以後所有涉及到java應用的都需要安裝)

JDK->JAVA虛擬機(jvm)->一處編譯,處處使用

1 tar xf jdk-8u60-linux-x64.tar.gz -C /application/
2 ln -s /application/jdk1.8.0_60 /application/jdk   #其他版本同理->只需修改版本號,安裝方法相同
3 
4 sed -i.ori '$a export JAVA_HOME=/application/jdk\nexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH\nexport CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar' /etc/profile
5 
6 source /etc/profile
7 java -version

2.2 安裝Tomcat

1 tar xf apache-tomcat-8.0.27.tar.gz -C /application/
2 ln -s /application/apache-tomcat-8.0.27 /application/tomcat
3 echo 'export TOMCAT_HOME=/application/tomcat'>>/etc/profile
4 source /etc/profile
5 chown -R root.root /application/jdk/ /application/tomcat/

出現下述結果即表示部署成功

 1 [root@web03 ~]# /application/tomcat/bin/version.sh   #查看tomcat軟體有關信息
 2 Using CATALINA_BASE:   /application/tomcat
 3 Using CATALINA_HOME:   /application/tomcat
 4 Using CATALINA_TMPDIR: /application/tomcat/temp
 5 Using JRE_HOME:        /application/jdk
 6 Using CLASSPATH:       /application/tomcat/bin/bootstrap.jar:/application/tomcat/bin/tomcat-juli.jar
 7 Server version: Apache Tomcat/8.0.27
 8 Server built:   Sep 28 2015 08:17:25 UTC
 9 Server number:  8.0.27.0
10 OS Name:        Linux
11 OS Version:     3.10.0-693.el7.x86_64
12 Architecture:   amd64
13 JVM Version:    1.8.0_60-b27
14 JVM Vendor:     Oracle Corporation

2.2.1 Tomcat目錄結構

 1 [root@web03 tools]# cd  /application/tomcat/
 2 
 3 [root@web03 tomcat]# tree -L 1
 4 .
 5 ├── bin   #用以啟動/關閉Tomcat或者其它功能的腳
 6 │   ├── catalina.sh   #核心
 7 │   ├── shutdown.sh   #關閉tomcat服務
 8 │   ├── startup.sh   #啟動tomcat服務
 9 ├── conf   #用以配置Tomcat的XML文件
10 │   ├── server.xml   #主配置文件
11 │   ├── tomcat-users.xml   #管理用戶的配置文件
12 ├── lib 
13 ├── LICENSE
14 ├── logs   #Web應用程式的日誌文件
15 │   ├── catalina.out***
16 ├── NOTICE
17 ├── RELEASE-NOTES
18 ├── RUNNING.txt
19 ├── temp   #臨時目錄
20 ├── webapps   #Web網頁應用程式根目錄->站點目錄
21 └── work

2.2.2 webapps站點目錄

1 [root@web03 tomcat]# cd webapps/
2 [root@web03 webapps]# ll
3 total 20
4 drwxr-xr-x 14 root root 4096 Oct  5 12:09 docs         #tomcat幫助文檔
5 drwxr-xr-x  6 root root 4096 Oct  5 12:09 examples     #web應用實例
6 drwxr-xr-x  5 root root 4096 Oct  5 12:09 host-manager  #管理
7 drwxr-xr-x  5 root root 4096 Oct  5 12:09 manager      #管理
8 drwxr-xr-x  3 root root 4096 Oct  5 12:09 ROOT       #預設網站根目錄

2.3 啟動/關閉Tomcat

 1 /application/tomcat/bin/startup.sh 2 /application/tomcat/bin/shutdown.sh 

註意:未啟動時關閉會報一堆錯誤

1 [root@web03 ~]# netstat -lntup|grep java   #凡跟java有關的程式均需查看java埠
2 tcp6       0      0 :::8080                 :::*                    LISTEN      1464/java
3 tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      1464/java
4 tcp6       0      0 :::8009                 :::*                    LISTEN      1464/java

2.3.1 訪問web網站測試

http://10.0.0.17:8080/   #tomcat預設埠8080

2.4 查看日誌信息

1 cd /application/tomcat/logs/
2 ll   # catalina.out->實時記錄tomcat的運行信息(文件越來越大需要定時清空>)
3 
4 [root@web03 logs]# tailf catalina.out   #查看日誌信息
5 24-Nov-2017 09:47:45.098 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 1296 ms

 

第3章 Tomcat在CentOS7啟動慢

3.1 現象

在CentOS7啟動Tomcat時,啟動過程很慢需要幾分鐘,經過查看日誌發現耗時在這裡:是session引起的隨機數問題導致的。Tocmat的Session ID是通過SHA1演算法計算得到的,計算Session ID的時候必須有一個密鑰,為了提高安全性Tomcat在啟動的時候會通過隨機生成一個密鑰

3.1.1 實例

1 22-Apr-2017 19:33:07.623 INFO [localhost-startStop-1] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [55,507] milliseconds.
2 
3 22-Apr-2017 19:33:07.653 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /application/apache-tomcat-8.0.27/webapps/ROOT has finished in 55,935 ms

3.2 主要原因

生成隨機數的時候卡住了,導致tomcat無法啟動

為了加速/dev/random提供隨機數的速度,你可以通過操作設備的外設,讓其產生大量的中斷(如網路傳輸數據,按鍵,移動滑鼠,在命令行敲幾個不同的命令,俗稱聚氣)

cat /dev/random &>/dev/null會消耗能量

3.3 解決方法

方法01

 1 vim $JAVA_HOME/jre/lib/security/java.security 2 securerandom.source=file:/dev/urandom 

方法02

1 vim $TOMCAT_HOME/bin/catalina.sh
2 if [[ "$JAVA_OPTS" != *-Djava.security.egd=* ]]; then
3     JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/urandom"
4 fi

#這個系統屬性egd表示熵收集守護進程(entropy gathering daemon)

方法03(推薦)

 1 yum install -y rng-tools #安裝rngd服務(熵服務,增大熵池) 2 systemctl start rngd.service #此服務建議開機自啟 3 systemctl status rngd.service 

03.1設置開機自啟

 1 cat >>/etc/rc.d/rc.local<<EOF 2 systemctl start rngd.service 3 /application/tomcat/bin/startup.sh 4 EOF 

註意:在虛擬機內,AMD CPU不支持第三種方法

 

第4章 通過web管理Tomcat

測試功能,生產環境禁用!

4.1 定義web頁面用戶名及密碼

 1 sed -i.ori '$i <role rolename="manager-gui"/>\n<role rolename="admin-gui"/>\n<user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>' /application/tomcat/conf/tomcat-users.xml 

1 [root@web03 ~]# tail -4 /application/tomcat/conf/tomcat-users.xml
2 <role rolename="manager-gui"/>
3 <role rolename="admin-gui"/>
4 <user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>
5 </tomcat-users>   #註意:是在此行前加入上面三行

4.2 重啟tomcat服務

 1 /application/tomcat/bin/shutdown.sh 2 /application/tomcat/bin/startup.sh 

4.3 Tomcat主配置文件/application/tomcat/conf/server.xml

語法

註釋:以<!--開頭,並以-->結尾,中間包含的都是註釋,即段註釋

4.3.1 server.xml組件類別

頂級組件:位於整個配置的頂層,如server

容器類組件:可以包含其它組件的組件,如service、engine、host、context

連接器組件:連接用戶請求至tomcat,如connector

被嵌套類組件:位於一個容器當中,不能包含其他組件,如Valve、logger

 1 <server>
 2      <service>
 3      <connector />
 4      <engine>
 5      <host>
 6      <context></context>
 7      </host>
 8      <host>
 9      <context></context>
10      </host>
11      </engine>
12      </service>
13 </server>

4.3.2 組件詳解

  • engine:核心容器組件,catalina引擎,負責通過connector接收用戶請求,並處理請求,將請求轉至對應的虛擬主機host。
  • host:類似於httpd中的虛擬主機,一般而言支持基於FQDN的虛擬主機。
  • context:定義一個應用程式,是一個最內層的容器類組件(不能再嵌套)。配置context的主要目的指定對應對的webapp的根目錄,類似於httpd的alias,其還能為webapp指定額外的屬性,如部署方式等。
  • connector:接收用戶請求,類似於httpd的listen配置監聽埠的。
  • service(服務):將connector關聯至engine,因此一個service內部可以有多個connector,但只能有一個引擎engine。service內部有兩個connector,一個engine。因此,一般情況下一個server內部只有一個service,一個service內部只有一個engine,但一個service內部可以有多個connector。
  • server:表示一個運行於JVM中的tomcat實例。
  • Valve:閥門,攔截請求併在將其轉至對應的webapp前進行某種處理操作,可以用於任何容器中,比如記錄日誌(access log valve)、基於IP做訪問控制(remote address filter valve)。
  • logger:日誌記錄器,用於記錄組件內部的狀態信息,可以用於除context外的任何容器中。
  • realm:可以用於任意容器類的組件中,關聯一個用戶認證庫,實現認證和授權。可以關聯的認證庫有兩種:UserDatabaseRealm、MemoryRealm和JDBCRealm。
  • UserDatabaseRealm:使用JNDI自定義的用戶認證庫。
  • MemoryRealm:認證信息定義在tomcat-users.xml中。
  • JDBCRealm:認證信息定義在資料庫中,並通過JDBC連接至資料庫中查找認證用戶。

4.3.3 配置文件詳述

 1 <?xml version='1.0' encoding='utf-8'?>
 2 <!--
 3 <Server>元素代表整個容器,是Tomcat實例的頂層元素.由org.apache.catalina.Server介面來定義.它包含一個<Service>元素.並且它不能做為任何元素的子元素.
 4     port指定Tomcat監聽shutdown命令埠.終止伺服器運行時,必須在Tomcat伺服器所在的機器上發出shutdown命令.該屬性是必須的.
 5     shutdown指定終止Tomcat伺服器運行時,發給Tomcat伺服器的shutdown監聽埠的字元串.該屬性必須設置
 6 -->
 7 <Server port="8005" shutdown="SHUTDOWN">
 8   <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
 9   <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
10   <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
11   <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
12   <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
13   <GlobalNamingResources>
14     <Resource name="UserDatabase" auth="Container"
15               type="org.apache.catalina.UserDatabase"
16               description="User database that can be updated and saved"
17               factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
18               pathname="conf/tomcat-users.xml" />
19   </GlobalNamingResources>
20   <!--service服務組件-->
21   <Service name="Catalina">
22     <!--
23     connector:接收用戶請求,類似於httpd的listen配置監聽埠.
24         port指定伺服器端要創建的埠號,併在這個埠監聽來自客戶端的請求。
25         address:指定連接器監聽的地址,預設為所有地址(即0.0.0.026         protocol連接器使用的協議,支持HTTP和AJP。AJP(Apache Jserv Protocol)專用於tomcat與apache建立通信的, 在httpd反向代理用戶請求至tomcat時使用(可見Nginx反向代理時不可用AJP協議)。
27         minProcessors伺服器啟動時創建的處理請求的線程數
28         maxProcessors最大可以創建的處理請求的線程數
29         enableLookups如果為true,則可以通過調用request.getRemoteHost()進行DNS查詢來得到遠程客戶端的實際主機名,若為false則不進行DNS查詢,而是返回其ip地址
30         redirectPort指定伺服器正在處理http請求時收到了一個SSL傳輸請求後重定向的埠號
31         acceptCount指定當所有可以使用的處理請求的線程數都被使用時,可以放到處理隊列中的請求數,超過這個數的請求將不予處理
32         connectionTimeout指定超時的時間數(以毫秒為單位)
33     -->
34     <Connector port="8080" protocol="HTTP/1.1"
35                connectionTimeout="20000"
36                redirectPort="8443" />
37     <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
38     <!--engine,核心容器組件,catalina引擎,負責通過connector接收用戶請求,並處理請求,將請求轉至對應的虛擬主機host
39         defaultHost指定預設的處理請求的主機名,它至少與其中的一個host元素的name屬性值是一樣的
40     -->
41     <Engine name="Catalina" defaultHost="localhost">
42       <!--Realm表示存放用戶名,密碼及role的資料庫-->
43       <Realm className="org.apache.catalina.realm.LockOutRealm">
44         <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
45                resourceName="UserDatabase"/>
46       </Realm>
47       <!--
48       host表示一個虛擬主機
49         name指定主機名
50         appBase應用程式基本目錄,即存放應用程式的目錄.一般為appBase="webapps" ,相對於CATALINA_HOME而言的,也可以寫絕對路徑。
51         unpackWARs如果為true,則tomcat會自動將WAR文件解壓,否則不解壓,直接從WAR文件中運行應用程式
52         autoDeploy:在tomcat啟動時,是否自動部署。
53         xmlValidation:是否啟動xml的校驗功能,一般xmlValidation="false"54         xmlNamespaceAware:檢測名稱空間,一般xmlNamespaceAware="false"55       -->
56       <Host name="localhost"  appBase="webapps"
57             unpackWARs="true" autoDeploy="true">
58         <!--
59         Context表示一個web應用程式,通常為WAR文件
60             docBase應用程式的路徑或者是WAR文件存放的路徑,也可以使用相對路徑,起始路徑為此Context所屬Host中appBase定義的路徑。
61             path表示此web應用程式的url的首碼,這樣請求的url為http://localhost:8080/path/****
62             reloadable這個屬性非常重要,如果為true,則tomcat會自動檢測應用程式的/WEB-INF/lib 和/WEB-INF/classes目錄的變化,自動裝載新的應用程式,可以在不重啟tomcat的情況下改變應用程式
63         -->
64         <Context path="" docBase="" debug=""/>
65         <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
66                prefix="localhost_access_log" suffix=".txt"
67                pattern="%h %l %u %t &quot;%r&quot; %s %b" />
68       </Host>
69     </Engine>
70   </Service>
71 </Server>

4.3.2.1  關於8005埠的註釋

 <Server port="8005" shutdown="SHUTDOWN"> 

提示:echo SHUTDOWN|nc 127.0.0.1 8005  #直接關閉所有tomcat相關軟體

註意:現版本上本機的任意用戶均可操作,但老版本tomcat只要連接本機即可發消息->危險

且不建議註釋此功能,會影響系統操作並導致所有shutdown命令無法使用,只能使用kill/pkill關閉

建議方法為:修改埠號8005為其他任意隨機埠,暗號亦可隨機修改==>增加安全性(視情況而定)

4.4 WEB站點部署(代碼上線)

代碼上線有兩種方式

方法一:即直接將程式目錄放在webapps目錄下;

方法二:即用開發工具將程式打包成war包,然後上傳到webapps目錄下

4.4.1 使用war包部署web站點

 1 [root@web03 ~]# cd /application/tomcat/webapps/ 2 rz #上傳memtest.war 3 [root@web03 webapps]# ll 

瀏覽器訪問http://10.0.0.17:8080/memtest/meminfo.jsp即可

4.4.2 自定義預設網站目錄

 前地址http://10.0.0.17:8080/memtest/meminfo.jsp 現地址http://10.0.0.17:8080/meminfo.jsp 

方法1.將jsp文件或其他程式放在tomcat/webapps/ROOT目錄下即可。因為預設網站根目錄為tomcat/webapps/ROOT

方法2.修改主配置文件

1 cp /application/tomcat/conf/server.xml{,.ori}
2 
3 vim /application/tomcat/conf/server.xml +125
4 <Context path="" docBase="/application/tomcat/webapps/memtest" debug="0" reloadable="false" crossContext="true"/>
5 <Context path="/40team" docBase="/application/tomcat/webapps/memtest" debug="0" reloadable="false" crossContext="true"/>

重啟服務

 1 /application/tomcat/bin/shutdown.sh 2 /application/tomcat/bin/startup.sh 

測試

http://10.0.0.17:8080/meminfo.jsp

http://10.0.0.17:8080/40team/meminfo.jsp

 

4.5 搭建Jpress->java版本的wordpress

4.5.1 準備環境

jpress官網:http://jpress.io

下載地址:https://github.com/JpressProjects/jpres

4.5.2 安裝配置資料庫

 1 yum -y install mariadb-server 2 systemctl start mariadb.service 

1 mysql
2 create database jpress DEFAULT CHARACTER SET utf8;
3 grant all on jpress.* to jpress@'localhost' identified by '123456';
4 exit

4.5.3 jpress站點上線

 1 cd /application/tomcat/webapps 2 上傳jpress-web-newest.war 

4.5.4 web界面操作

http://10.0.0.17:8080/jpress-web-newest/

http://10.0.0.17:8080/jpress-web-newest/admin   #後臺

4.5.5 重啟服務

 1 /application/tomcat/bin/shutdown.sh 2 /application/tomcat/bin/startup.sh 

 

 

第5章 Tomcat多實例及反向代理

5.1 多實例部署

多虛擬主機:nginx,多個server標簽(功能變數名稱,ip,埠) 進程數量固定master+worker

多實例(多進程):tomcat,同一個進程啟動多次,分為兩種情況

註意:tomcat會儘可能使用我們的系統資源但會造成資源侵占(適用於資源多的情況)

5.1.1 複製Tomcat目錄

1 cd /application/tools/
2 tar xf apache-tomcat-8.0.27.tar.gz
3 
4 cp -a apache-tomcat-8.0.27 tomcat8_1
5 cp -a apache-tomcat-8.0.27 tomcat8_2   #視系統資源而定

5.1.2 修改配置文件

1 sed -i 's#8005#8011#;s#8080#8081#' tomcat8_1/conf/server.xml
2 sed -i 's#8005#8012#;s#8080#8082#' tomcat8_2/conf/server.xml

5.1.3 修改存放目錄並啟動

1 cp -a tomcat8_1 tomcat8_2 /application/
2 for i in {1..2};do /application/tomcat8_$i/bin/startup.sh;done
3 netstat -lntup |grep java

5.1.4 web網頁測試

http://10.0.0.17:8081/

http://10.0.0.17:8082/

5.2 反向代理服務配置

說明:在配置反向代理時,無需在意後端是什麼服務,只需支持HTTP協議且知道其IP地址即可

5.2.1 lb01伺服器端配置(centos6) 

 1 mv /application/nginx/conf/nginx.conf{,.ori} 2 egrep -v '#|^$' /application/nginx/conf/nginx.conf.default >/application/nginx/conf/nginx.conf 

5.2.2 修改nginx的配置文件

 1 [root@lb01 ~]# vim /application/nginx/conf/nginx.conf
 2 worker_processes  1;
 3 events {
 4     worker_connections  1024;
 5 }
 6 http {
 7     include       mime.types;
 8     default_type  application/octet-stream;
 9     sendfile        on;
10     keepalive_timeout  65;
11  upstream web_pools {
12         server 10.0.0.17:8081;
13         server 10.0.0.17:8082;
14     }
15     server {
16         listen       80;
17         server_name  localhost;
18         location / {
19              root   html;
20              index  index.jsp index.html index.htm;
21              proxy_pass http://web_pools;
22         }
23         error_page   500 502 503 504  /50x.html;
24         location = /50x.html {
25             root   html;
26         }
27     }
28 }

5.2.3 重啟nginx服務並測試

 1 /application/nginx/sbin/nginx -s stop 2 /application/nginx/sbin/nginx 

1 [root@lb01 ~]# curl -s 10.0.0.5|tail -1
2 8081
3 [root@lb01 ~]# curl -s 10.0.0.5|tail -1
4 8082

 

第6章 Tomcat監控

6.1 tomcat遠程監控

6.1.1  修改配置文件

1 vim /application/tomcat8_1/bin/catalina.sh +97
2 
3 CATALINA_OPTS="$CATALINA OPTS   #置於所有執行程式之前
4 -Dcom.sun.management.jmxremote        #開啟遠程監控命令的參數
5 -Dcom.sun.management.jmxremote.port=12345        #指定埠號為12345
6 -Dcom.sun.management.jmxremote.authenticate=false   #指定認證方式即無需認證
7 -Dcom.sun.management.jmxremote.ssl=false          #無需加密連接
8 -Djava.rmi.server.hostname=10.0.0.17"               #配置本機主機IP

6.1.2  解析主機名(必須步驟,否則報錯)

 1 echo "10.0.0.17 web03" >>/etc/hosts 

6.1.3  重啟服務

 1 /application/tomcat8_1/bin/shutdown.sh 2 /application/tomcat8_1/bin/startup.sh 

6.2 zabbix監控tomcat(前提:java能夠被遠程監控)

6.2.1 安裝zabbix-java-gateway(java程式),也需要jdk(openjdk)

 1 yum install -y zabbix-java-gateway 

註意:zabbix server預設未開啟java監控功能,由於監控tomcat非必須的,故需另配server開啟功能

6.2.2 配置zabbix server(m01端)

1 sed -i -e '220a JavaGateway=127.0.0.1' -e '236a StartJavaPollers=5' /etc/zabbix/zabbix_server.conf
2 egrep -n '^J|^St' /etc/zabbix/zabbix_server.conf

6.2.3 啟動所有服務

 1 systemctl start zabbix-java-gateway.service 2 systemctl restart zabbix-server.service 

6.2.4 web界面監控

01.添加新主機

 

02.關聯模板

 

03.驗證結果

變綠即為配置正確

6.3排除tomcat故障步驟

a. 查看catalina.out

b. 使用sh show-busy-java-threads.sh腳本進行檢測

 

第七章 Tomcat性能優化

tomcat性能取決於 記憶體大小

上策:優化代碼

中策:jvm優化機制 垃圾回收機制 把不需要的記憶體回收

          優化jvm--優化垃圾回收策略

優化catalina.sh配置文件,在catalina.sh配置文件中添加以下代碼

1 JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms800m -Xmx800m -XX:NewSize=400m -XX:MaxNewSize=400m -XX:PermSize=400m -XX:MaxPermSize=400m"   #tomcat分配1G記憶體模板
2 
3 su -c '/home/tomcat/tomcat8_1/bin/shutdown.sh' tomcat   #重啟服務
4 su -c '/home/tomcat/tomcat8_1/bin/startup.sh' tomcat

下策:加足夠大的記憶體

下下策:每天0點定時重啟tomcat


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 局部變數:函數內部聲明的變數,只在函數內部有效。 全部變數:在函數外部聲明的變數,全局都有效,直到程式執行完畢。 全局變數負作用: 1.降低函數的獨立性 2.降低函數的通用性,不利於函數的重覆調用。 3.降低程式的清晰度,每個函數執行有可能改變全局值,無法清晰判斷全局變數的值。 4.全局變數永久占用 ...
  • 操作系統自帶的截圖工具無法保存問題,出現這種原因一般是對電腦的操作進行不當刪除所致,一般來說很容易解決。 雙擊我的電腦,打開資源管理器。 在左側找到庫,選中並右擊,點擊還原預設庫(R)。 進入win7安裝盤下的“用戶目錄”文件夾。 新建文件夾,命名為 “我的圖片”。 修複完成,打開截圖工具,嘗試保存... ...
  • 1.menu(space key)2.space (08307009 U) 按鍵2次)->(EXT)3.BLUE(按鍵4次)->PAL4.enter5.0校準(0對準CAL(按住探頭)出現數字後按校準鍵 校準後探頭返回原位置)6.選擇通道上鍵 ...
  • 本文以SSH為例進行PAM配置來實現相應的認證功能,其它的登錄方式配置相似,詳情可參考文章《PAM - 可插拔認證模塊》。 1、限制用戶的登錄(SSH) (1)使用pam_access自定義限制規則 //新增pam_access模塊認證 [root@iZwz9catu2mrq92b07d1d0Z ~ ...
  • 1、為什麼要使用PAM 為了讓用戶更合理地使用系統,應用程式或服務(如sshd、login、su、password、ftp等)不可避免地需要對用戶進行安全認證,若按照各自的規則去配置非常耗費時間和精力且不能重用。 而PAM提供了統一的API,使應用程式的訪問控制變得簡單方便。 2、介紹 官網:htt ...
  • 1.yum添加epel源 vim /etc/redis.conf 找到redis.conf 並修改 daemonize no(第128行) 為 daemonize yes :set number(顯示行號) . 4.開啟客戶端要確保服務端啟動 redis-server /etc/redis.conf ...
  • 有誰跟我一樣是Linux的初學者麽,接下來的時間學習Linux,希望找到個一同學習的,互相監督,共同進步!!!!!! ...
  • 這幾天在準備網路安裝linux操作系統。最後決定用pxe + kickstart 的方式完成。原理、方案弄完了之後,開始搭建,結果被DHCP給擋住了。這不就得研究研究最簡單最實用的DHCP使用方法。 * 紅色的是必須有 * 綠色的是要註意 * 藍色的是包安裝時,要有的程式包 1. DHCP的實現 2 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...