製品の前のセルフテスト・フェーズでは、厄介な問題は、サービスが開始され、一定期間にわたって常にタイムアウトを見つけました。バラの長い時間のためのコードとリボンがゲートウェイタイムアウト設定は仕事、またはデフォルトの設定をしないで、そして時々、あまりにもローカル環境へのアクセスを開始することを見つけ、常に時代ですアウト。だから、私はさらに探すことにしました。
以下のような構成は以下のとおりです。
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 ---------------------------------------------------------------------------------
本文系【银河架构师】原创,如需转载请在文章明显处注明作者及出处。
微信搜索【银河架构师】,发现更多精彩内容。