国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ES兩個小時沒連接竟然會出現(xiàn)bug,為此老板給我夾了個雞腿。。。

這篇具有很好參考價值的文章主要介紹了ES兩個小時沒連接竟然會出現(xiàn)bug,為此老板給我夾了個雞腿。。。。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言

前段時間上線了個項目,測試每天早上來摸魚之前會點一點,發(fā)現(xiàn)第一次點會報錯,然后一天都沒問題,剛開始沒在意,后來每天上班來摸魚前點第一次都會出錯,發(fā)現(xiàn)真的摸到魚了,然后就給我提了個bug,說明天早上第一次留給你,你復現(xiàn)一下看看,然后就有了這篇文章了。

問題現(xiàn)象

ES隔一段時間不操作后,再請求es就會報錯Connection reset by peer,之后連續(xù)幾次操作都正常,而且還是必現(xiàn)的,報錯信息如下:

 

css

復制代碼

org.springframework.dao.DataAccessResourceFailureException: Connection reset by peer; nested exception is java.lang.RuntimeException: Connection reset by peer at org.springframework.data.elasticsearch.core.ElasticsearchExceptionTranslator.translateExceptionIfPossible(ElasticsearchExceptionTranslator.java:76) at org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate.translateException(ElasticsearchRestTemplate.java:378) ...... Caused by: java.io.IOException: Connection reset by peer at org.elasticsearch.client.RestClient.extractAndWrapCause(RestClient.java:828) at org.elasticsearch.client.RestClient.performRequest(RestClient.java:248) at org.elasticsearch.client.RestClient.performRequest(RestClient.java:235) at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:1514) ...... Caused by: java.io.IOException: Connection reset by peer at sun.nio.ch.FileDispatcherImpl.read0(Native Method) at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39) at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223) ......

問題定位

Caused by: Connection reset by peer根據(jù)日志可以知道,socket 連接被中斷,連接中斷的原因有很多,比如:

  • 服務端或者客戶端異常。
  • 客戶端連接超時中斷。

查看日志,這段時間內也沒啥異常信息,服務端也沒異常重啟,也沒出現(xiàn)流量陡量的情況。想到之前在mysql遇到過的問題,mysql的連接如果超過8個小時(默認的時間)不連接,服務端為了節(jié)約資源,會主動把長時間沒連接的客戶端給中斷掉,按照這個思路去排查問題,果然發(fā)現(xiàn)原因如出一轍。導致這個問題的原因有兩個:

  1. 客戶端采用長連接的方式連接服務端。
  2. 長時間不連ES,服務端會關閉連接。
1. 客戶端采用長連接的方式連接服務端, 一直持有連接。

ES High Level Rest Client客戶端和服務端的連接采用的是長連接,查閱源碼發(fā)現(xiàn)客戶端創(chuàng)建了client連接池,每個client持有一個http連接,并且開啟http的keep-alive策略復用連接, 策略默認是 -1 ,也就是不過期。

ES兩個小時沒連接竟然會出現(xiàn)bug,為此老板給我夾了個雞腿。。。,elasticsearch,bug

2. 長時間不連ES,服務端會關閉連接。

服務器會有TCP的Keepalive 經(jīng)過一段時間如果沒有操作就會自動斷開連接功能,而ES默認就是取服務器的時長配置linux查看超時時間默認為兩小時:

 

csharp

復制代碼

# 查看超時時間(單位秒) [root@VM ~]# cat /proc/sys/net/ipv4/tcp_keepalive_time 7200

也就是說如果客戶端超過兩個小時沒有連接服務端,服務端會清除掉連接。

解決方法

修改客戶端的keepalive時間,以單機的ES為例,代碼如下:

 

ini

復制代碼

@Override public RestHighLevelClient elasticsearchClient() { ? ?List<HttpHost> httpHostsList = new ArrayList<>(); ? ?httpHostsList.add(new HttpHost(uris, Integer.parseInt(port))); ? ?HttpHost[] httpHostsArray = new HttpHost[httpHostsList.size()]; ? ?httpHostsArray = httpHostsList.toArray(httpHostsArray); ? ?RestClientBuilder builder = RestClient.builder(httpHostsArray); ? ?builder.setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder.setKeepAliveStrategy((httpResponse, httpContext) -> 1000 * 60)); ? ?return new RestHighLevelClient(builder); }

application.yaml

 

yaml

復制代碼

spring: elasticsearch: ? rest: ? ? uris: ip ? ? port: port

以上代碼是基于單機版的es配置的,如果你們的是集群請自行百度設置,重點代碼是設置setKeepAliveStrategy 這個方法里面。

經(jīng)過這個設置后,線上就沒有出現(xiàn)過類似的問題了。

最后

其實這個問題不僅僅是ES會有的,mysql, CK, 還有其他同類的C/S架構的都會存在這樣的問題,這是一類問題,由于服務端資源優(yōu)化,會回收一些連接,就會導致這個問題,知道這個問題后,我們可以舉一反三,遇到同樣的問題可以快速定位,希望這個問題能對大家有用,最后感謝大家看到這里。。。

作者:TodoCoder
鏈接:https://juejin.cn/post/7113706089350168606
來源:稀土掘金
著作權歸作者所有。商業(yè)轉載請聯(lián)系作者獲得授權,非商業(yè)轉載請注明出處。文章來源地址http://www.zghlxwxcb.cn/news/detail-780292.html

到了這里,關于ES兩個小時沒連接竟然會出現(xiàn)bug,為此老板給我夾了個雞腿。。。的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Java【算法 05】通過時間獲取8位驗證碼(每兩個小時生成一個)源碼分享

    要求是很簡單的,每個驗證碼的有效時間是 2小時 ,這個并不是收到驗證碼開始計時的,而是每個兩小時的時間段使用的是相同的驗證碼。 將 2個小時處理為相同的值 : 很簡單的算法分享。優(yōu)點: 不需要將生成的驗證碼緩存。 時間入?yún)ⅲ軌蛑貜瞳@取相同的值。

    2024年02月05日
    瀏覽(22)
  • 數(shù)據(jù)存入es 時間差了8個小時

    數(shù)據(jù)存入es 時間差了8個小時

    ?Mysql ?這種現(xiàn)象其實是正常的,因為es默認存儲時間的格式是UTC時間,我們一般用的是UTC+8 存入Es后應該是在原來的基礎上(UTC+8)-8=UTC 存入到Es后就變成我們看到的樣子了 首先知道幾個時間名詞: (1)GMT:格林威治標準時間 (2)UTC:世界協(xié)調時間 (3)DST:夏日節(jié)約時間 (

    2024年02月02日
    瀏覽(18)
  • Java 21中的兩個值得關注的Bug修復

    在Java 21中,除了推出很多新特性之外,一些Bug修復,也需要注意一下。因為這些改變可能在升級的時候,造成影響。 比如:對于 Double.String(1e23) : 在Java 19后,輸出內容為: 1.0E23 在Java 18中,輸出內容為: 9.999999999999999E22 歡迎關注,持續(xù)更新的Java新特性專欄 IdentityHashMap 是

    2024年02月05日
    瀏覽(17)
  • 請領取你的免費云電腦:微軟Windows實驗虛擬機,每天可以免費使用兩個小時,上Google搜資料很方便

    請領取你的免費云電腦:微軟Windows實驗虛擬機,每天可以免費使用兩個小時,上Google搜資料很方便

    對于沒有國外VPS的我,又需要上Google查學習資料的我來說,簡直是天上掉餡餅,不用白不用,下面簡單描述說明一下免費申請使用微軟(Microsoft)學習實驗虛擬機的流程,?? 微軟在在財務和運營應用中實施常見集成功能,提供了辦公軟件集成教學的虛擬機,我們可以利用此Wi

    2024年02月05日
    瀏覽(22)
  • SpringBoot解決mysql 連接8小時問題

    問題: 服務連接mysql數(shù)據(jù)庫,8小時沒有數(shù)據(jù)庫的操作時候,數(shù)據(jù)庫會主動斷開連接釋放資源 解決辦法總共 4種方法 如果你有權限訪問 MySQL 服務器的配置,你也可以調整 MySQL 的連接超時時間。修改 wait_timeout 和 interactive_timeout 參數(shù),將它們設置為一個更大的值,以延長連接的

    2024年02月12日
    瀏覽(15)
  • bug--兩個表格,數(shù)據(jù)來自于同一個抽屜表格,現(xiàn)在讓兩個表格的數(shù)據(jù) 不能一樣--處理checked 和 disabled

    bug--兩個表格,數(shù)據(jù)來自于同一個抽屜表格,現(xiàn)在讓兩個表格的數(shù)據(jù) 不能一樣--處理checked 和 disabled

    ? 1、在?A表、B表 數(shù)據(jù)展示的組件里(根源),給新增觸發(fā)的事件里,添加不同的type值,來區(qū)分是A表 還是B表 2、要把區(qū)分的 type 傳給 addProSetRelation這個事件(找到哪里),把type傳給 使用這個事件的方法(這里是因為 他是根據(jù)這個方法 把事件一級一級傳下去的) 3、找到

    2024年02月12日
    瀏覽(30)
  • php array_diff 比較兩個數(shù)組bug避坑 深入了解

    php array_diff 比較兩個數(shù)組bug避坑 深入了解

    今天實用array_diff出現(xiàn)的異常問題,預想的結果應該是返回 \\\"integral_initiate\\\"=\\\"0\\\",實際沒有 先看測試代碼: 沒有返回差異,糾結了好一陣子又查閱了文檔看到這一句話才醒悟? 我們簡化一下數(shù)組來看,通過簡化數(shù)組發(fā)現(xiàn)只要兩個數(shù)組中間都帶有0的值就不會正常效驗 解決方案就

    2024年01月20日
    瀏覽(26)
  • 重大問題,Windows11出現(xiàn)重大BUG

    重大問題,Windows11出現(xiàn)重大BUG

    重大問題,Windows11出現(xiàn)重大BUG 這種Windows11操作系統(tǒng)出現(xiàn)BUG已經(jīng)可以說是非常常見的,但是,今天我將代表所有微軟用戶,解決一個關于UI設計非常不舒服的功能 最近,我在用Edge瀏覽器看視頻的時候,突然想打開截圖工具,我知道,截圖工具可以在開始菜單中打開,于是我打

    2024年02月02日
    瀏覽(22)
  • 記Flask-Migrate遷移數(shù)據(jù)庫失敗的兩個Bug——詳解循環(huán)導入問題

    記Flask-Migrate遷移數(shù)據(jù)庫失敗的兩個Bug——詳解循環(huán)導入問題

    1、找不到數(shù)據(jù)庫:Unknown database ‘***’ 若還沒有創(chuàng)建數(shù)據(jù)庫,該遷移工具不會自動創(chuàng)建。你可以使用SQL命令手動創(chuàng)建一個數(shù)據(jù)庫: 2、遷移后沒有效果:No changes in schema detected. 我的情況長話短說,就是創(chuàng)建的數(shù)據(jù)模型類沒有注冊到程序實例 app ,解決方案是使用工廠函數(shù)。細

    2024年02月11日
    瀏覽(23)
  • el-table魔改樣式出現(xiàn)BUG,表格內容區(qū)域出現(xiàn)滾動條

    el-table魔改樣式出現(xiàn)BUG,表格內容區(qū)域出現(xiàn)滾動條

    代碼排查后發(fā)現(xiàn)時我設置了 fixed:“xxx” 屬性就會導致滾動條出現(xiàn)的問題,不設置則無。 設置 fixed:“xxx” 后elementui就會多渲染幾個css。重點看bottom:-1px,這是官方設置的值。我發(fā)現(xiàn)重置為bottom:-0px,問題就能解決了,下面直接貼解決代碼。 把樣式放在全局CSS中 還有更好的方

    2024年02月02日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包