HiveServer2連接ZooKeeper出現(xiàn)Too many connections問題的解決

HiveServer2連接ZooKeeper出現(xiàn)Too many connections問題的解決

作者:大圓那些事| 文章可以轉(zhuǎn)載埂材,請以超鏈接形式標(biāo)明文章原始出處和作者信息

網(wǎng)址:http://www.cnblogs.com/panfeng412/archive/2013/03/23/hiveserver2-too-many-zookeeper-connections-issues.html

HiveServer2支持多客戶端的并發(fā)訪問蚓炬,使用ZooKeeper來管理Hive表的讀寫鎖。實際環(huán)境中惊搏,遇到了HiveServer2連接ZooKeeper出現(xiàn)Too many connections的問題,這里是對這一問題的排查和解決過程九妈。

問題描述

HiveServer2服務(wù)無法執(zhí)行hive命令飒房,日志中提示如下錯誤:

2013-03-2212:54:43,946WARN? zookeeper.ClientCnxn (ClientCnxn.java:run(1089)) - Session0x0forserver hostname/***.***.***.***:2181, unexpected error, closing socket connection and attempting reconnect

java.io.IOException: Connection reset by peer

? ? ? ? at sun.nio.ch.FileDispatcher.read0(Native Method)

? ? ? ? at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:21)

? ? ? ? at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:233)

? ? ? ? at sun.nio.ch.IOUtil.read(IOUtil.java:200)

? ? ? ? at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:236)

? ? ? ? at org.apache.zookeeper.ClientCnxnSocketNIO.doIO(ClientCnxnSocketNIO.java:68)

? ? ? ? at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:355)

? ? ? ? at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1068)

問題排查

1. 首先,根據(jù)HiveServer2的錯誤日志葱轩,提示是由于Connection reset by peer睦焕,即連接被ZooKeeper拒絕。

2. 進(jìn)一步查看HiveServer2上所配置的ZooKeeper集群日志(用戶Hive表的讀寫鎖管理)靴拱,發(fā)現(xiàn)如下錯誤信息:

2013-03-2212:52:48,938[myid:] - WARN? [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxnFactory@193] - Too many connections from /***.***.***.***- max is50

3. 結(jié)合HiveServer2的日志垃喊,可見是由于HiveServer2所在機(jī)器對ZooKeeper的連接數(shù)超過了ZooKeeper設(shè)置允許的單個client最大連接數(shù)(這里是50)。

4. 我們進(jìn)一步確認(rèn)了是不是完全都是HiveServer2占用了這50個連接袜炕,顯示確實是HiveServer2進(jìn)程內(nèi)部占用了這50個連接(進(jìn)程號26871即為HiveServer2進(jìn)程):

[user@hostname ~]$sudonetstat -nap? |grep2181tcp? ? 00***.***.***.***:58089***.***.***.***:2181ESTABLISHED26871/java? ? ? ? ?

tcp? ? 00***.***.***.***:57837***.***.***.***:2181ESTABLISHED26871/java? ? ? ? ?

tcp? ? 00***.***.***.***:57853***.***.***.***:2181ESTABLISHED26871/java? ? ? ?

……

(共計50個)

5. 為什么HiveServer2會占用這么多連接本谜?而實際并發(fā)請求量并沒有這么多。只能從HiveServer2的實現(xiàn)原理找找線索偎窘,由于HiveServer2是通過Thrift實現(xiàn)的乌助,懷疑是不是其內(nèi)部維護(hù)連接池導(dǎo)致的?經(jīng)過查看hive-default.xml中發(fā)現(xiàn)陌知,其中默認(rèn)配置了工作線程數(shù)(這里猜測每個工作線程會維護(hù)一個與ZooKeeper的連接他托,有待從代碼級別進(jìn)行驗證):

hive.server2.thrift.min.worker.threads5Minimum number of Thrift worker threadshive.server2.thrift.max.worker.threads100Maximum number of Thrift worker threads

問題解決

方法一:

通過在hive-site.xml中修改HiveServer2的Thrift工作線程數(shù),減少與ZooKeeper的連接請求數(shù)仆葡。這樣可能降低HiveServer2的并發(fā)處理能力赏参。

方法二:

通過修改ZooKeeper的zoo.cfg文件中的maxClientCnxns選項,調(diào)大對于單個Client的連接數(shù)限制。

以上兩個方法登刺,需要根據(jù)自己的實際生產(chǎn)情況進(jìn)行合理設(shè)置。

相關(guān)的配置選項:

1)hive-site.xml中:

hive.server2.thrift.min.worker.threads10Minimum number of Thrift worker threadshive.server2.thrift.max.worker.threads200Maximum number of Thrift worker threadshive.zookeeper.session.timeout60000Zookeeper client's session timeout. The client is disconnected, and as a result, all locks released, if a heartbeat is not sent in the timeout.

2)zoo.cfg中:

# Limits the number of concurrent connections (at the socket level) that a single client, identified by IP address

maxClientCnxns=200# The minimum session timeout in milliseconds that the server will allow the client to negotiate

minSessionTimeout=1000# The maximum session timeout in milliseconds that the server will allow the client to negotiate

maxSessionTimeout=60000

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末嗡呼,一起剝皮案震驚了整個濱河市纸俭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌南窗,老刑警劉巖揍很,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異万伤,居然都是意外死亡窒悔,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進(jìn)店門敌买,熙熙樓的掌柜王于貴愁眉苦臉地迎上來简珠,“玉大人,你說我怎么就攤上這事虹钮×郑” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵芙粱,是天一觀的道長祭玉。 經(jīng)常有香客問我,道長春畔,這世上最難降的妖魔是什么脱货? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮律姨,結(jié)果婚禮上振峻,老公的妹妹穿的比我還像新娘。我一直安慰自己择份,他們只是感情好铺韧,可當(dāng)我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著缓淹,像睡著了一般哈打。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上讯壶,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天料仗,我揣著相機(jī)與錄音,去河邊找鬼伏蚊。 笑死立轧,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播氛改,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼帐萎,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了胜卤?” 一聲冷哼從身側(cè)響起疆导,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎葛躏,沒想到半個月后澈段,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡舰攒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年败富,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片摩窃。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡兽叮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出猾愿,到底是詐尸還是另有隱情充择,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布匪蟀,位于F島的核電站椎麦,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏材彪。R本人自食惡果不足惜观挎,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望段化。 院中可真熱鬧嘁捷,春花似錦、人聲如沸显熏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽喘蟆。三九已至缓升,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蕴轨,已是汗流浹背港谊。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留橙弱,地道東北人歧寺。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓燥狰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親斜筐。 傳聞我的和親對象是個殘疾皇子龙致,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容