day12-tomcatサービス--- 2つ(作業モード、複数のインスタンス、高負荷の障害ケースなど)

https://www.cnblogs.com/f-ck-need-u/p/8120008.html#1-web-「LongShuaiのTomcat」

1. Tomcatの動作モード(bio、bio、apr)

動作モードの変更もチューニングの一部です。ここでは、Jmeterのビューから調整されたパラメーター(スループットなど)を一致させることができます。
ここに画像の説明を挿入

ここに画像の説明を挿入
現在使用されているモードはhttp://192.168.26.138:8080/manager/statusで確認できます。
ここに画像の説明を挿入
起動が完了した後、catalina.outログの最後でどのモードが使用されているかも確認できます。
ここに画像の説明を挿入

1.1 server.xmlを変更して、作業モードを変更します(作成予定)

8.5バージョンのデフォルトのnioモード

protocol="HTTP/1.1"

ここに画像の説明を挿入

nio2モードに調整し、プロトコルの値を変更します

ここに画像の説明を挿入

 <Connector port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol"
               connectionTimeout="20000"
               redirectPort="8443" />

ここに画像の説明を挿入
ここに画像の説明を挿入

4月モードに調整

#安装apr环境 。   注意centos8没有tomcat-native源,需要编译安装
yum -y install apr apr-devel tomcat-native
<Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"
               connectionTimeout="20000"
               redirectPort="8443" />

ここに画像の説明を挿入

2つ、Tomcatの複数のインスタンス

同じサーバーで複数のtomcatを実行するための実装プロセスは、次のとおりです。

tar -xf apache-tomcat-8.5.63.tar.gz
cp -r apache-tomcat-8.5.63/ tomcat_8081
cp -r apache-tomcat-8.5.63 tomcat_8082

sed -i.bak 's#8080#8081#g' tomcat_8081/conf/server.xml
sed -i.bak 's#8005#8006#g' tomcat_8081/conf/server.xml
sed -i.bak 's#8009#8010#g' tomcat_8081/conf/server.xml

sed -i.bak 's#8080#8082#g' tomcat_8082/conf/server.xml
sed -i.bak 's#8005#8007#g' tomcat_8082/conf/server.xml
sed -i.bak 's#8009#8011#g' tomcat_8082/conf/server.xml

mv tomcat_808* /application/

ここに画像の説明を挿入

#分别启动另外两个实例8081和8082:
/application/tomcat_8081/bin/startup.sh
/application/tomcat_8082/bin/startup.sh
ss -naltp | grep java

ここに画像の説明を挿入

echo "tomcat_8081" > /application/tomcat_8081/webapps/ROOT/index.jsp
echo "tomcat_8082 ..." > /application/tomcat_8082/webapps/ROOT/index.jsp

ここに画像の説明を挿入
3つのトムキャット:
ここに画像の説明を挿入

3. Tomcat障害の場合-高負荷(*)

最初のバージョン:
ここに画像の説明を挿入

3.1 vmstatは、CPUまたはディスクによって引き起こされた高負荷を検出します

左側のprocsの下にあるrとbを見てください。
r数値が大きいほど、システムのCPU使用率が高くなります
。b数値が大きいほど、ディスクIOが高くなります。

[root@lvs1-138 conf]# vmstat 1 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0   1024 330348     20 803316    0    0     1     6   62   63  0  1 99  0  0
 0  0   1024 330308     20 803316    0    0     0     0  272  292  0  1 99  0  0
 0  0   1024 330168     20 803316    0    0     0     0  248  280  0  1 99  0  0
 0  0   1024 329920     20 803316    0    0     0     0  260  270  0  1 99  0  0
 0  0   1024 330084     20 803316    0    0     0     0  284  269  0  2 98  0  0

3.2 ps aux、htopは、pidが引き起こしたプロセスを具体的に確認します

3.3 iotopは、各プロセスのioステータスpidを表示します

iotop -o  #只显示在进行读写的进程

3.4jpsはtop-pと協力してJavaプロセスを監視します

ここに画像の説明を挿入
ここに画像の説明を挿入
pstree -p:
130923はプロセスであり、後ろの山はスレッドです
ここに画像の説明を挿入

jps -lvm
pstree -p
#这个pid是java进程的pid
top -p 130923   # 只有进程显示  -p指定pid , -H 显示进程对应线程的信息
top -Hp 130923  #进程 线程都显示  ,然后看具体是那个线程出了问题,占用CPU啥的

ここに画像の説明を挿入

3.5問題のスレッドIDを16進数に変換します。

130923はプロセスです。130924はスレッドです。

echo 'obase=16;130924' | bc
1FF6C

3.6 jstackjavaプロセスID

Jstack javaプロセスIDは、Javaスレッドの16進IDをフィルタリングし、開発と通信します
ここに画像の説明を挿入

 jstack 130923 | grep -i 1FF6C -A 10

ここに画像の説明を挿入

分割線=上記は最初の4つのステップであり、以下は5 67ステップです。
ここに画像の説明を挿入

3.7 jmap(java jvm情報を表示)

jmap(java jvm情報を表示)jmap -heap javaプロセスIDは、jvmのメモリ使用量を表示します

与jvm相关的 jmap 导出或显示jvm信息
显示:显示jvm使用情况一共多少 ,使用多少,剩余多少。
导出: jvm内存信息数据等等导出到磁盘
jmap -dump 导出jvm内存内容
#jmap -heap javaPid
jps -lvm
#java jvm使用率,后面用来做自定义监控
jmap -heap 130923

ここに画像の説明を挿入
上の図は、主に使用率67%、使用率17%、

3.8JVMメモリコンテンツのエクスポート

# jmap 导出jvm内存的内容
jmap -dump:format=b,file=/root/tmpFile/tomcat.bin 130923
然后将其下载到window,使用java mat进行分析

ここに画像の説明を挿入

3.8 Javaマット(使い慣れた)R&D支援による分析

https://www.cnblogs.com/liuchuanfeng/p/8484641.html「メモリアナライザツール(MAT)を使用したJavaプロジェクトのメモリリークの分析」
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
END

第4に、tomcatがドメイン名を構成した後、ドメイン名へのアクセスは正常です。ipaccess404

Tomcatのserver.xmlの属性を変更しました。
ホストファイルが解析されました:192.168.26.138 blog.jpress.org
現在の問題は、ドメイン名アクセスが正常であり、IPアクセスが404であるということです。最初は、ローカルホストの場合、アクセスにIPを使用するのが普通です。
ここに画像の説明を挿入
ここに画像の説明を挿入

解答:想再用ip,就再添加一个<Host name>值为ip的站点
<Host name="blog.jpress.org"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

</Host>

<Host name="192.168.26.138"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

</Host>

ここに画像の説明を挿入

5、Tomcat監視機能(省略)

ここに画像の説明を挿入

jps -lvm

https://blog.csdn.net/daiming573/article/details/106813931/「show-busy-java-threads
スクリプトの内容と使用プロセス」
ここに画像の説明を挿入

pstree -p
pstree -a

5.1 Tomcatの監視(約113行を書き込むだけ)

(バージョン8.5でエラーの報告を開始する場合は、次の内容を1行で記述するか、\記号を使用して分割する必要があります)
ここに画像の説明を挿入

jmxremote  tomcat远程监控 有一个固定端口+2个随机端口

ここに画像の説明を挿入

5.2 jconsole (略)

5.3 jvisualVM(略)

そしてjmap、jstack

6.ストレステスト(省略形)

6.1 Jmeter(省略)

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/Nightwish5/article/details/114062315