最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一次Docker中Redis連接暴增的問(wèn)題排查實(shí)戰(zhàn)記錄

 更新時(shí)間:2020年06月08日 08:42:42   作者:Cfan1236  
這篇文章主要給大家介紹了一次Docker中Redis連接暴增的問(wèn)題排查的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

周六生產(chǎn)服務(wù)器出現(xiàn)redis服務(wù)器不可用狀態(tài),錯(cuò)誤信息為:

狀態(tài)不可用,等待后臺(tái)檢查程序恢復(fù)方可使用。Unexpected end of stream; expected type 'Status'

如下圖所示,下圖6300就是我們r(jià)edis服務(wù)器運(yùn)行的端口。

頭一次碰到此類問(wèn)題,心想難道是redis掛掉了,隨即通過(guò)telnet ip+端口。發(fā)現(xiàn)運(yùn)行正常,然后就想著進(jìn)入redis看下目前連接情況。一看發(fā)現(xiàn)竟然高達(dá)1903條這么多。

然后想著應(yīng)該是代碼創(chuàng)建redis連接過(guò)多導(dǎo)致的,查看代碼。

發(fā)現(xiàn)redis創(chuàng)建只有這一個(gè)地方有,這里也是服務(wù)注冊(cè)時(shí)才執(zhí)行。也就是應(yīng)用程序啟動(dòng)時(shí)才被執(zhí)行一次。然后整個(gè)項(xiàng)目查找,沒(méi)有其他地方再有調(diào)用redis初始化。

心有不甘,難道是每次在redis讀寫數(shù)據(jù)時(shí)都會(huì)創(chuàng)建連接嗎?會(huì)和讀寫頻繁有關(guān)系嗎?總感覺(jué)不會(huì)啊,隨即創(chuàng)建測(cè)試代碼進(jìn)行測(cè)試一番。

在本地搭建了一個(gè)redis環(huán)境,測(cè)試之前先看看接數(shù)多少,目前看只有1個(gè),也就是目前的cmd連接客戶端,這個(gè)屬于正常的了。

開始測(cè)試,運(yùn)行程序。代碼是創(chuàng)建一個(gè)連接對(duì)象,并一共測(cè)試1000次寫,和1000次讀。

不管我怎么測(cè)試連接都是6個(gè),那么也就是說(shuō)我們程序最多創(chuàng)建了5個(gè)連接,當(dāng)然主要有線程池在里面。

所以基本的存儲(chǔ)讀取這塊代碼肯定是沒(méi)問(wèn)題。

但代碼這塊也沒(méi)算完全放棄排查,因?yàn)樯a(chǎn)服務(wù)器通過(guò)docker運(yùn)行著大約6個(gè)應(yīng)用程序。都是連接的同一個(gè)redis,會(huì)不會(huì)是其他應(yīng)用程序?qū)е碌模?/p>

然后就想直接通過(guò)redis 連接列表里的中隨便一個(gè)端口來(lái)查詢對(duì)應(yīng)的進(jìn)程信息就可以知道是哪些應(yīng)用程序了。

Linux 中通過(guò)查詢網(wǎng)絡(luò)端口號(hào)顯示進(jìn)程信息。

netstat -atunlp | grep 60852

首先看這端口對(duì)應(yīng)的IP,比如這里第一個(gè)是172.17.0.1。熟悉docker的同學(xué)應(yīng)該知道這個(gè)ip是docker網(wǎng)關(guān)IP。我們?nèi)萜髦械某绦蚨际峭ㄟ^(guò)這個(gè)網(wǎng)關(guān)IP來(lái)和我們宿主主機(jī)來(lái)通訊的。我們通過(guò)ifconfig就能發(fā)現(xiàn)docker這個(gè)網(wǎng)關(guān)IP,第二個(gè)172.17.0.3:6379這個(gè)一看就是redis的容器IP,

這樣一看確實(shí)無(wú)法找到具體對(duì)應(yīng)哪個(gè)容器中的程序和我們建立連接的。

有一個(gè)最笨的辦法就是挨個(gè)進(jìn)入容器里面。即docker exec –it test /bin/bash 然后查看當(dāng)前容器的網(wǎng)絡(luò)連接情況。這樣非常麻煩,并且需要安裝很多組件才能執(zhí)行一系列命令。

另外一個(gè)辦法lsof命令,如果沒(méi)有則需要安裝。我們可以通過(guò)進(jìn)程去找所有網(wǎng)絡(luò)連接情況。

比如我們剛發(fā)現(xiàn)我們的進(jìn)程主要是docker,他的pid是582251。

lsof -i |grep 582251或者 lsof -i -p 582251

結(jié)果如下圖,右邊其實(shí)出現(xiàn)了具體IP,這個(gè)IP就是docker容器具體的IP地址。

現(xiàn)在知道所有IP和端口了,我們將命令執(zhí)行結(jié)果下載下來(lái)。

首先找到自己每個(gè)容器對(duì)應(yīng)的IP。

docker inspect name |grep IPAddress //name 容器名稱或者id

找到每個(gè)ip后然后根據(jù)剛下載的所有網(wǎng)絡(luò)連接信息進(jìn)行統(tǒng)計(jì),看哪個(gè)IP連接最多,最多的一個(gè)肯定有問(wèn)題。

然后我就找到這個(gè)IP對(duì)應(yīng)的容器部署的程序,然后看redis配置。發(fā)現(xiàn)線程池設(shè)為200。

另外我通過(guò)github,發(fā)現(xiàn)CSRedisCore還有個(gè)預(yù)熱機(jī)制,也就是preheat,他默認(rèn)值就是5個(gè)預(yù)熱連接。

我們線程池設(shè)置的是200加上本身有個(gè)預(yù)熱機(jī)制5個(gè)連接,我不知道是不是會(huì)創(chuàng)建200*5=1000個(gè)。這個(gè)有時(shí)間再好好研究下源代碼,目前只是猜測(cè)。

我現(xiàn)在已經(jīng)將redis修改為poolsize=5, preheat=false。線程池5個(gè),并且關(guān)閉預(yù)熱機(jī)制。

修改我們連接配置,并重啟應(yīng)用服務(wù)器和redis服務(wù)器(為了徹底清除已建立的連接)后發(fā)現(xiàn)連接數(shù)有減少,但沒(méi)有很多。后來(lái)查詢發(fā)現(xiàn),是redis的idle空閑時(shí)長(zhǎng)太長(zhǎng),導(dǎo)致連接池維持太多連接,沒(méi)有被釋放。

我們?cè)O(shè)置下超時(shí)為30s

執(zhí)行CONFIG SET timeout 30 (單位是秒,此種方式只是臨時(shí)修改,針對(duì)當(dāng)前運(yùn)行有效。長(zhǎng)效記得修改redis配置文件)

然后再看下連接數(shù)多少,這樣一下子就減少了很多。

總結(jié):

1、 redis連接暴增,首先從自身應(yīng)用程序出發(fā)去尋找問(wèn)題,比如我這邊發(fā)現(xiàn)的連接池設(shè)置過(guò)大,加上默認(rèn)的預(yù)熱機(jī)制等。還有盡可能的看代碼層面在創(chuàng)建連接是否會(huì)被多次觸發(fā),如果有就必須要改正?,F(xiàn)在都是通過(guò)注入的方式創(chuàng)建實(shí)例,要看該地方是存在被多次調(diào)用。

2、修改redis服務(wù)器配置,比如連接空閑超時(shí)時(shí)間。包括也可也看下最大連接數(shù)多少,默認(rèn)值。

到此這篇關(guān)于Docker中Redis連接暴增的問(wèn)題排查的文章就介紹到這了,更多相關(guān)Docker中Redis連接暴增問(wèn)題排查內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • docker的鏡像存放地址在哪里

    docker的鏡像存放地址在哪里

    Docker鏡像(Image)是用于創(chuàng)建?Docker?容器的模板,下面這篇文章主要給大家介紹了關(guān)于docker的鏡像存放地址在哪里的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • docker中如何將jar包構(gòu)建成鏡像并執(zhí)行

    docker中如何將jar包構(gòu)建成鏡像并執(zhí)行

    這篇文章主要介紹了docker中如何將jar包構(gòu)建成鏡像并執(zhí)行問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Docker 安裝 MySQL(8和5.7)

    Docker 安裝 MySQL(8和5.7)

    這篇文章主要介紹了Docker 安裝 MySQL(8和5.7),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Docker中部署Redis集群與部署微服務(wù)項(xiàng)目的詳細(xì)過(guò)程

    Docker中部署Redis集群與部署微服務(wù)項(xiàng)目的詳細(xì)過(guò)程

    這篇文章主要介紹了Docker中部署Redis集群與部署微服務(wù)項(xiàng)目,主要包括使用docker部署的好處以及Docker與Kubernetes對(duì)比分析,需要的朋友可以參考下
    2022-06-06
  • 詳解docker pull下來(lái)的鏡像存儲(chǔ)在哪里

    詳解docker pull下來(lái)的鏡像存儲(chǔ)在哪里

    這篇文章主要介紹了詳解docker pull下來(lái)的鏡像存儲(chǔ)在哪里,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • docker容器中布置靜態(tài)網(wǎng)站的實(shí)現(xiàn)

    docker容器中布置靜態(tài)網(wǎng)站的實(shí)現(xiàn)

    這篇文章主要介紹了docker容器中布置靜態(tài)網(wǎng)站的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 使用Maven和遠(yuǎn)程Docker基于Dockerfile構(gòu)建SpringBoot應(yīng)用鏡像

    使用Maven和遠(yuǎn)程Docker基于Dockerfile構(gòu)建SpringBoot應(yīng)用鏡像

    本文重點(diǎn)給大家介紹使用Maven和遠(yuǎn)程Docker基于Dockerfile構(gòu)建SpringBoot應(yīng)用鏡像的相關(guān)操作,感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • Docker Runc容器生命周期詳細(xì)介紹

    Docker Runc容器生命周期詳細(xì)介紹

    這篇文章主要介紹了Docker Runc容器生命周期詳細(xì)介紹的相關(guān)資料,文章分析runc的容器生命周期的抽象、內(nèi)部實(shí)現(xiàn)以及狀態(tài)轉(zhuǎn)換圖。理解了runc的容器狀態(tài)轉(zhuǎn)換再對(duì)比理解docker client提供的容器操作命令的語(yǔ)義會(huì)更容易些
    2016-12-12
  • Docker 鏡像國(guó)內(nèi)加速的方法匯總(收藏版)

    Docker 鏡像國(guó)內(nèi)加速的方法匯總(收藏版)

    本文介紹了在國(guó)內(nèi)使用Docker時(shí)遇到的加速和優(yōu)化方法,針對(duì)國(guó)內(nèi)下載速度慢和斷線問(wèn)題,可以使用國(guó)內(nèi)可用的DockerRegistryMirrors或自建DockerRegistryMirror/Proxy,針對(duì)沒(méi)有公共鏡像庫(kù)賬號(hào)導(dǎo)致的限流問(wèn)題,可以注冊(cè)各個(gè)鏡像庫(kù)賬號(hào)并登錄,感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • Docker入門教程之本地打包docker鏡像教程

    Docker入門教程之本地打包docker鏡像教程

    Docker鏡像是一個(gè)特殊的文件系統(tǒng),既提供了運(yùn)行時(shí)所需的程序、庫(kù)和資源,還提供了相應(yīng)的配置參數(shù),只是不包含動(dòng)態(tài)數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Docker入門教程之本地打包docker鏡像的相關(guān)資料,需要的朋友可以參考下
    2023-06-06

最新評(píng)論

寿宁县| 松原市| 北宁市| 上思县| 邹城市| 张掖市| 雷波县| 自治县| 皮山县| 饶阳县| 郴州市| 城口县| 中西区| 沈阳市| 城市| 昂仁县| 馆陶县| 清水河县| 绥宁县| 南岸区| 扶余县| 甘泉县| 绍兴县| 邳州市| 慈溪市| 阳城县| 梁平县| 土默特右旗| 吕梁市| 故城县| 文登市| 锦州市| 全南县| 油尖旺区| 峡江县| 定边县| 临汾市| 合肥市| 额济纳旗| 漯河市| 洮南市|