一度にkubernetesが導入したビジネス・アクセス量が大きい場合にアクセス・タイムアウトが発生することを覚えます.
問題の表現
アクセスの同時性が比較的大きい場合、要求は頻繁にタイムアウトする.
問題の原因
プログラム内部実装ではログサーバに頻繁にアクセスするが、当時ログサーバは
全体の過程の中で、
最終確認の問題は以下の通りです(ここでは詳しく調べて確認を継続する必要があります)
解決策
アクセスの同時性が比較的大きい場合、要求は頻繁にタイムアウトする.
問題の原因
プログラム内部実装ではログサーバに頻繁にアクセスするが、当時ログサーバは
kubernetes
に配備されていなかったため、CoreDNS
hosts
プラグインを用いてカスタムドメイン名解析を行うことで実現する.問題が発生すると、CoreDNS
のCPUは10-30%
の間で変動する.CPUが満タンになっていないため、ここに問題があるのではないかと疑うが、今回のボトルネックにはなっていない.他の問題を調べた後、最後にここの問題を調べた.最終的な確認は、ここで発生した性能のボトルネックの問題であり、午後の時間を無駄にした.全体の過程の中で、
CoreDNS
の監視カメラはすべて正常であることを示して、ただ検索回数は少し多くて、監視カメラは1.8 kppsぐらいある.そのほとんどがキャッシュにヒットしているので、プレッシャーは大きくないかもしれません.しかし、その後、どうしても原因が見つからず、ログサーバ解析方式をhosts
プラグインからDeployment
構成hostAliases
に変更した後、問題は瞬時に解決する.最終確認の問題は以下の通りです(ここでは詳しく調べて確認を継続する必要があります)
CoreDNS
大量のクエリの場合、遅いクエリが存在する可能性がある場合、Kubernetes
はPod
に6つの探索ドメインをデフォルトで追加し、一度の外部DNSクエリが少なくとも6回のクエリを必要とし、正確な結果を得ることができ、DNSアクセス量が大きい.解決策
Deployment
を用いる構成hostAliases
を、従来のCoreDNS
を置き換えるDNSマッピングを行う.