1. 程式人生 > >web應用緩慢故障分析

web應用緩慢故障分析

在這以後裡分享一篇關於web應用緩慢的分析過程,感覺挺有用的。

友在一家購物網站做運維不久,今日打電話說前臺頁面開啟比較慢訂單無法正常投遞,但是檢視CPU使用率較低沒什麼壓力,只是記憶體稍高86%左右,磁碟讀寫也很正常,諮詢我怎麼進行解決。我問了他一些基本的系統架構問題,知道是F5做的負載均衡分發到前端10臺應用伺服器上,中介軟體是JBOSS,後端資料庫是ORACLE.整理了下思路,決定讓朋友進行如下分析:

一、登陸前端應用伺服器,首先檢視統計ip連線數 [[email protected] ~]$ 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的情況 [
[email protected]
~]$ 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    ............................................................... ............................................................... ............................................................... [
[email protected]
~]$ 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#
[email protected]
</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應用緩慢故障分析

在這以後裡分享一篇關於web應用緩慢的分析過程,感覺挺有用的。 原文出處:http://xjsunjie.blog.51cto.com/999372/751585 友在一家購物網站做運維不久,今日打電話說前臺頁面開啟比較慢訂單無法正常投遞,但是檢視CPU使用率較低沒什麼壓力,只是記憶體稍高86%左右,磁碟

web應用緩慢故障分析

在這以後裡分享一篇關於web應用緩慢的分析過程,感覺挺有用的。 友在一家購物網站做運維不久,今日打電話說前臺頁面開啟比較慢訂單無法正常投遞,但是檢視CPU使用率較低沒什麼壓力,只是記憶體稍高86%左右,磁碟讀寫也很正常,諮詢我怎麼進行解決。我問了他一些基本的系統架

awk之Linux Web伺服器網站故障分析常用命令總結

系統連線狀態篇 1.檢視TCP連線狀態 netstat -na |awk '/^tcp/ {print $6}'|sort|uniq -c|sort -rn netstat -an|awk '/^tcp/{++s[$NF]}END{for(a in s)print a,s[a]}

手工檢測Web應用指紋(分析網站技巧)

http://www.freebuf.com/news/137497.html?utm_source=tuicool&utm_medium=referral 0×01 Web 應用技術概覽 1.1 架構 大多數 web 應用可以粗略劃分為三個元件(com

MVC模式在Java Web應用程序中的實例分析

rip run writer fault esp 身份驗證 int 網站 table 結合六個基本質量屬性 可用性: 異常 可修改性: 1.維持語義的一致性,高內聚低耦合 2.維持現有的接口,Login依賴LoginIService接口,LoginService依賴ILog

Web API應用架構設計分析(2)

最好 factor 狀態 是否 沒有 dot sel nal std Web API應用架構設計分析(2) 在上篇隨筆《Web API應用架構設計分析(1)》,我對Web API的各種應用架構進行了概括性的分析和設計,Web API 是一種應用接口框架,它能夠構建HTT

Web API應用架構設計分析(1)

人員管理 門面 guid orm 和平 ide 額外 簡化 響應 Web API應用架構設計分析(1) Web API 是一種應用接口框架,它能夠構建HTTP服務以支撐更廣泛的客戶端(包括瀏覽器,手機和平板電腦等移動設備)的框架, ASP.NET Web API 是一種

Linux Web服務器網站故障分析常用的命令

linux awk 流量分析 系統連接狀態篇:1.查看TCP連接狀態netstat -nat |awk ‘{print $6}’|sort|uniq -c|sort -rnuniq 用於報告或忽略文件中的重復行uniq -c: 在每列旁邊顯示該行重復出現的次數;通過對文件中重復出現的字符進行統計接

當前流行的J2EE WEB應用架構分析

自己 html 自身 ole 方案 應用開發 target wid gif 1. 架構概述 J2EE體系包括java server pages(JSP) ,java SERVLET, enterprise bean,WEB service等技術。這些技術的出現給電子商務時代

J2EE WEB應用架構分析(二)

高可用 XML 控制 之間 財務 環境 優缺點 基於 list 優缺點 優點: 一些開發商開始采用並推廣這個框架 作為開源項目,有很多先進的實現思想 對大型的應用支持的較好 有集中的網頁導航定義 缺點: 不是業屆標準 對開發工具的支持不夠 復雜的taglib,需要比較長的時

當前流行的J2EE WEB應用架構分析(一)

贊助商 html form 技術資料 tex 1.3 資料 估計 情況 覆蓋 架構概述 J2EE體系包括java server pages(JSP) ,java SERVLET, enterprise bean,WEB service等技術。這些技術的出現給電子商務時代的

Springboot使用Jsp模板檢視開發web應用(含問題分析

最近有個springcloud專案,所有服務返回的資訊是json字串,現在需要對專案進行改造,使用jsp頁面返回服務呼叫結果。開發工具為Idea。 先來看一下專案結構(只展示涉及到的部分,如果你的專案中沒有對應資料夾,需要新建資料夾): ├── src │ ├── main │

客戶端網路切換導致應用退回登陸前介面 的故障分析與解決方案

故障現象: 使用者使用手機銀行客戶端登入,客戶端處於登入狀態,由WiFi網路切換為手機4G網路,導致手機銀行直接退回到登入前狀態,伺服器日誌顯示該使用者在登入期間出現兩個不同地點的IP。 故障分析: 網路架構如圖所示,當省內某使用者使用聯通WiFi登入手機銀行後,F5將請求轉發到

【軟考】——軟體工程基礎知識(Web應用系統分析與設計)

WebApp的特性 WebApp屬性???——》網路密集性、併發性、無法預知的負載量、效能、可用性、資料驅動; web應用系統分析的模型型別???——》 內容模型???——》給出由Web應

Springboot使用Jsp模板檢視開發web應用以及遇見的問題分析

最近有個springcloud專案,所有服務返回的資訊是json字串,現在需要對專案進行改造,使用jsp頁面返回服務呼叫結果。開發工具為Idea。 先來看一下專案結構(只展示涉及到的部分,如果你的專案中沒有對應資料夾,需要新建資料夾): ├── src │

通過混合程式設計分析的方法和機器學習預測Web應用程式的漏洞

通過混合程式設計分析的方法和機器學習預測Web應用程式的漏洞 由於時間和資源的限制,web軟體工程師需要支援識別出有漏洞的程式碼。一個實用的方法用來預測漏洞程式碼可以提高他們安全審計的工作效率。在這篇文章中,作者提出使用混合(靜態和動態)程式碼屬性來識別輸入驗證和輸入檢查的程式碼模式以用來標識web應用

使用Azure Functions 在web 應用中啟用自動更新(一)分析基於輪詢的 Web 應用的限制

1,引言 上一篇介紹了使用使用 Visual Studio 開發 "Azure Functions" 函式,此篇介紹 “Azure Functions” 的測試以及直接從 Vistual Studio 在 Azure 上的部署 ”Azure Functions“應用。 接著上一篇,本篇介紹在 “Azure F

MVC模式在Java Web應用程序中的實例

simple handler hand resolv let handle 增加 獨立 efault 1.可用性 使用SimpleMappingExceptionResolver實現異常處理 只需要在Spring的配置文件applicationContext.xml中增加

[Java.web]Web應用結構

webapps htm div web web.xml web-inf clas jar css 以Web應用放在 Tomcat\webapps\ 目錄下為例 day01 目錄 | |------------- html、jsp、css、js 文件等 |-

ThreadPoolExecutor的應用和實現分析(中)—— 任務處理相關源碼分析

stateless 自身 tran als row exce 繼承 break attribute 轉自:http://www.tuicool.com/articles/rmqYjq 前面一篇文章從Executors中的工廠方法入手,已經對ThreadPoolExecuto