01.何の話
人々は他の人が私のロバ、カート漢ルックバック、またはいくつかのより悪いに乗って、道路が不完全であることを言います!
ドンキーあなたが私にオーバー乗った、私も目を見てみるかもしれません。見えた背中は、上のより低い比率よりも、漢をカート。
戻る過去を総括するために、私は実際にはかなり破壊牛を感じ、ピットを記入しました。
今日では、あなたの経験の洗濯物リストを送信したい何の世間話、無偏差のテーマは、あなたは再入国ピットを防ぎません。
クルミを食べる、タイトな良い助けを座って、我々は始まりました。
02.チャット離れ
体験:CPU使用率が100%、長期的です
症状:
マルチユーザーの同時実行、CPU使用率、長期的に100%、DUMPスレッド情報は、HashMapの動作に関連する高いCPU使用率のスレッドを発見しました。
分析:
-
同時コンテナの場合の非スレッドセーフを保証するものではありません選択し、HashMapの非スレッドセーフ。
-
マルチスレッドの場合のHashMap、拡張が容易に100%のCPU使用率が得られ、無限ループにつながる可能性があります。
ソリューション:
-
同時シナリオでは、使用するハッシュマップ「を避けるために、
-
同時シナリオでは、私たちが代わりにHashMapを同期またはロックのConcurrentHashMapを使用して、HashMapを使用する必要があります。
経験2:かなり遅いデータベースアクセス
症状:
データベースは、より頻繁に遅い応答を要求します。
分析:
前提の下で、インデックス、データベースに割り当てられた接続の数が少ないと、バッファの不足に含まれています。
ソリューション:
-
アプリケーションでは、クエリの結果を再利用できるかどうかを検討するために、データベースに接続する必要があります。
-
結果の適時は高くないと、要求への複数の呼び出しを必要とするために、キャッシュは、多くの場合、リソースのデータベース保存を行うことができますが、また、大幅にアプリケーション自体の効率を向上させることができます。
経験3:システム接続の膨大な数
症状:
巨人のシステム接続
分析:
このモデルの場合は、しばしば大規模な同時に適していない通信TCP / IP + BIOのTomcatコンテナのデフォルトの手段、BIOパターン生成ソケット一般的に遅いソケット接続が確立され、それが接続の限られた数をサポートすることができ、あまりにも多くの地域資源の消費します。
一般的にソケットは、ハンドルへのスレッドの使用を受け入れる1つの接続1つのスレッドにかかわらず、実際の接続データ要求があるかどうかの、排他的なAスレッドを必要とする取得した後に撮影しました。
多くのサーバ側、我々は多数の接続をサポートする必要があるが、同時にこれらの接続は、リクエストピークを送信する場合、一般的にNIOモードを交換することをお勧めしません。
ソリューション:
、TCP / IP + NIOに置き換えNIOモデルが構築され、それが呼び出しに便利である、唯一のコンフィギュレーション・ファイルのconf / server.xmlファイルを変更する必要があり、に変更したコンフィギュレーションファイルプロトコルorg.apache.coyote.http11.Http11NioProtocol、あなたが再起動することができます効果。
以下の構成が修復されている、デフォルトのプロトコルは HTTP / 1.1であります
<コネクタポート= "8080" プロトコル= "org.apache.coyote.http11.Http11NioProtocol" のConnectionTimeout = "20000" にredirectPort = "8443" maxThreadsの= "500" minSpareThreads = "20" acceptCountを= "100" disableUploadTimeout = "true"に enableLookups = "false"に はURIEncoding = "UTF-8" />
経験4:問題のバージョンを使用してHttpClientを
症状:
必ずしもすべての要求が正しいを返すことができ、リモートサーバーが発生する可能性がエラーを返しました。(417)未知の
分析:
バージョン4.0.3を使用しているシステム、リリース時期待:デフォルトでオンに100-続け、クライアントとサーバーの通信プロセスごとに、である、各Xianxiangサーバーは、サーバーが要求を処理できるかどうかを確認するための要求を送信します一般的に、対話型の特殊ファイルで使用されているか、時々TIME_WAIT多くを作り、データのいくつかの比較的大きな金額をアップロードします。
この問題は、この機能はデフォルトではオフになって、HttpClientを4.1のリリースを解決しています。
ソリューション:
4.1以降にアップグレードし、この機能はデフォルトではオフになっています。
経験5:使用のlog4jログパフォーマンスの問題
症状:
ログIOは、システムリソースと高いCPU使用率の多くを取る、TPSは、ホットメソッド低く、
org.apache.log4j.Category.callAppenders
ch.qos.logback.core.OutputStreamAppender.subAppend
等与日志相关的方法。
分析:
過度のログ、IOは、頻繁。システムパフォーマンスのログへの影響は、主に次の側面に反映され
-
の使用を避けるためにM /方法が非常に遅いログ出力オプション、いくつかのオプションが遅い、例えばC /クラス、F /ファイル、L /ライン、L、、。
-
ダブルログ出力は、いくつかのビジネスアプリケーションは通常、コンソールと同じ文書に二回出力された別のファイルやログ情報を同時に記録します。
-
高速ファイルシステムの速度よりコンソール出力するログ出力先、出力は遅いです。
-
ログの出力形式は、同じ性能が高速出力フォーマット出力レイアウトより単純な出力レイアウト(SimpleLayout)(PatternLayoutは)として、影響を受けるありません。あなたは、出力ログ情報の出力レイアウトの簡単な形式を試してみる必要があるかもしれません。
-
複数のコンテンツログレベルログ出力を下げ、システムは、システムに大きな影響であることができます。
-
別のログ出力モード、そしてそれはまた、出力同期性能より非同期出力以降を使用して、行のシステムに影響を与えることができます。
-
それは、イベントログの内容をログ出力を受信するたびに印刷性能が時にログの内容を特定のサイズに到達するよりも低くなって印刷します。
ソリューション:
-
非常に遅いこれらのオプションを使用しないよう、ログ出力内容、ログの出力形式の合理的なセットを合理化。
-
ログバッファ、およびバッファサイズを設定します。
-
(例えば、ログ出力の複数の部分の場合にlog4jの例では、次のように)トラフィックログのみファイルシステムに出力され、唯一の出力:
ケースを提出するための2つのログを# Log4j.rootLogger = DEBUG、STDOUT、システム #はSTDOUTデバッグおよび2つの宛先システムへ出力ログ情報のレベルを示し、構成は、その2つのログ出力となり、このライン Log4j.rootLoggerデバッグ、システムを=; #ログ出力は、先れるシステムを示す図です。
経験6:log4jのより優れたパフォーマンスをlogback
使用logbackとコンポーネントのlog4jログログ印刷。
デバッグログレベルは、システムは、平均比TPSときのlog4j = 1.31:logbackを1
ログレベル情報は、システム平均比TPSはlogback:のlog4j = 1.03:1
速度向上させるシステム容量より実験logback log4jの中より明らかの処理速度の利点を印刷するよりときに大きな出力ログ、logbackのlog4jの方式を使用してログログ成分3%〜30%を。
経験セブン:私は洗濯物リストを共有している、とあなたがたは賢明でないこれ以上消化しないように、その後の株式バスケットは、保持することができます。(宛先とは延期しました)
03. チャットバイ
あなたはまた、インタビューの友人(笑)中に自慢する権利ことができますしながら、少しずつではR&Dでの過去の経験は、あなたを与えるために、あなたは、再入国ピットを防ぎます。