自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一次Zookeeper bug排查之旅 論程序員曾遇到關(guān)于性能的那些事

開發(fā) 前端
某一天突然有同事說zk client連不上server,考慮到最近業(yè)務(wù)代碼沒有變更,懷疑是運(yùn)維同學(xué)做了什么操作導(dǎo)致,急忙聯(lián)系運(yùn)維同學(xué),確實(shí)最近做了變更。為了避免擴(kuò)大影響范圍,先讓運(yùn)維同學(xué)回滾了變更,回滾后可以正常訪問了。

[[389119]]

起因

某一天突然有同事說zk client連不上server,考慮到最近業(yè)務(wù)代碼沒有變更,懷疑是運(yùn)維同學(xué)做了什么操作導(dǎo)致,急忙聯(lián)系運(yùn)維同學(xué),確實(shí)最近做了變更。為了避免擴(kuò)大影響范圍,先讓運(yùn)維同學(xué)回滾了變更,回滾后可以正常訪問了。

復(fù)現(xiàn)問題

詢問運(yùn)維同學(xué)后,得到變更流程:由于zk集群有一臺服務(wù)器存在性能隱患,需要變更到新的一個(gè)實(shí)例。于是運(yùn)維先將新機(jī)器加入zk集群,修改舊服務(wù)器上配置逐個(gè)重啟,重啟后新zk的角色是leader,此時(shí)zk狀態(tài)正常,運(yùn)維同學(xué)也就認(rèn)為變更完成。

結(jié)果意想不到的是使用mntr命令查看,所有的機(jī)器狀態(tài)都是正常,但是zk client無法訪問,一訪問就卡住,問題可以在測試環(huán)境穩(wěn)定復(fù)現(xiàn)。

問題排查

1 猜測zk端口沒有監(jiān)聽成功,登錄服務(wù)器使用netstat查看server打開的三個(gè)端口都是正常狀態(tài),也使用了telnet測試可以連上。

2 猜測同步節(jié)點(diǎn)數(shù)不足一半,或者follower連不上leader觸發(fā)重新選舉,但很快就被排除,因?yàn)樯厦嬲f了使用mntr命令查看節(jié)點(diǎn)狀態(tài)都正常,從日志中也未能找到對應(yīng)日志記錄。

3 我們再使用stat來觀察server的連接情況,運(yùn)行zk client發(fā)現(xiàn)server收到了client的請求,但是沒有回消息,看來原因就是zk server沒處理client的請求了。

跟蹤到這里,就應(yīng)該進(jìn)入源碼了,由于對zk源碼不熟悉,咨詢了某位大佬,建議我們看zk請求處理類CommitProcessor。

在CommitProcessor我們發(fā)現(xiàn)了原因,代碼如下:

  1. <code>@Override 
  2. public void start() { 
  3.     ... 
  4.     if (workerPool == null) { 
  5.         workerPool = new WorkerService("CommitProcWork", numWorkerThreads, true); 
  6.     } 
  7.     ... 
  8.  
  9. public void shutdown() { 
  10.     LOG.info("Shutting down"); 
  11.  
  12.     halt(); 
  13.  
  14.     if (workerPool != null) { 
  15.         workerPool.join(workerShutdownTimeoutMS); 
  16.     } 
  17.  
  18.     if (nextProcessor != null) { 
  19.         nextProcessor.shutdown(); 
  20.     } 
  21. </code><button>復(fù)制</button> 

在shutdown中調(diào)用了 workerPool.join實(shí)際上已經(jīng)將請求處理的開關(guān)關(guān)閉了,但是并沒有將workerPool設(shè)置為null。在start方法中會根據(jù)workerPool==null來創(chuàng)建WorkerService并開始處理請求。

修改后重新驗(yàn)證解決。

 

責(zé)任編輯:張燕妮 來源: PerfMa應(yīng)用性能技術(shù)社區(qū)
相關(guān)推薦

2015-08-19 09:10:37

程序員面試

2019-05-29 08:04:44

Zookeeper遷移擴(kuò)展

2025-03-17 10:01:07

2016-02-26 15:25:45

程序員Bug反應(yīng)

2020-11-02 09:48:35

C++泄漏代碼

2015-04-09 13:52:47

程序員在家辦公

2011-03-22 10:49:53

2013-07-17 18:00:02

程序員禁忌程序員錯(cuò)誤程序員bug

2018-01-30 09:19:46

程序員技能Bug

2019-09-12 17:09:52

程序員跳槽那些事兒編程語言

2012-10-19 09:27:23

Ruby

2023-01-20 11:51:40

性能測試系統(tǒng)

2017-01-23 12:40:45

設(shè)計(jì)演講報(bào)表數(shù)據(jù)

2024-03-18 00:00:05

Java服務(wù)JVM

2020-02-28 15:49:26

2015-11-04 11:38:40

bug程序員

2013-04-15 10:55:09

程序員

2019-09-15 19:17:02

性能測試

2018-07-03 10:49:22

性能故障排查

2021-05-31 10:08:44

工具腳本主機(jī)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號