溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么進行web應用緩慢故障分析

發布時間:2021-12-30 16:31:28 來源:億速云 閱讀:160 作者:柒染 欄目:云計算

本篇文章為大家展示了怎么進行web應用緩慢故障分析,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

   朋友在一家購物網站做運維不久,今日打電話說前臺頁面打開比較慢訂單無法正常投遞,但是查看CPU使用率較低沒什么壓力,只是內存稍高86%左右,磁盤讀寫也很正常,咨詢我怎么進行解決。我問了他一些基本的系統架構問題,知道是F5做的負載均衡分發到前端10臺應用服務器上,中間件是JBOSS,后端數據庫是ORACLE.整理了下思路,決定讓朋友進行如下分析:

一、登陸前端應用服務器,首先查看統計ip連接數

[user@local ~]$ netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

      1 

      1 Address

      1 servers)

      2 172.16.100.35

      2 172.16.100.38

      2 172.16.100.45

      4 127.0.0.1

     10 172.16.100.18

     20 172.16.100.8

   2048 172.16.100.98 #在服務器和負載均衡間有2048個連接

查看JBOSS應用端口8080的情況

[user@local ~]$ netstat -ntu |grep 8080

tcp        0      0 172.16.100.26:8080     172.16.100.98:19593           TIME_WAIT   

tcp        0      0 172.16.100.26:8080     172.16.100.98:16777           TIME_WAIT   

tcp        0      0 172.16.100.26:8080     172.16.100.98:11913           TIME_WAIT   

tcp        0      0 172.16.100.26:8080     172.16.100.98:1929            TIME_WAIT   

tcp        0      0 172.16.100.26:8080     172.16.100.98:53641           TIME_WAIT   

tcp        0      0 172.16.100.26:8080     172.16.100.98:43401           TIME_WAIT   

tcp        0      0 172.16.100.26:8080     172.16.100.98:36233           TIME_WAIT   

tcp        0      0 172.16.100.26:8080     172.16.100.98:28040           TIME_WAIT   

tcp        0      0 172.16.100.26:8080     172.16.100.98:5000            TIME_WAIT   

...............................................................

...............................................................

...............................................................

[user@local ~]$ netstat -ntu |grep 8080|grep TIME_WAIT |wc  -l

2003

通過以上內容顯示,在前端應用服務器和負載均衡間產生了大量TCP等待,這正是消耗內存并把前臺應用拖慢的主要原因。由負載均衡分發到應用服務器的大量請求可能由于JBOSS的處理瓶頸產生了等待,實際處理的請求遠小于分發過來的請求。

二、查看JBOSS連接數設置

一般中間件jboss連接后端的oracle,在deploy下會有個文件oracle-ds.xml,我們看一下它連接數據庫的代碼:

<local-tx-datasource>

    <jndi-name>jdbc/TETD</jndi-name>

    <connection-url>jdbc:oracle:thin:@172.16.100.18:1521:orcl</connection-url>

    <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>

    <user-name>TETD_QT</user-name>

    <password>Hpoui&bmn$m#e$m_n20uytwe@iil</password>

        <min-pool-size>20</min-pool-size>

        <max-pool-size>50</max-pool-size>

    <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name> 

 注意:<min-pool-size>的值設的是20,<max-pool-size>設的值是50

三、查看ORACLE連接數設置

SQL>select count(*) from v$process --當前的連接數

顯示為45

SQL>select value from v$parameter where name = 'processes' --數據庫允許的最大連接數

顯示為600

(注:當數據庫最大連接數不夠時會出現客戶端連接間歇性失敗,報錯ORA-12519)

通過以上數據分析,在ORACLE端顯示的連接數并沒有體現出應有的壓力,那么瓶頸在哪?應該是JBOSS上,JBOSS的連接池參數設置的太小,導致前端的請求卡在JBOSS處而不能正常通過JBOSS連接到后端ORACLE,從而導致前臺應用緩慢訂單不正常。

分析完畢后,告訴朋友增大JBOSS連接池參數,把<min-pool-size>調整為200,</min-pool-size>調整為500.后來朋友調整了JBOSS連接池參數后,問題得到了顯著緩解,內存使用率也降下來了。

這一事例告訴我們,一個水管中間最細處往往決定了通過的水流量,我們在優化后端ORACLE數據庫的同時也別忘了優化中間件的參數。

補充1、修改ORACLE最大連接數:

#修改oracle最大連接數:

alter system set processes = 1000  scope = spfile;

重啟數據庫:

shutdown immediate;

startup;

補充2、修改/etc/sysctl.conf文件
net.ipv4.tcp_max_tw_buckets = 3000
表示系統同時保持TIME_WAIT套接字的最大數量,如果超過這個數字,TIME_WAIT套接字將立刻被清除并打印警告信息。默認為180000,改為 3000。此項參數可以控制TIME_WAIT套接字的最大數量,避免服務器被大量的TIME_WAIT套接字拖死。  

上述內容就是怎么進行web應用緩慢故障分析,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

web
AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女