ピットガイド(四角)を避けてください:リボンタイムアウト設定は有効になりません。

製品の前のセルフテスト・フェーズでは、厄介な問題は、サービスが開始され、一定期間にわたって常にタイムアウトを見つけました。バラの長い時間のためのコードとリボンがゲートウェイタイムアウト設定は仕事、またはデフォルトの設定をしないで、そして時々、あまりにもローカル環境へのアクセスを開始することを見つけ、常に時代ですアウト。だから、私はさらに探すことにしました。

以下のような構成は以下のとおりです。

ribbon:  
    httpclient:    
        enabled: true  
    max-connections-per-host: 500  
    max-total-connections: 2000 
    connect-timeout: 60000  
    read-timeout: 60000      

いずれの場合で発見常に、タイムアウト有効になりません。手動黒疑問符の顔!

無力は、右のソースをオンにします。

パワフルなアイデアのおかげで、見つけるのに長い時間はかからなかったDefaultClientConfigImplをし、その後IClientConfig、CommonClientConfigKey、RibbonProperties、HttpClientRibbonConfiguration見つけると、他のカテゴリ。

まず、DefaultClientConfigImpl様々なロジックは、それが最も重要なのいくつかは次のとおりです。

方法は?休憩をマーク、いくつかと自由を取ります。エヘン、間違った間違った、失礼、テスト、デバッグ。

その価値法、さらに次のように入力します。

いくつかのデバッグ(&*〜<>、ほとんどいない任意のホールドバックが!!!)、これはデフォルト値ではなく500事前に設定よりも、50であることが判明しました。(二大隊の司令官は、あなたがイタリアの銃、それをfuckinの?)
まあ、一時的な穏やかな寛容。いくつかのクエストの後、少し戸口を見つけるように見えました。示されるようにCommonClientConfigKeyこれらの用語の定義は、UpperCamel配置されています。

自動変換を行うサポートしていませんか?ソースのクラウドは、パス内で検索し、スプリング・クラウド・スタータNetflixのリボン、春・クラウドNetflixのリボンを行ったいくつかのロジックが見つかりました:

パラメータ値は、ネイティブコンフィギュレーションクラスから取得し、取得したとして構成論理ネイティブリボンは、以下:

ConfigurationManagerは地獄、コードを見て何通り:

とにかく何、どんなには、システム構成を取得することです。コンフィギュレーションの取得が完了した後、次いでシステム変数に提供されます。

看到这里,应该就明白了,这货竟然使用的是自己CommonClientConfigKey配置类的原始UpperCamel格式的property name,WTF?改改试试吧:

ribbon:  
    httpclient:      
        enabled: true  
    MaxConnectionsPerHost: 500  
    MaxTotalConnections: 2000  
    ConnectTimeout: 60000  
    ReadTimeout: 60000    

再次调试(这次忍住了,哈哈哈哈!)

大功告成!!!另外,稍微解释一下ribbon的配置格式,借用ribbon原生默认配置类DefaultClientConfigImpl的注释,说的很明白:

--------------------------------------------------------------------------------------    END    ---------------------------------------------------------------------------------

 

本文系【银河架构师】原创,如需转载请在文章明显处注明作者及出处。

微信搜索【银河架构师】,发现更多精彩内容。

image.png

发布了29 篇原创文章 · 获赞 1 · 访问量 2253

おすすめ

転載: blog.csdn.net/liuminglei1987/article/details/103676945