故障分類の原因と予防と対応策の分析

すべての障害は、貴重な学習機会です。

引用

失敗は剣をぶら下げ開発者の頭です。ことわざ、:.ませ祚無ダイ言っていませんが、開発者はそれに間に合うように、ダイを防止するために、どのように何祚の祚しないことは困難ですか。?

自分自身が自分自身を知っている知っています。失敗を回避するには、相対的な故障を完全に理解している必要があります。

障害は、一般的に特定の負の影響を引き起こすより集中問題が発生する期間を指します。ビジネス上の問題の少量はめったにそれ以外の場合は、重要な問題の進捗状況に対処するために施行され、限られた資源の非合理的な分布を引き起こし、真の失敗を混同し、障害の表面ではない影響を与えません。そのため、非集中型の散発的な問題は、失敗ではないかもしれません小さな確率事象が潜在的なバグをトリガすることができ、それに対処する必要があるが、いくつかの抵抗で失敗など。

失敗を回避するには、まず、障害が発生した理由を理解する必要があります。以下に分類してまとめ、失敗以上の分析から来ています。

誤動作の原因

マルチ起源

障害とより多くの起源は、失敗の最も一般的な原因を指します。あなたが失敗の確率のほとんどを防ぐことができ、状況にこれらのタイプに注意してください。

エラーコアプロセス

コアプロセスは、全体のプロセスで、その結果、間違って行くリンクは、全体のプロセスや故障のビジネスシナリオの一部は、集中的な問題につながる、失敗します。これは通常、コードの一部のメインフローに追加されますが、コードは、アカウントにシーンや貧困、影響を与える全体の堅牢性を取ることはありません。

予防措置:

  1. 変化点を評価します!非常に重要!でも一つだけのラインならば、限り、メインフローとして、それは慎重にその影響力の球を評価しなければなりません。コードは、メインフローに追加された警告であることを、長いです。
  2. 必要なのtry-catchを増やします。追加されたコードのみを局所作用した場合、不測の事態がプロセス全体に影響を与える異常防ぐ扱い、必要なのtry-catchを追加することができます。
  3. 最高のは、簡単に一般的な方法や構成の全体的な影響を変更(側面衝突と非常に大規模な顔に戻っ)はありません;だけでなく、可能な新しい修正。
  4. テストケースのコアプロセスの包括的なカバレッジは、各リリースは復帰によって必要とされます。
  5. スイッチを高めるために、変更のリスク。エラーしたら、すぐに変更を閉じます。

実際のケース:

堅牢性の欠如

サービスの実現後、堅牢性、サービスは、スムーズに最初のハードルのエラーと例外への正しい応答を実行できるようにすることです、そしてそれは、必要なコードの成果資格プログラマーの一つです。

貧しい堅牢性は、簡単に地元の呼び出しは、全体的なプロセスや表示に影響を与える障害が発生し、原因地元詳細、ダーティデータに予期しないにつながることができます。

予防措置:

  1. より良いより、エラーと例外を考えます。
  2. うまく利用のtry-catch護衛を行います。
  3. 空の文字列、空のリスト代替ヌルを使用してください。
  4. テストカバレッジ異常な枝。

実際のケース:

  • NULL値が原因となるために注文のリスト全体を読み込むことができませんでした。
  • 原因マイナー依存エラーに全体の詳細ページがロードに失敗した原因となります。
  • フック問題のコードではなく、テスト、プロセスは直接タスクをひざまずいて、異常な支店コードを行って、繰り返し再起動してひざまずきます。

瞬間的な高流れ

瞬間的な高の流れは、主要なキラーの故障によって引き起こされます。瞬時流量、接続数はサービス全体の安定性に直接影響を果たしたマシンのリソース、CPUやメモリフルまたはカードが急騰し、不足につながります。

メッセージ処理アプリケーションでは、高流量は、瞬時メッセージ処理の遅延を引き起こす可能性があり、トラフィックフローは、状態を遅れ、以下のリンクに影響を与え、非メッセージングアプリケーションが閉塞タスク・インターフェースが遅い応答または無応答になりますため。

予防措置:

  1. クラスター環境:各マシンまたは地域クラスターの負荷分散を確実にします。
  2. スタンドアロン環境:目標電流制限、制限速度と数を制限します。
  3. 圧力測定運動。圧力容器の測定後。

実際のケース:

極端な場合には

極端な場合には、問題外のシステムを引き起こし、システムの限界に部分的な課題のいくつかの非常にまれなイベントの発生を指します。

例えば、順番に製品タイプの数は通常10以下であるが、単一の商人又は買い手ブラシ、50個の以上のアイテムを含む注文の多数で、その結果、その後集中輸出は、タイムアウトまたはインターフェイス応答を引き起こし、アプリケーションがFullGC深刻引き起こしますタスクは継続できません。

予防措置:

  1. 極端な状況、および影響を考えます。
  2. 極端なケースのテストとデザインの先駆け。

実際のケース:

従属故障

依存性は、次のような状況のために失敗することがあります。

  1. これは、サービスを依存し、構成や変数が存在しないか、適切なバージョンではありません、アプリケーションを引き起こす起動に失敗した、またはサービスが開始した後、正常に動作することはできません。
  2. 不安定なエラーの多数のサービスベース、それに依存する高周波アプリケーションにつながる場合アバランシェ効果につながる、また、エラーの数が多いです。

予防措置:

  1. 複数のシステムまたは解放多くの詳細を含むプロジェクトは、あなたは、ドキュメント、慎重に指定された設定を公開書き、アプリケーション依存の正しさを保証するために解放する必要がある場合。特定のリリースでは、我々は厳密にチェックポイントと指定されたリリースオーダーのドキュメントのリストを公開施行する必要があります。APIのバージョン、ジャーバージョン、依存サービス、構成アイテム、DBフィールド:依存関係を確認してください。
  2. 自動降格。タイムアウトの厳密な制御、単離または不要弱い依存性を除去します。

キャピタルロス

顧客資産は、私的財産権に非常に敏感です。キャピタルロスは、最も故障レベル一般的に、発生した場合。

キャピタルロスは、一般的に発生:直接金融損失:処理システムは、冪等メッセージが処理中に得られた複数回繰り返されるとは見なされない;、状態フィールドベースのサービス側に係る基地リターン・ステータスフィールドのサービス側を2当事者ビジネス金融サービス処理。正しくない、少ないオペレータまたはオペレータになります。3.誘発キャピタル・ロス、いくつかのショーの情報は、そのようなショーのために出荷される出荷注文などの行動を、回復するのは難しいのいくつかの種類を作るためにユーザーを誘導。

予防措置:ファンド事業1.直接取引は、処理を冪等に注意を払う。2つのファンドビジネスプロセス状態に依存。?情報を誘導する3.撤廃。

古いものと新しい移行エラー

改造する場合の技術的な最適化で発生しました。たとえば、新しいページを移行する移行モデル新モデル、新技術スタックの古い技術スタックの移行、古いページの古いフィールド。変換を行い、焦点は、多くの場合、新しいサービスをテストすることが、簡単に古いテストに互換性のあるサービスを見落とすことです。

減らすか、完全に間違っている:古いものと新しい移行のトレードオフがあります。より徹底した移行、エラーや障害が発生する確率は大きくなりますが、新しいシステムは、より爽やかになります。古いシステムに何らかの妥協を作るために、あなたは、エラーの数と失敗の確率を減らすことができますが、新しいシステムでは、行の前に古いシステムの負担がかかります、フォローアップそれでもうまくいきません。

予防措置:

  1. シャント。シャントは、考慮すべき点がない場合でも、また、影響を最小限に抑えただろう、新しいサービスラインの後面への影響が徐々に拡大していることを確認することができます。
  2. 完全にテストされ、事前評価良いテストケースと厳格に実施。
  3. 新しいインターフェイス構造と最高の合意された戻り値と一致した値に移行する古いインターフェース。変更したい場合は、慎重に良い評価する必要があります。

古いコード

確かに、古いコードは、スタートアップ企業に向けて大きな貢献をしてきています。時間がより多くのビジネスのボリューム、上に行くほどしかし、複雑さも急速に突然地震がびっくりさせ、古いコードの単純なプロセスの多くは徐々に「時限爆弾」となって、増加している、人々は振ります。

予防措置:定期的なグルーミングときれい。

実際のケース:

データ損失

データセキュリティはますます、企業の重要な焦点となっています。SaaS型のため、テナントが見て操作する不正なデータではないことができ、すべてのデータとは、互いに独立して動作していることを確認する必要があります。

予防措置:機密データの1脱感作; 2.避けカバーする; 3.アクセス制御; 4. XSSのセキュリティ問題。

実際のケース:

パフォーマンスの問題

低性能、短時間の衝撃のビジネスの大容量の面で低いスループットは、誤動作を引き起こす、遅延詰まりする傾向があります。

予防措置:1つのコールボリュームの交換サイクル単コール; 2 O(nlogn)アルゴリズム; 3.マルチプロセス又はマルチスレッド; 4.不要アクセスおよびサービスの依存関係を減らします。

その他の理由

機器とネットワーク

インフラ機器やネットワークに問題がある場合は、影響は巨大で、一番下にあるインターネット、に属します。場合エージング装置のダウンタイムまたはハードウェアの故障、または突然の断線やネットワークジッタだけでなく、容易に大規模な故障につながります。

予防措置:

  1. タイムリーな検査や古い機器の交換。はるかに費用効果的であることが、時間、労力とお金の補償を過ごすためよりも、問題のダウンタイム、古い機器を交換するより多くのお金を費やしています。
  2. 予備リンクとエンジンルーム。
  3. 単一障害点を避けてください。

ダーティデータ

全体的なダーティデータ関連付け制約がないために、ダーティデータに適用読み出され、エラーが発生しやすい、アプリケーションが論理一連の処理を持っている場合、データは、より汚れた、より深刻なトラブルを発生させることができます。

予防措置:

  1. ダーティデータの検出と除去。
  2. オンラインテストデータを作成することは避けてください。


不適切な操作

不適切な操作主に以下の状況:

  1. エラーが発生した二つの動作の同時実行、。
  2. コード不適切なマージ紛争解決;
  3. 不規則な操作、誤動作や制御処理開始系の損失。

予防措置:

  1. コードは、紛争解決をマージし、両側が確認されました。
  2. 同時に、システム構成の変更、同時実行を避けるために調整する必要があります。
  3. 低ピーク営業期間でのデータ復旧作業。
  4. データ復旧プログラムは、新しい問題につながらないことを確実にするために、確認してください。

トラブルシューティング

障害が発生した場合、最初の反応は、即時調査の理由ではなく、直ちに停止、影響を最小限にしました。

  • 私たちは、原因がリリースされたかを決定することができた場合は、すぐにリリースをロールバックします。ロールバックのリリース後、その後、慎重に捜査の理由。
  • タイムリーな同期の進行状況、利害関係者に通知するように。
  • 小さな問題が大きな失敗になる防ぐために、迅速な同期メカニズムを確立します。

故障の可能性を低減するために、だけでなく、故障の不測の事態は事前に計画しています。

  • 下地櫛依存性、強度依存性決定影響表面の強度は、使用不能に起因しました。
  • 強い依存性が利用できない場合は、プログラムを迅速に復元することができ、影響が最小限に抑えられました。
  • 障害エクササイズ。大流量シミュレーション、極端な条件や、障害発生、緊急時計画の検出は、効果と急速な回復です。

概要

失敗は、すべての開発者が消極的で何かあっても、企業の経験です。ただし、過失、未知の、真実、プラス思考の異なる形で関わるすべての障害は、実際には、非常に貴重な学習の機会でした。失敗は、関連付けられた物事の本質を理解するために、より詳細な状況を到着する人たちを案内します。フェイス故障、予防や失敗を避けるため、真の知識に失敗から学ぶ、より良い姿勢。

失敗を防ぐには:

  • 最初は慎重です。心の数、衝突面の正確な評価は、古い古いビジネス機能への復帰を検討考慮に入れて、リターンの一貫性を確保するために、ダブルチェックの依存性は、標準化された実行を合意しました。
  • 堅牢、高容量かつ極端な状況の設計と実装を検討するために、低いパフォーマンスを避けます。
  • セキュリティ上の問題や資本の損失を回避するために、ターゲット。
  • 厳格な監視アラームの設定、芽の段階で問題を消さ。

おすすめ

転載: www.cnblogs.com/lovesqcc/p/11392064.html