看板 MIS 關於我們 聯絡資訊
[硬體資訊] Host: Windows Server 2012 R2 Guest OS: Windows Server 2012 R2 10core/24GB [軟or韌體版本資訊] IIS 8.5 開啟DFS 防毒軟體使用ESET 已做過machine.config調整可連線數及減少TIME_WAIT等相關設定 已做過Regedit調整參數,參考網址如下 https://www.filehold.com/help/technical/Windows-Server-Tuning-to-Prevent-TCPIP -Port-Exhaustion 縮網址:https://reurl.cc/Qp03b9 [狀況描述] 前端採用HAProxy做負載平衡 後端串2個VM處理服務 每台VM上有一百多個AppPool在運作 CPU使用量大概在30%~50%左右(開工作管理員切到效能分頁查看) RAM使用量經常性在80%以上(開工作管理員切到效能分頁查看) 從HAProxy Log上可以看到以下狀況 https://imgur.com/QraRriT 會出現504回應是因為HAProxy設定30秒無回應就往Client拋回504 [已嘗試過的方法] 從Event Log看不到當下有哪些錯誤 硬體無異常(皆為HP主機或San Storage) 以上,感謝各位觀看 已經找不到方法了才上來討教 感謝各位先進的協助,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.231.148.79 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/MIS/M.1581773603.A.184.html ※ 編輯: qpowjohn (36.231.148.79 臺灣), 02/15/2020 21:35:11
asdfghjklasd: 你只看log ,實際做了什麼 TS ?02/15 22:16
asdfghjklasd: telnet 有 504 的 80 port?02/15 22:17
dennisxkimo: 看來是壓力測試API運作haproxy環境遇到問題上來問02/15 22:48
qpowjohn: 先是看到Port用盡,所以做了註冊表和config調整02/15 22:49
qpowjohn: 改了之後確實沒有了,但是卻會不定時從HAProxy看到問題02/15 22:50
qpowjohn: 然後RDP進不去,從hypervisior也進不去(已關加強模式)02/15 22:51
qpowjohn: 只能從hypervisior強制關閉重開VM..02/15 22:51
qpowjohn: 正常的回應速度大概都是100ms以內,超過30000ms很不正常02/15 22:53
qpowjohn: 而且已經排除AppPool回收的階段02/15 22:54
qpowjohn: 站台本身每分鐘都在打,所以也排除超時未使用被回收02/15 22:54
qpowjohn: 以上回答算是測試嗎...?02/15 22:55
dennisxkimo: 沒記錯的話 那log是這樣看,事件504返回長度19402/15 22:56
qpowjohn: telnet這段沒做過,因為都是不定時卡住,抓不準時間02/15 22:56
dennisxkimo: apppool 進階設定預設值 好像不適合高量頻繁02/15 22:59
qpowjohn: HAProxy應該是沒有問題的,提出圖片只是證明說MS卡住02/15 23:00
qpowjohn: 哦,求解,我們的服務確實是每天會被打百萬次...02/15 23:00
qpowjohn: 如果是加VM上去做LB的方式也是可行,只是我感覺不是這02/15 23:02
qpowjohn: 層面的問題...覺得好像是系統哪邊沒設定好02/15 23:03
xxoo1122: 你POST什麼資料?02/16 00:52
xxoo1122: 有DB嗎?02/16 00:52
ddoll288: 你給的資料玩全無法除錯,只知道504,504誰造成的不知02/16 02:14
目前能推斷是VM的問題,因為另一個VM正常接受request,代表HAProxy沒問題,我們的比重 是設定1:1,給的圖僅將504取出,所以HAProxy這端是無異常的
ddoll288: 如果你不敢透漏太多就自己請寫程式的RD或廠商來處理02/16 02:15
ddoll288: 機器預設可以開5000port是沒有問題的,問題是程式壞了02/16 02:17
ddoll288: 導致5000port被request塞爆,如果有保密問題就花錢吧02/16 02:18
5000port按照網頁的說法不是已經擴大到65534了嗎?
darktasi: server配置資訊不夠怎麼判斷02/16 03:32
asdfghjklasd: 不忍噓02/16 04:28
dennisxkimo: 這問題有時侯不是只有一面要看 但是不會用這麼少的線02/16 08:27
dennisxkimo: 索來找02/16 08:27
qpowjohn: 不好意思,讓各位有點隔空抓藥的感覺,因為抓不準系統02/16 09:25
qpowjohn: 卡住的時間,然後正常的時候進去看netstat也沒啥問題(02/16 09:25
qpowjohn: 大概300-400左右的連線),其實給的圖都是一樣的資訊,02/16 09:25
qpowjohn: 只能證明說那個時間點request打進去完全無法回應。02/16 09:25
qpowjohn: server配置,是指型號嗎?HP DL460c G802/16 09:27
※ 編輯: qpowjohn (49.216.40.155 臺灣), 02/16/2020 09:38:10
konkonchou: 我會查web handler是不是用到不該用的,而造成排隊 02/16 23:23
ddoll288: 既然是VM的問題,那應該是請寫AP的RD或廠商來處理 02/17 04:17
ddoll288: 你不給AP是什麼,就要大家隔空抓藥,也是了不起 02/17 04:18
ddoll288: req超過30s通常是資源鎖定或程式壞了等timeout 02/17 04:23
感謝您的幫助,目前的狀況在UAT環境驗不出來,上正式機才出現,UAT和PROD的差異僅僅是 AppPool數量級的差異(2 vs 100),所以我才在想是哪邊沒有設定好,又或者是要分散資 源,多建立一套VM來承載過多的網站。 另外請教各位,我們MIS的工作僅僅是將OS以前的工作搞定嗎?之後出問題都是站台的問題 不干我的事? 上面協助回答的各位先進都傾向直接找RD解決,可是如果連RD都測不出來,難道直接花點數 找微軟? ※ 編輯: qpowjohn (101.11.0.7 臺灣), 02/17/2020 08:33:31
ddoll288: 如果你當過RD或是DevOp,沒有CD/CI,這種事情根本是日常 02/17 10:27
ddoll288: 很多RD開發環境都很亂,然後issue丟來都說我跑沒問題 02/17 10:28
ddoll288: 然後MIS只能吃悶虧,抓出問題還好,沒抓到就是每天狗幹 02/17 10:29
ddoll288: 最可憐的是user,因為系統有問題每天哎哎哎,加班做不完 02/17 10:31
ddoll288: 所以要先保留現場,確認網路硬體作業系統都正常 02/17 10:33
ddoll288: 最好兩台VM在同一台主機內,把問題縮限在VM內,然後再叫 02/17 10:34
ddoll288: RD或廠商來解決問題02/17 10:34
ddoll288: 這問題我猜是程式的並行寫得不好,造成DB lock,然後大家 02/17 10:37
ddoll288: 就在等那個lock解鎖,所以就拼命timeout,這也是日常02/17 10:38
ddoll288: 你可以試試看先不要用haproxy,把req都塞到一台去跑 02/17 10:39
ddoll288: 隔一段時間沒問題再換另一台,我猜應該是都沒有問題02/17 10:40
ddoll288: 確認問題出在並行,再把問題交給RD或廠商處理02/17 10:41
ddoll288: 有些driver如果連線沒有正常關閉,DB lock是永不釋放的 02/17 10:45
ddoll288: RD只在哪邊跑個幾次,沒有壓測,根本測不出問題的 02/17 10:46
dennisxkimo: 有些RD只懂RD,有時我是問他的程式工作內容,對方願意 02/17 12:56
dennisxkimo: 就一起解問題 02/17 12:56
dennisxkimo: 你說不定時卡住,你可以想辦法追蹤各種數據多收集一 02/17 13:01
dennisxkimo: 點線索,有時候掛掉前的資料也是破案關鍵 02/17 13:01
太感謝以上先進了,提供另一個思維,我會按照以上方式進行單機測試,確認問題是出在哪 一端 ※ 編輯: qpowjohn (101.11.0.7 臺灣), 02/17/2020 18:49:07
domototice: proxy 30秒無回應 通常會是什麼造成? 太多要求? 02/19 14:24
domototice: 有proxy伺服器嗎? 02/19 14:24
domototice: 會是proxy負載過重嗎? 對不起 我的功力不足。。。。 02/19 14:30
domototice: proxytSR port用盡 如何處理呢? VM可接受的連接數? 02/19 14:36
domototice: port用盡 可以修改port使用數再度使用新增的port嗎? 02/19 14:45
domototice: 求解答謝謝...! 02/19 14:45
domototice: proxy伺服器 可以再多一台嗎? 兩台下去配置??? 02/19 14:46
domototice: 你給的資訊是 server2003的port處理方式說。。。。 02/19 14:52
domototice: 而且 server2012 怎麼可以說是硬體呢? 是運行環境說 02/19 14:53
domototice: 可以請教你的HAproxy 怎麼跟WINSR DFS怎麼做結合嗎? 02/19 14:57
domototice: IIS8.5的最大連接數呢? 方便請教嗎? qpowjohn大大 02/19 15:01
domototice: 可以再請教HAproxy可以在winserver2012上運行嗎? 02/19 15:05
domototice: http://oset.mcu.edu.tw/2009/paper/09.pdf 02/19 15:08
domototice: HAProxy可在WIN上運行 那它的最大連接數呢? 02/19 15:11
domototice: https://kknews.cc/zh-tw/news/92qe3o5.html 02/19 15:18
domototice: 所以問題不是在於HAProxy 就是在於兩個VM配置問題囉? 02/19 15:24
domototice: 另一個VM能正常接受HAProxy的連入嗎? 02/19 15:26
domototice: HAProxy有釋放資源嗎? 還是阻擋連入數 你只設30秒外丟 02/19 15:28
domototice: 回應回去 02/19 15:28
domototice: 求最後的解答哦~感謝大大....! 02/19 15:45
qpowjohn: haproxy用linux架,504是server經過30秒無回應就拋給cl 02/19 17:14
qpowjohn: ient,發生狀況的當下是一台server正常另一台無回應, 02/19 17:14
qpowjohn: 其實就是個很普通的做法 02/19 17:14
domototice: qpowjohn大大 那你兩台sever的proxy 都設HAProxy位址? 02/19 21:23
domototice: 其實不簡單說,尤其對我這個新手來說...!謝謝你的分享 02/19 21:23
qpowjohn: 兩台vm的gateway都是指到haproxy 02/20 18:49
domototice: 那...可以請教問題出在哪嗎= =+ 對不起...! 02/21 04:34
domototice: https://reurl.cc/31d5Vj 02/21 04:48
domototice: 是這樣子沒錯嘛?? 02/21 04:48
domototice: 對不起,gateway跟proxy的設定用途我有點忘記了= =+ 02/21 05:02
domototice: gateway不是路由器的端點嗎?也是出口?跟proxy要分開 02/21 05:43
domototice: 設定嗎? 02/21 05:43